From owner-svn-src-head@FreeBSD.ORG Thu Jun 18 14:59:46 2015 Return-Path: Delivered-To: svn-src-head@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2D122608; Thu, 18 Jun 2015 14:59:46 +0000 (UTC) (envelope-from sbruno@ignoranthack.me) Received: from mail.ignoranthack.me (ignoranthack.me [199.102.79.106]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id EA21D7D6; Thu, 18 Jun 2015 14:59:45 +0000 (UTC) (envelope-from sbruno@ignoranthack.me) Received: from [192.168.200.214] (unknown [50.136.155.142]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: sbruno@ignoranthack.me) by mail.ignoranthack.me (Postfix) with ESMTPSA id 79F42193DA3; Thu, 18 Jun 2015 14:59:44 +0000 (UTC) Message-ID: <5582DCDF.9080708@ignoranthack.me> Date: Thu, 18 Jun 2015 07:59:43 -0700 From: Sean Bruno Reply-To: sbruno@freebsd.org User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Konstantin Belousov CC: svn-src-head@freebsd.org Subject: Re: svn commit: r284535 - head/sys/kern References: <201506180204.t5I24LJm079537@svn.freebsd.org> <20150618030715.GD2080@kib.kiev.ua> In-Reply-To: <20150618030715.GD2080@kib.kiev.ua> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jun 2015 14:59:46 -0000 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 On 06/17/15 20:07, Konstantin Belousov wrote: > On Thu, Jun 18, 2015 at 02:04:21AM +0000, Sean Bruno wrote: >> Author: sbruno Date: Thu Jun 18 02:04:20 2015 New Revision: >> 284535 URL: https://svnweb.freebsd.org/changeset/base/284535 >> >> Log: This change replaces the mutex with a sx lock for the >> interpreter list to avoid the problem of holding a non-sleep lock >> during a page fault as reported by witness. It also uses atomics >> where possible to avoid having to acquire the exclusive lock. In >> addition, it consistently uses memset()/memcpy() instead of >> bzero()/bcopy(). >> >> Differential Revision: https://reviews.freebsd.org/D1971 >> Submitted by: sson Reviewed by: jhb > What are the page faults during image activator run ? Or, if the > page faults are not during image activation, then where ? > The original witness panic was one we discussed a while ago on current. https://lists.freebsd.org/pipermail/freebsd-current/2015-February/054698 .html I wanted to resolve that witness issue before I tried to reproduce any other failure cases. Kernel page fault with the following non-sleepable locks held: exclusive sleep mutex imgact_binmisc (imgact_binmisc) r = 0 (0xffffffff82012418) locked @ /usr/src/sys/modules/imgact_binmisc/../../kern/imgact_binmisc.c:596 KDB: stack backtrace: db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe046a236280 witness_warn() at witness_warn+0x4ae/frame 0xfffffe046a236350 trap_pfault() at trap_pfault+0x59/frame 0xfffffe046a2363f0 trap() at trap+0x45e/frame 0xfffffe046a236600 calltrap() at calltrap+0x8/frame 0xfffffe046a236600 - - --- trap 0xc, rip = 0xffffffff80d21279, rsp = 0xfffffe046a2366c0, rbp = 0xfffffe046a2366d0 --- bcopy() at bcopy+0x39/frame 0xfffffe046a2366d0 imgact_binmisc_exec() at imgact_binmisc_exec+0x23d/frame 0xfffffe046a236720 kern_execve() at kern_execve+0x4c6/frame 0xfffffe046a236a80 sys_execve() at sys_execve+0x37/frame 0xfffffe046a236ae0 amd64_syscall() at amd64_syscall+0x27f/frame 0xfffffe046a236bf0 Xfast_syscall() at Xfast_syscall+0xfb/frame 0xfffffe046a236bf0 - - --- syscall (59, FreeBSD ELF64, sys_execve), rip = 0x4297ba, rsp = 0x7fffffffdaf8, rbp = 0x7fffffffdb00 --- >> >> @@ -404,12 +404,12 @@ imgact_binmisc_get_all_entries(struct sy >> imgact_binmisc_entry_t *ibe; int error = 0, count; >> >> - mtx_lock(&interp_list_mtx); + sx_slock(&interp_list_sx); count >> = interp_list_entry_count; /* Don't block in malloc() while >> holding lock. */ xbe = malloc(sizeof(*xbe) * count, M_BINMISC, >> M_NOWAIT|M_ZERO); > This is definitely no longer true statement. Even the original use > of M_NOWAIT there is not warranted. > Dead comment? I should remove it then as it is invalid/inaccurate/never was true? I should remove M_NOWAIT as well? Sean -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQF8BAEBCgBmBQJVgtzfXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRCQUFENDYzMkU3MTIxREU4RDIwOTk3REQx MjAxRUZDQTFFNzI3RTY0AAoJEBIB78oecn5kInoIAJ87XMcWE0p4ebkofYGlcdNP wkDSUkICqBTTB/yV5O9aCcMd8umIVXrimIP8Xm4q/A9tt+CgB23DbmgHZsDOU2eE OypHL2myI/SuEki6k4JtFItJg0JD6IuNi6gVG6Ps0ZKWm0SQHJ6vLSzEdBdY67EF 4cquOnnKiIMrn6qK9jCYzEm+6Nj3lf0roaE9DQLtZ58OfMSfHx2vDEBrlCzwRfEk ih2oxAFnsM5LLoEXpfTaihyQRsTeLIVHAUIZ3Kw3G6021LbQhExUZPBp5uZOzzi7 Bl0wrBIJC/6O4uhY3TpnffpJuAnXf6IGzJ8u2jrz5wZ6tLScVVVdPaM6eAI33dQ= =aN1P -----END PGP SIGNATURE-----