diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 3b28859ac..ac6124745 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2013-01-03 Christopher Faylor + + * globals.cc (exit_states): Renumber so that ES_EXIT_STARTING is first, + as intended. + * sigproc.cc (wait_sig): Only stop accepting signals after + exit_state > ES_EXIT_STARTING. + 2013-01-03 Christopher Faylor * sigproc.cc (exit_thread): Set thread signal mask so that no signals diff --git a/winsup/cygwin/globals.cc b/winsup/cygwin/globals.cc index e0fa3eed4..19a65b16a 100644 --- a/winsup/cygwin/globals.cc +++ b/winsup/cygwin/globals.cc @@ -34,8 +34,8 @@ UINT system_wow64_directory_length; enum exit_states { ES_NOT_EXITING = 0, - ES_SIGNAL_EXIT, ES_EXIT_STARTING, + ES_SIGNAL_EXIT, ES_PROCESS_LOCKED, ES_EVENTS_TERMINATE, ES_SIGNAL, diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index 4e8094073..f0498ad84 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -1335,7 +1335,7 @@ wait_sig (VOID *) } /* Don't process signals when we start exiting */ - if (exit_state && pack.si.si_signo > 0) + if (exit_state > ES_EXIT_STARTING && pack.si.si_signo > 0) continue; sigset_t dummy_mask;