Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-developers-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin-developers AT sources DOT redhat DOT com Date: Tue, 4 Sep 2001 22:45:34 -0400 From: Christopher Faylor To: cygwin-developers AT cygwin DOT com Subject: Re: 1.3.2: setsid() vs. signals Message-ID: <20010904224534.A12588@redhat.com> Reply-To: cygwin-developers AT cygwin DOT com Mail-Followup-To: cygwin-developers AT cygwin DOT com References: <3B94BC33 DOT CACAEAF4 AT trustcenter DOT de> <20010904215335 DOT D11902 AT redhat DOT com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.3.21i On Wed, Sep 05, 2001 at 11:23:54AM +0900, Kazuhiro Fujieda wrote: >>>> On Tue, 4 Sep 2001 21:53:35 -0400 >>>> Christopher Faylor said: > >> >This is a bug in Cygwin DLL 1.3.2 and also in the latest snapshot. >> >I will fix it in the next release. >> >> Does this mean that you're going to send in a patch for 1.3.3? > >No, but I found the cause of his problem. That's the following >change of yours. It made the handler trigger SIGINT to the process >without its controlling terminal. I'd like to propose to revert it. > >Index: exceptions.cc >=================================================================== >RCS file: /cvs/src/src/winsup/cygwin/exceptions.cc,v >retrieving revision 1.79 >retrieving revision 1.80 >diff -u -p -r1.79 -r1.80 >--- exceptions.cc 2001/05/03 15:00:38 1.79 >+++ exceptions.cc 2001/05/04 20:39:38 1.80 >@@ -892,8 +892,8 @@ ctrl_c_handler (DWORD type) > tty_min *t = cygwin_shared->tty.get_tty (myself->ctty); > /* Ignore this if we're not the process group lead since it should be handled > *by* the process group leader. */ >- if (!t->getpgid () || t->getpgid () != myself->pid || >- (GetTickCount () - t->last_ctrl_c) < MIN_CTRL_C_SLOP) >+ if (t->getpgid () && (t->getpgid () != myself->pid || >+ (GetTickCount () - t->last_ctrl_c) < MIN_CTRL_C_SLOP)) > return TRUE; > else > /* Otherwise we just send a SIGINT to the process group and return TRUE (to indicate Ok. I've semi-reverted that patch and added an additional test for myself->ctty == -1. This code should not be activated if there is no controlling terminal. Thanks for tracking this down. cgf