Re: panic: spin lock held too long (reasonable load)

From: Ian FREISLICH <if_at_hetzner.co.za>
Date: Wed, 09 Jun 2004 17:04:48 +0200
> 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
_at__at_ -402,7 +402,14 _at__at_
        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
Received on Wed Jun 09 2004 - 13:04:53 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:56 UTC