From: Nicholas H. <he...@se...> - 2003-10-21 19:39:22
|
On Tue, 2003-10-21 at 11:54, er...@he... wrote: > I got an oops out of the NMI watchdog which was enlightening (or at > least indicated which code was at fault). The following patch may > have fixed it for me. I say "may have" since I've had some trouble > reproducing the problem reliably. > > This patch turns off "sigbypass" which is a little optimization where > a process sending a signal to a ghost doesn't bother the ghost. > Instead it just throws a signal forwarding message right on the > message queue. I'm not sure how the code is broken. I haven't had > time to look into it yet. > > Please give it a try and let me know if you still see the deadlock. > > > --- hooks.c 29 Aug 2003 21:46:57 -0000 1.53 > +++ hooks.c 21 Oct 2003 15:41:44 -0000 > @@ -314,6 +314,11 @@ > * t->sigmask */ > struct bproc_krequest_t *req; > struct siginfo tmpinfo; > + > + return 0; /* XXX disable sigbypass for now. > + * There seems to be something busted or > + * unsafe about this code... */ > + > if (!BPROC_ISGHOST(t) || !t->bproc.ghost->sigbypass) > return 0; Well, that seems to have worked. I just passed 10M iterations, which it was unable to do previously. I am now doing 100M just to be an idiot :) Nice catch~ Nic -- Nicholas Henke Penguin Herder & Linux Cluster System Programmer Liniac Project - Univ. of Pennsylvania |