From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: David Kastrup Newsgroups: gmane.emacs.devel Subject: Re: busyloop in sigchld_handler Date: Tue, 13 Mar 2007 08:29:41 +0100 Message-ID: <868xe11tzu.fsf@lola.quinscape.zz> References: <45F59395.4010708@gnu.org> <45F5A2B4.7090301@gnu.org> <85ejnumf1o.fsf@lola.goethe.zz> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1173771020 10739 80.91.229.12 (13 Mar 2007 07:30:20 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Tue, 13 Mar 2007 07:30:20 +0000 (UTC) Cc: Sam Steingold , emacs-devel@gnu.org To: Andreas Schwab Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Mar 13 08:30:13 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1HR1SU-0005ry-9t for ged-emacs-devel@m.gmane.org; Tue, 13 Mar 2007 08:30:10 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HR1TD-00059J-KL for ged-emacs-devel@m.gmane.org; Tue, 13 Mar 2007 02:30:55 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HR1T2-00059E-Kz for emacs-devel@gnu.org; Tue, 13 Mar 2007 03:30:44 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HR1Sz-00058m-5s for emacs-devel@gnu.org; Tue, 13 Mar 2007 03:30:44 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HR1Sz-00058j-2g for emacs-devel@gnu.org; Tue, 13 Mar 2007 02:30:41 -0500 Original-Received: from pc3.berlin.powerweb.de ([62.67.228.11]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HR1SD-0002jP-0q for emacs-devel@gnu.org; Tue, 13 Mar 2007 03:29:53 -0400 Original-Received: from quinscape.de (pd95b0fdb.dip0.t-ipconnect.de [217.91.15.219]) by pc3.berlin.powerweb.de (8.9.3p3/8.9.3) with ESMTP id IAA04896 for ; Tue, 13 Mar 2007 08:29:41 +0100 X-Delivered-To: Original-Received: (qmail 6915 invoked from network); 13 Mar 2007 07:29:46 -0000 Original-Received: from unknown (HELO lola.quinscape.zz) ([10.0.3.43]) (envelope-sender ) by ns.quinscape.de (qmail-ldap-1.03) with SMTP for ; 13 Mar 2007 07:29:46 -0000 Original-Received: by lola.quinscape.zz (Postfix, from userid 1001) id DAE64DAEDF; Tue, 13 Mar 2007 08:29:41 +0100 (CET) In-Reply-To: (Andreas Schwab's message of "Mon\, 12 Mar 2007 22\:36\:13 +0100") User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux) X-detected-kernel: Linux 2.4-2.6 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:67846 Archived-At: Andreas Schwab writes: > David Kastrup writes: > >> Andreas Schwab writes: >> >>> If you don't use WNOHANG you open up a race where several processes may >>> have their status changed, but only one signal is sent (non-realtime >>> signals are not queued). >> >> How does WNOHANG protect against that? > > It makes it possible to loop around without blocking. Too bad you snipped the details of my question. It does not make it possible to loop around without preemption. In fact, it _forces_ preemption at some point of time (this is the only way to exit the infinite loop on a single-processor system), and when preemption happens, of course several signals may be delivered together: after all, a preempted process is not so likely to get scheduled right again. > On system without WNOHANG there needs to be other mechanisms to > garantee one signal per child (they probably redeliver the signal as > long as such children exist). Again: I don't see that this guaranteed one signal per child, and you did not explain how it could. -- David Kastrup