This is the mail archive of the cygwin-developers@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: 1.3.2: setsid() vs. signals


On Wed, Sep 05, 2001 at 11:23:54AM +0900, Kazuhiro Fujieda wrote:
>>>> On Tue, 4 Sep 2001 21:53:35 -0400
>>>> Christopher Faylor <cgf@redhat.com> 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]