diff options
Diffstat (limited to 'winsup/cygwin/dcrt0.cc')
-rw-r--r-- | winsup/cygwin/dcrt0.cc | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 457661000..ea0edbd0c 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -1013,8 +1013,18 @@ do_exit (int status) #endif EnterCriticalSection (&exit_lock); - muto::set_exiting_thread (); - dll_global_dtors (); + + if (exit_state < ES_SET_MUTO) + { + exit_state = ES_SET_MUTO; + muto::set_exiting_thread (); + } + + if (exit_state < ES_GLOBAL_DTORS) + { + exit_state = ES_GLOBAL_DTORS; + dll_global_dtors (); + } if (exit_state < ES_EVENTS_TERMINATE) { |