* exceptions.cc (sigtid): Remove declaration.
(handle_exceptions): Use _sig_tls rather than sigtid to determine if this is the signal thread. (set_signal_mask): Ditto for conditionalized CGF code. * pinfo.cc (pinfo::exit): Exit the thread if we forcefully terminated the main thread * sigproc.cc (sigtid): Delete. (_sig_tls): Define. (sig_clear): Use _sig_tls rather than sigtid to determine if this is the signal thread. (sig_dispatch_pending): Ditto. (wait_sig): Set _sig_tls here. * dcrt0.cc (do_exit): Move sigproc_terminate call later since signal handling was still needed for subsequent stuff. Call sigproc_terminate with new exit_state value. * pinfo.cc (pinfo::exit): Call sigproc_terminate with new exit_state value. * sigproc.cc (proc_terminate): Remove unnecessary (void) parameter. (sigproc_terminate): Ditto. Add new argument to accept exit state to be set. (wait_sig): Reorganize __SIGEXIT handling. Add more debugging output. * winsup.h (sigproc_terminate): Declare with new exit_state argument. (exit_states): Reorganize to reflect new exit ordering of sigproc_terminate.
This commit is contained in:
@@ -1056,17 +1056,7 @@ do_exit (int status)
|
||||
close_all_files ();
|
||||
}
|
||||
|
||||
if (exit_state < ES_SIGPROCTERMINATE)
|
||||
sigproc_terminate (); // sets exit_state directly
|
||||
|
||||
myself->stopsig = 0;
|
||||
if (exit_state < ES_TITLE)
|
||||
{
|
||||
exit_state = ES_TITLE;
|
||||
/* restore console title */
|
||||
if (old_title && display_title)
|
||||
set_console_title (old_title);
|
||||
}
|
||||
|
||||
if (exit_state < ES_HUP_PGRP)
|
||||
{
|
||||
@@ -1101,6 +1091,17 @@ do_exit (int status)
|
||||
|
||||
}
|
||||
|
||||
if (exit_state < ES_SIGPROCTERMINATE)
|
||||
sigproc_terminate (ES_SIGPROCTERMINATE); // sets exit_state directly
|
||||
|
||||
if (exit_state < ES_TITLE)
|
||||
{
|
||||
exit_state = ES_TITLE;
|
||||
/* restore console title */
|
||||
if (old_title && display_title)
|
||||
set_console_title (old_title);
|
||||
}
|
||||
|
||||
if (exit_state < ES_TTY_TERMINATE)
|
||||
{
|
||||
exit_state = ES_TTY_TERMINATE;
|
||||
@@ -1165,9 +1166,6 @@ __api_fatal (const char *fmt, ...)
|
||||
WriteFile (h, buf, len, &done, 0);
|
||||
}
|
||||
|
||||
/* We are going down without mercy. Make sure we reset
|
||||
our process_state. */
|
||||
sigproc_terminate ();
|
||||
#ifdef DEBUGGING
|
||||
try_to_debug ();
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user