From owner-svn-src-stable@FreeBSD.ORG Mon Mar 29 17:32:17 2010 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 19A5F1065679; Mon, 29 Mar 2010 17:32:17 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (relay04.stack.nl [IPv6:2001:610:1108:5010::107]) by mx1.freebsd.org (Postfix) with ESMTP id D0BD38FC16; Mon, 29 Mar 2010 17:32:16 +0000 (UTC) Received: from turtle.stack.nl (turtle.stack.nl [IPv6:2001:610:1108:5010::132]) by mx1.stack.nl (Postfix) with ESMTP id E2D871DD770; Mon, 29 Mar 2010 19:32:14 +0200 (CEST) Received: by turtle.stack.nl (Postfix, from userid 1677) id D944B17204; Mon, 29 Mar 2010 19:32:14 +0200 (CEST) Date: Mon, 29 Mar 2010 19:32:14 +0200 From: Jilles Tjoelker To: Doug Barton Message-ID: <20100329173214.GA17249@stack.nl> References: <201003282019.o2SKJfPg033857@svn.freebsd.org> <4BAFBBFA.7020701@FreeBSD.org> <20100328210630.GA2086@stack.nl> <4BAFE1EE.9040908@FreeBSD.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4BAFE1EE.9040908@FreeBSD.org> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-8@freebsd.org Subject: Re: svn commit: r205806 - stable/8/etc X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Mar 2010 17:32:17 -0000 On Sun, Mar 28, 2010 at 04:10:38PM -0700, Doug Barton wrote: > On 03/28/10 14:06, 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. > The process that I see this with most often is devd, does that fit the > model you're describing? Possibly. This would mainly happen because init has been busy, I think (or if the parent isn't init). > What are the implications of moving on after a > successful pwait even though there is still a zombie process? For shutdown/stop, nothing. For restart, there may be problems if a restarted daemon checks the validity of the pid in the pidfile using kill(). > > 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 > It can't be break, the point of the loop is that wait_for_pids() takes a > list. We may be able to use continue however. pwait with a list waits until all of the processes have terminated. -- Jilles Tjoelker