A page fault in subr_turnstile.c:propogate_priority()
John Baldwin
jhb at FreeBSD.org
Wed Dec 3 10:02:58 PST 2003
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 at 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 at 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 at 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 at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!" - http://www.FreeBSD.org/
More information about the freebsd-current
mailing list