do_execve() finding vmspace_destroyed set under load
Kris Kennaway
kris at obsecurity.org
Fri Feb 11 22:50:18 GMT 2005
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20050211/41c9766d/attachment.bin
More information about the freebsd-current
mailing list