Date: Wed, 09 Jun 2004 17:04:48 +0200 From: Ian FREISLICH <if@hetzner.co.za> To: John Baldwin <jhb@FreeBSD.org> Cc: freebsd-current@FreeBSD.org Subject: Re: panic: spin lock held too long (reasonable load) Message-ID: <E1BY4dE-000AOa-00@hetzner.co.za> In-Reply-To: Message from John Baldwin <jhb@FreeBSD.org> of "Wed, 09 Jun 2004 10:27:43 -0400." <200406091027.43054.jhb@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> On Wednesday 09 June 2004 09:25 am, Ian FREISLICH wrote: > > Hi > > > > I got this about an hour ago, maybe 10 minutes into a 'make world > > -j8' on my SMP system. I'll reproduce the panic and drop into the > > debugger if possible if someone is willing to tell me what information > > appart from this backtrace will be helpful. > > Unfortunately this is a known deadlock that can happen with swapping that > there isn't an easy fix for. If you want a quick hack, try commenting out > the 'wakeup(&proc0)' line in setrunnable(). It might take a bit longer for > the kernel to swap processes back in but should avoid the deadlock. You mean like this? diff -u -d -r1.249 kern_synch.c --- kern_synch.c 7 Jun 2004 09:35:00 -0000 1.249 +++ kern_synch.c 9 Jun 2004 15:03:09 -0000 @@ -402,7 +402,14 @@ if ((p->p_sflag & PS_INMEM) == 0) { if ((p->p_sflag & PS_SWAPPINGIN) == 0) { p->p_sflag |= PS_SWAPINREQ; - wakeup(&proc0); + /* + * XXX Nasty, Tricksy hack!!!! + * Perhaps avoid a deadlock at the expense of swap + * performance. + */ + /* + * wakeup(&proc0); + */ } } else sched_wakeup(td); Ian -- Ian Freislich
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E1BY4dE-000AOa-00>