* cygtls.cc (_threadinfo::remove): Don't assume that we are removing _my_tls.
* exceptions.cc (setup_handler): Improve debugging output. (call_signal_handler_now): Remove ill-advised debugger call. * sigproc.cc (sigcomplete_main): Delete. (sig_send): Honor FIXME and avoid using main thread's completion event for everything or suffer races. (pending_signals::add): Default stored mask to current process mask rather than mask at time of signal send. (wait_sig): Add debugging output. * sigproc.h (sigpacket::mask_storage): Delete.
This commit is contained in:
@ -744,7 +744,11 @@ setup_handler (int sig, void *handler, struct sigaction& siga, _threadinfo *tls)
|
||||
bool interrupted = false;
|
||||
|
||||
if (tls->sig)
|
||||
goto out;
|
||||
{
|
||||
sigproc_printf ("trying to send sig %d but signal %d already armed",
|
||||
sig, tls->sig);
|
||||
goto out;
|
||||
}
|
||||
|
||||
for (int i = 0; i < CALL_HANDLER_RETRY; i++)
|
||||
{
|
||||
@ -1141,10 +1145,6 @@ call_signal_handler_now ()
|
||||
void (*sigfunc) (int) = _my_tls.func;
|
||||
|
||||
(void) _my_tls.pop ();
|
||||
#ifdef DEBUGGING
|
||||
if (_my_tls.stackptr > (_my_tls.stack + 1))
|
||||
try_to_debug ();
|
||||
#endif
|
||||
reset_signal_arrived ();
|
||||
sigset_t oldmask = _my_tls.oldmask;
|
||||
int this_errno = _my_tls.saved_errno;
|
||||
|
Reference in New Issue
Block a user