From owner-freebsd-current@FreeBSD.ORG Sun Jan 30 07:54:32 2005 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id AAD7A16A4CF; Sun, 30 Jan 2005 07:54:32 +0000 (GMT) Received: from dglawrence.com (dsl-230-156.ipns.com [209.210.230.156]) by mx1.FreeBSD.org (Postfix) with ESMTP id 130B243D49; Sun, 30 Jan 2005 07:54:30 +0000 (GMT) (envelope-from dg@dglawrence.com) Received: from opteron.dglawrence.com (localhost [127.0.0.1]) by dglawrence.com (8.13.1/8.13.1) with ESMTP id j0U7sRWm087400; Sat, 29 Jan 2005 23:54:27 -0800 (PST) (envelope-from dg@dglawrence.com) Received: (from dg@localhost) by opteron.dglawrence.com (8.13.1/8.13.1/Submit) id j0U7sMkJ087399; Sat, 29 Jan 2005 23:54:22 -0800 (PST) (envelope-from dg@dglawrence.com) Date: Sat, 29 Jan 2005 23:54:22 -0800 From: "David G. Lawrence" To: Kris Kennaway Message-ID: <20050130075422.GL48777@opteron.dglawrence.com> References: <20050130025217.GA32612@xor.obsecurity.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20050130025217.GA32612@xor.obsecurity.org> cc: alc@freeBSD.org cc: current@freeBSD.org Subject: Re: do_execve() finding vmspace_destroyed set under load X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 30 Jan 2005 07:54:32 -0000 > I'm seeing the following code in do_execve() frequently being > triggered when scripts are executed on my SMP machine under load: > > if (imgp->vmspace_destroyed) { > /* sorry, no more process anymore. exit gracefully */ > #ifdef MAC > mac_execve_exit(imgp); > if (interplabel != NULL) > mac_vnode_label_free(interplabel); > #endif > exit1(td, W_EXITCODE(0, SIGABRT)); > /* NOT REACHED */ > error = 0; > } > > 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. -DG David G. Lawrence President Download Technologies, Inc. - http://www.downloadtech.com - (866) 399 8500 TeraSolutions, Inc. - http://www.terasolutions.com - (888) 346 7175 The FreeBSD Project - http://www.freebsd.org Pave the road of life with opportunities.