Re: panic: Assertion !(curthread->td_flags & TDF_SINTR) failed

From: David Xu <davidxu_at_freebsd.org>
Date: Thu, 13 Apr 2006 09:07:50 +0800
On Wednesday 12 April 2006 23:03, John Baldwin wrote:
> On Wednesday 12 April 2006 09:52, Csaba Henk wrote:
> > Hi!
> >
> > With my CURRENT installation from Apr 1, I get:
> >
> > panic: Assertion !(curthread->td_flags & TDF_SINTR) failed at
> > /usr/src/sys/kern/subr_sleepqueue.c:529 cpuid = 0
> > KDB: enter: panic
>
> The sleepq_remove() in msleep() to handle this nested sleep case isn't
> clearing the TDF_SINTR from the previous tsleep.  I suspect this changed
> in the recent fixes as I think they changed the sleepqueue code to clear
> TDF_SINTR when the thread resumed, rather than clearing it when the thread
> was removed from the queue IIRC.
>
Can you test following patch ? I think the TDF_SINTR was never cleared in
sleepq_remove or sleepq_resume_thread, the functions were not touched in
my previous fixes.:-)

David Xu


Index: subr_sleepqueue.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/subr_sleepqueue.c,v
retrieving revision 1.26
diff -u -r1.26 subr_sleepqueue.c
--- subr_sleepqueue.c	23 Feb 2006 03:42:17 -0000	1.26
+++ subr_sleepqueue.c	13 Apr 2006 00:59:01 -0000
_at__at_ -633,6 +633,7 _at__at_
 
 	td->td_wmesg = NULL;
 	td->td_wchan = NULL;
+	td->td_flags &= ~TDF_SINTR;
 
 	/*
 	 * Note that thread td might not be sleeping if it is running
Received on Wed Apr 12 2006 - 23:07:54 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:54 UTC