diff options
author | Christopher Faylor <me@cgf.cx> | 2013-03-01 19:48:14 +0400 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2013-03-01 19:48:14 +0400 |
commit | aad4a3c932726b6c33e43594a17c1f468f0911cf (patch) | |
tree | 72adb47221ce07e5346c83491e7d93f21318c898 | |
parent | a4239bd48db193e9049384384d3f28f0f4695af2 (diff) |
* exceptions.cc (exception::handle): Eliminate buggy recursed value and just
check if we're exiting.
-rw-r--r-- | winsup/cygwin/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/cygwin/exceptions.cc | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 81ecf55c7..66a1cc6a8 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2013-03-01 Christopher Faylor <me.cygwin2013@cgf.cx> + + * exceptions.cc (exception::handle): Eliminate buggy recursed value and + just check if we're exiting. + 2013-02-26 Corinna Vinschen <corinna@vinschen.de> * include/pthread.h (pthread_atfork): Add missing declaration. diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index b3e327779..c7747388c 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -469,7 +469,6 @@ int exception::handle (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT *in, void *) { static bool NO_COPY debugging; - static int NO_COPY recursed; _cygtls& me = _my_tls; if (debugging && ++debugging < 500000) @@ -616,8 +615,9 @@ exception::handle (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT *in, void /* Another exception could happen while tracing or while exiting. Only do this once. */ - if (recursed++) - api_fatal ("Error while dumping state (probably corrupted stack)"); + if (exit_state >= ES_SIGNAL_EXIT + && (NTSTATUS) e->ExceptionCode != STATUS_CONTROL_C_EXIT) + api_fatal ("Exception during process exit"); else if (!try_to_debug (0)) rtl_unwind (frame, e); else |