Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Jun 2015 07:59:43 -0700
From:      Sean Bruno <sbruno@ignoranthack.me>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        svn-src-head@freebsd.org
Subject:   Re: svn commit: r284535 - head/sys/kern
Message-ID:  <5582DCDF.9080708@ignoranthack.me>
In-Reply-To: <20150618030715.GD2080@kib.kiev.ua>
References:  <201506180204.t5I24LJm079537@svn.freebsd.org> <20150618030715.GD2080@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
-----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

<trimmed CC list>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQF8BAEBCgBmBQJVgtzfXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRCQUFENDYzMkU3MTIxREU4RDIwOTk3REQx
MjAxRUZDQTFFNzI3RTY0AAoJEBIB78oecn5kInoIAJ87XMcWE0p4ebkofYGlcdNP
wkDSUkICqBTTB/yV5O9aCcMd8umIVXrimIP8Xm4q/A9tt+CgB23DbmgHZsDOU2eE
OypHL2myI/SuEki6k4JtFItJg0JD6IuNi6gVG6Ps0ZKWm0SQHJ6vLSzEdBdY67EF
4cquOnnKiIMrn6qK9jCYzEm+6Nj3lf0roaE9DQLtZ58OfMSfHx2vDEBrlCzwRfEk
ih2oxAFnsM5LLoEXpfTaihyQRsTeLIVHAUIZ3Kw3G6021LbQhExUZPBp5uZOzzi7
Bl0wrBIJC/6O4uhY3TpnffpJuAnXf6IGzJ8u2jrz5wZ6tLScVVVdPaM6eAI33dQ=
=aN1P
-----END PGP SIGNATURE-----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5582DCDF.9080708>