Bug in latest rev kern_acct.c: panic: Trying sleep, but thread marked as sleeping prohibited

Wojciech A. Koszek dunstan at freebsd.czest.pl
Tue Dec 27 09:31:58 PST 2005


On Wed, Dec 21, 2005 at 11:11:43AM -0500, John Baldwin wrote:
> On Tuesday 20 December 2005 09:18 pm, Richard Todd wrote:
> > I've been getting this panic a good bit recently after updating -current
> > sources a couple days ago.  The panic occurs in the acctwatch() callout
> > routine run from the clock ithread, apparently when it tries to sleep
> > on a lock (which is, I gather, verboten in ithreads.)   The panics seemed
> > to occur randomly but, on reflection, always occured when
> >   1) there was a good bit of system activity and
> >   2) I had just done something to allocate or free enough space on /usr to
> >      cause accounting to be either suspended or resumed.
> > and thus would cause the acctwatch() routine to have to do something.
> > "make clean; make" in a big port seemed to be fairly effective in
> > triggering the bug. :-)
> >
> > My previous kernel, which dated from Oct 24, didn't have this
> > problem, which helps point suspicion at the latest rev of kern_acct.c
> > (rev 1.76, date: 2005/11/12 10:45:13) which involved a bunch of changes
> > in the lock handling of kernel accounting.
> 
> acctwatch() probably isn't a good thing to do from a callout since it wants to 
> do VOPs and such.  Probably the easiest fix is to stick acctwatch() in its 
> own kthread.

I think I didn't break current behaviour. Patch is here:

http://freebsd.czest.pl/dunstan/FreeBSD/kern_acct.0.patch

Richard, could you try to repeat your problem with my patch?

-- 
* Wojciech A. Koszek && dunstan at FreeBSD.czest.pl


More information about the freebsd-current mailing list