Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 28 Mar 2010 23:52:23 +0100 (BST)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Jilles Tjoelker <jilles@stack.nl>
Cc:        svn-src-stable@freebsd.org, svn-src-all@freebsd.org, Doug Barton <dougb@FreeBSD.org>, src-committers@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   Re: svn commit: r205806 - stable/8/etc
Message-ID:  <alpine.BSF.2.00.1003282351320.522@fledge.watson.org>
In-Reply-To: <20100328210630.GA2086@stack.nl>
References:  <201003282019.o2SKJfPg033857@svn.freebsd.org> <4BAFBBFA.7020701@FreeBSD.org> <20100328210630.GA2086@stack.nl>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 28 Mar 2010, Jilles Tjoelker wrote:

> On Sun, Mar 28, 2010 at 01:28:42PM -0700, Doug Barton wrote:
>> Probably my fault for not saying something sooner, but there is a problem 
>> with the code in head that sometimes causes it to loop repeatedly even 
>> though pwait exits successfully. I am trying to track it down, but since it 
>> only happens about once every 10 shutdowns it's been difficult.
>
> There is a difference between the two methods in what is waited for exactly. 
> pwait(1) will wait for the process to terminate; if it is applied to a 
> zombie it will return immediately (printing the exit status if -v was 
> given). On the other hand, kill(1) will continue to return success until the 
> process has been waited for by its parent.
>
> An obvious fix is to trust pwait if it returns successfully, e.g. like if 
> pwait $_list 2>/dev/null; then break; else sleep 2; fi

I noticed last year that Apple has implemented a separate PROC_REAP event in 
kqueue -- it would be easy for us to implement that as well, and add a flag to 
pwait to allow the user to decide to use that semantic instead (if desired).

Robert N M Watson
Computer Laboratory
University of Cambridge



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.1003282351320.522>