* exceptions.cc (signal_exit): Move captive process termintation...
(_cygtls::interrupt_setup): ...into here. (sigpacket::process): Simplify setting of handler when have_execed. (_cygtls::interrupt_setup): Don't call proc_subproc when we've execed. * globals.cc (exit_states): Delete unneeded ES_EXEC_EXIT. * pinfo.cc (pinfo::exit): Change debugging output. Call proc_terminate rather than the now-obsolete sigproc_terminate. Don't set exit_state to ES_EXEC_EXIT. Set exit_state to ES_FINAL later. * sigproc.cc (sigproc_terminate): Delete function. (wait_sig): Don't call proc_subproc if have_execed. * sigproc.h (sigproc_terminate): Delete declaration. * sync.h (lock_process::lock_process): Don't set exit_state to ES_PROCESS_LOCKED. (lock_process::operator LONG): Define.
This commit is contained in:
@@ -467,21 +467,6 @@ sigproc_init ()
|
||||
new cygthread (wait_sig, cygself, "sig");
|
||||
}
|
||||
|
||||
/* Called on process termination to terminate signal and process threads.
|
||||
*/
|
||||
void __stdcall
|
||||
sigproc_terminate (exit_states es)
|
||||
{
|
||||
exit_states prior_exit_state = exit_state;
|
||||
exit_state = es;
|
||||
if (!cygwin_finished_initializing)
|
||||
/* nothing to do */;
|
||||
else if (prior_exit_state >= ES_FINAL)
|
||||
sigproc_printf ("already performed");
|
||||
else
|
||||
proc_terminate (); // clean up process stuff
|
||||
}
|
||||
|
||||
/* Exit the current thread very carefully.
|
||||
See cgf-000017 in DevNotes for more details on why this is
|
||||
necessary. */
|
||||
@@ -1427,7 +1412,7 @@ wait_sig (VOID *)
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (clearwait)
|
||||
if (clearwait && !have_execed)
|
||||
proc_subproc (PROC_CLEARWAIT, 0);
|
||||
loop:
|
||||
if (pack.wakeup)
|
||||
|
Reference in New Issue
Block a user