Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 13 Apr 2006 10:46:25 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        David Xu <davidxu@freebsd.org>
Cc:        Csaba Henk <csaba-ml@creo.hu>, freebsd-current@freebsd.org
Subject:   Re: panic: Assertion !(curthread->td_flags & TDF_SINTR) failed
Message-ID:  <200604131046.27204.jhb@freebsd.org>
In-Reply-To: <200604130907.51163.davidxu@freebsd.org>
References:  <slrne3q1f7.18h.csaba@beastie.creo.hu> <200604121103.32647.jhb@freebsd.org> <200604130907.51163.davidxu@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 12 April 2006 21:07, David Xu wrote:
> 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.:-)

Ah, ok. :)  Odd that we didn't run into this until now.  Patch looks ok to
me.

> 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
> @@ -633,6 +633,7 @@
>  
>  	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
> 

-- 
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?200604131046.27204.jhb>