Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Date: Thu, 7 Oct 2004 11:30:42 -0500 From: Brian Ford Reply-To: cygwin AT cygwin DOT com To: cygwin AT cygwin DOT com Subject: Re: Calls to system() blocks return of SIGCHLD signal In-Reply-To: <20041006184701.GQ29973@trixie.casa.cgf.cx> Message-ID: References: <20041006184701 DOT GQ29973 AT trixie DOT casa DOT cgf DOT cx> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-IsSubscribed: yes On Wed, 6 Oct 2004, Christopher Faylor wrote: > On Wed, Oct 06, 2004 at 12:24:48PM -0400, Remy Gauthier wrote: > >We have noticed (on V1.5.10-1 and V1.5.11-1) that after a call to > >system(), the handlers were not being called after the child process > >stopped. This program has this behaviour (removing the call to > >system() will restore correct SIGCHLD handling): [snip; from Linux system(3)] > During execution of the command, SIGCHLD will be blocked, and SIGINT and > SIGQUIT will be ignored. Um..., I think you missed the point here cgf as this didn't answer the question. The key word above is "During". He was reporting that it was still in effect "after", and he identified the cause here: > >Then, when the child has completed, a cleanup process is done: > > > >static void > >do_cleanup (void *args) > >{ > ># define cleanup ((pthread_cleanup *) args) [snip] > >if (cleanup->oldmask) > > sigprocmask (SIG_SETMASK, &(cleanup->oldmask), NULL); > ># undef cleanup > >} [snip] > >... but when the signal mask was previously empty (no blocked signals), > >the sigprocmask call will not be done, therefore leaving SIGCHLD > >blocked Maybe I haven't had enough coffee yet this morning, but I'm inclined to agree that this is a bug. -- Brian Ford Senior Realtime Software Engineer VITAL - Visual Simulation Systems FlightSafety International the best safety device in any aircraft is a well-trained pilot... -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/