delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/09/19/06:32:32

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-1.3 required=5.0 tests=AWL,BAYES_00,RCVD_IN_BL_SPAMCOP_NET,SPF_HELO_PASS,SPF_PASS
X-Spam-Check-By: sourceware.org
To: cygwin AT cygwin DOT com
From: Waldemar Rachwal <waldemar DOT rachwal AT gmail DOT com>
Subject: Re: [1.7] sigwait bug (SIGCHLD delayed to a next regular signal)
Date: Sat, 19 Sep 2009 10:31:58 +0000 (UTC)
Lines: 50
Message-ID: <loom.20090919T114836-897@post.gmane.org>
References: <loom DOT 20090918T184921-716 AT post DOT gmane DOT org> <20090918213522 DOT GA12527 AT ednor DOT casa DOT cgf DOT cx>
Mime-Version: 1.0
User-Agent: Loom/3.14 (http://gmane.org/)
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

Christopher Faylor <cgf-use-the-mailinglist-please <at> cygwin.com> writes:

> 
> Thanks for the test case.  The problem has nothing to do with anything
> "special" about SIGCHLD.  It's a signal like any other signal.
> 

I am not sure it's clear. With regard to sigwait() SIGCHLD like any other signal
must not only be blocked, additionally like any other signal it cannot be
ignored, which is not common as only few signals are ignored by default,
and SIGCHLD and SIGWINCH are in this group.

POSIX is explicit here:

http://www.opengroup.org/onlinepubs/9699919799/

<quote>
2.4.1 Signal Generation and Delivery

However, a signal can be "blocked" from delivery to a thread.

If the action associated with a blocked signal is anything other than to
ignore the signal, and if that signal is generated for the thread,

the signal shall remain pending until

it is unblocked,

it is accepted when it is selected and returned by a call to the
sigwait() function,

or the action associated with it is set to ignore the signal.
</quote>

Simply a signal must be blocked and (actually) not ignored to be processed by
sigwait().

> Cygwin was not performing sigwait() processing if there was a handler
> set up for the signal.  Your test case would have worked if you had not
> set up a dummy handler.
>

As stated above a handler is the must, otherwise the test won't work under POSIX
systems.
 
> This will be fixed in the next snapshot.
>  

Thanks,
Waldemar.


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019