On Sun, Jan 30, 2005 at 02:14:03AM -0800, David G. Lawrence wrote: > > > > Needless to say, the scripts get pretty unhappy when they're summarily > > > > aborted. What is the cause of this? > > > > > > There are many reasons why an exec can fail - you'd need to collect > > > more info to be able to say specifically. Speaking generally, the above > > > code happens because something failed after the process's address space > > > had been cleared, so there is no process executable image to return > > > to. The only thing to do in that case is to kill off the process. If > > > you're only seeing the problem under load, it is probably indicating > > > that your running out of a kernel VM pool of some kind. > > > > Any suggestions on what to look at to try and debug this further? > > The first thing to do is to add some kernel printf's to do_execve() > in each of the 'if (error)' cases to determine where the error is occuring. > It's probably not worth putting them in cases prior to the 'loop through > the list of image activators', since the vmspace isn't destroyed until > then. > Once you've done that, the cause of the problem should become obvious. It's the error branch here: for (i = 0; error == -1 && execsw[i]; ++i) { if (execsw[i]->ex_imgact == NULL || execsw[i]->ex_imgact == img_first) { continue; } error = (*execsw[i]->ex_imgact)(imgp); } if (error) { if (error == -1) { if (textset == 0) imgp->vp->v_vflag &= ~VV_TEXT; error = ENOEXEC; } goto exec_fail_dealloc; } But I forgot to print the value of error..duh :-( Kris
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:28 UTC