Date: Wed, 03 Dec 2003 13:02:56 -0500 (EST) From: John Baldwin <jhb@FreeBSD.org> To: Igor Sysoev <is@rambler-co.ru> Cc: freebsd-current@FreeBSD.org Subject: Re: A page fault in subr_turnstile.c:propogate_priority() Message-ID: <XFMail.20031203130256.jhb@FreeBSD.org> In-Reply-To: <Pine.BSF.4.21.0312031917030.24397-100000@is>
next in thread | previous in thread | raw e-mail | index | archive | help
On 03-Dec-2003 Igor Sysoev wrote: > On Wed, 3 Dec 2003, John Baldwin wrote: > >> >> On 03-Dec-2003 Igor Sysoev wrote: >> > On Wed, 3 Dec 2003, John Baldwin wrote: >> > >> >> On 03-Dec-2003 Brian F. Feldman wrote: >> >> > Igor Sysoev <is@rambler-co.ru> wrote: >> >> >> I'd cvsup'ed 5.1-CURRENT from 2003.11.04.02.02.00 up to >> >> >> 2003.11.28.00.00.00 with the turnstile support and it can still >> >> >> causes sometimes a page fault in propogate_priority(). >> >> >> I have core dump and can send debug output. >> >> > >> >> > Go ahead and load up kernel.debug and the core dump in gdb -k, and show us >> >> > the backtrace. Also, do you have any idea about more specific circumstances >> >> > that will cause this problem? Thanks! >> >> >> >> Actually, please try http://www.FreeBSD.org/~jhb/patches/turnstile.patch >> > >> > I've applied patch. >> > Now it's a second fault. >> >> This is the same fault. Did you just apply this patch today or did >> you apply an earlier version of it a while ago? I just updated it >> two days ago. > > In <Pine.BSF.4.21.0312031726420.24397-100000@is> I sent trace before > the patch. It seems to me that it's singe fault. > > Then I applied patch I saw the double fault. This trace I sent in > <Pine.BSF.4.21.0312031855400.24397-100000@is>. Both faults are a trap 12 page fault with a faulting va of 0xe5 because td1 is NULL in priority propagation. Try this change to get a better cashdump that can be analyzed: Index: subr_turnstile.c =================================================================== RCS file: /usr/cvs/src/sys/kern/subr_turnstile.c,v retrieving revision 1.134 diff -u -r1.134 subr_turnstile.c --- subr_turnstile.c 12 Nov 2003 23:48:42 -0000 1.134 +++ subr_turnstile.c 3 Dec 2003 17:48:02 -0000 @@ -254,6 +254,7 @@ } td1 = TAILQ_PREV(td, threadqueue, td_lockq); + MPASS(td1 != NULL); if (td1->td_priority <= pri) { mtx_unlock_spin(&tc->tc_lock); continue; Then print 'td' and '*ts' in gdb from the priority_propagation() frame and mail the output. -- John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.20031203130256.jhb>