* 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:
Christopher Faylor
2004-01-22 19:03:19 +00:00
parent 537ca63f8e
commit 39d06d71ff
5 changed files with 38 additions and 27 deletions

View File

@ -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;