From: cgf Date: Tue, 16 Mar 2004 04:39:37 +0000 (+0000) Subject: * cygtls.cc (_cygtls::fixup_after_fork): Just manipulate the signal stack if a X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=4388d3eab3f3653c4c3d36ed30054d4523cf59d4;p=pf3gnuchains%2Fsourceware.git * cygtls.cc (_cygtls::fixup_after_fork): Just manipulate the signal stack if a signal occurred during the parent's fork. Otherwise leave it alone. --- diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index d47ddff6a6..51d09dde13 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,11 @@ 2004-03-15 Christopher Faylor + * cygtls.cc (_cygtls::fixup_after_fork): Just manipulate the signal + stack if a signal occurred during the parent's fork. Otherwise leave + it alone. + +2004-03-15 Christopher Faylor + * exceptions.cc (try_to_debug): Report on tid of caller. * sync.cc (muto::acquire): Fix some races. diff --git a/winsup/cygwin/cygtls.cc b/winsup/cygwin/cygtls.cc index f6f4706349..d2db5eb2e6 100644 --- a/winsup/cygwin/cygtls.cc +++ b/winsup/cygwin/cygtls.cc @@ -138,12 +138,13 @@ _cygtls::init_thread (void *x, DWORD (*func) (void *, void *)) void _cygtls::fixup_after_fork () { - sig = stacklock = 0; + if (sig) + { + pop (); + sig = 0; + } + stacklock = 0; wq.thread_ev = NULL; - stackptr = stack + 1; // FIXME? -#ifdef DEBUGGING - memset (stackptr, 0, sizeof (stack) - sizeof (stack[0])); -#endif } void