From 76c89626d357fb8007f5096eb2d694e87621adb4 Mon Sep 17 00:00:00 2001 From: cgf Date: Sun, 5 Nov 2000 03:08:39 +0000 Subject: [PATCH] * exceptions.cc (handle_sigsuspend): Record frame here for signalling. (set_process_mask): Ditto. --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/exceptions.cc | 2 ++ winsup/cygwin/sigproc.cc | 11 +++++------ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index e27ad371a7..f841d4504f 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +Sat Nov 4 22:07:03 2000 Christopher Faylor + + * exceptions.cc (handle_sigsuspend): Record frame here for signalling. + (set_process_mask): Ditto. + Sat Nov 4 14:24:10 2000 Christopher Faylor * sigproc.cc (wait_subproc): Still more debugging cleanup. diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 88b195724f..5fa58890b9 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -554,6 +554,7 @@ stack (void) int __stdcall handle_sigsuspend (sigset_t tempmask) { + sigframe thisframe (mainthread); sigset_t oldmask = myself->getsigmask (); // Remember for restoration set_process_mask (tempmask & ~SIG_NONMASKABLE);// Let signals we're @@ -872,6 +873,7 @@ ctrl_c_handler (DWORD type) extern "C" void __stdcall set_process_mask (sigset_t newmask) { + sigframe thisframe (mainthread); mask_sync->acquire (INFINITE); sigset_t oldmask = myself->getsigmask (); newmask &= ~SIG_NONMASKABLE; diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index 27a07d5804..e4bd915274 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -262,12 +262,11 @@ proc_subproc (DWORD what, DWORD val) break; /* A child process had terminated. - * Possibly this is just due to an exec(). Cygwin implements an exec() - * as a "handoff" from one windows process to another. If child->hProcess - * is different from what is recorded in hchildren, then this is an exec(). - * Otherwise this is a normal child termination event. - * (called from wait_subproc thread) - */ + Possibly this is just due to an exec(). Cygwin implements an exec() + as a "handoff" from one windows process to another. If child->hProcess + is different from what is recorded in hchildren, then this is an exec(). + Otherwise this is a normal child termination event. + (called from wait_subproc thread) */ case PROC_CHILDTERMINATED: if (hchildren[val] != pchildren[val]->hProcess) { -- 2.11.0