Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Jun 2004 11:27:10 -0400
From:      John Baldwin <jhb@FreeBSD.org>
To:        freebsd-current@FreeBSD.org
Cc:        Ian FREISLICH <if@hetzner.co.za>
Subject:   Re: panic: spin lock held too long (reasonable load)
Message-ID:  <200406091127.10019.jhb@FreeBSD.org>
In-Reply-To: <E1BY4dE-000AOa-00@hetzner.co.za>
References:  <E1BY4dE-000AOa-00@hetzner.co.za>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 09 June 2004 11:04 am, Ian FREISLICH wrote:
> > 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?

Yes.  Appropriate comment, too. :-P

> 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
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"

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