From b9ebff640a76197a91b086a9aff4a6db53cc9d4b Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Thu, 25 Aug 2005 03:12:48 +0000 Subject: * exceptions.cc (handle_sigsuspend): Just sleep forever if called from non-main thread. (sigpacket:process): Simplify logic which determines when and how a signal is masked. Don't trigger sigwait if there is a signal handler. * sigproc.cc (wait_sig): Update comment. Try to process a signal which is in the queue if it isn't queued for the target thread (this is still not right). --- winsup/cygwin/sigproc.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'winsup/cygwin/sigproc.cc') diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index 2bb9d4eda..382b226f8 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -1097,9 +1097,10 @@ wait_sig (VOID *self) else { int sig = pack.si.si_signo; - // FIXME: Not quite right when taking threads into consideration. - // Do we need a per-thread queue? - if (sigq.sigs[sig].si.si_signo) + // FIXME: REALLY not right when taking threads into consideration. + // We need a per-thread queue since each thread can have its own + // list of blocked signals. CGF 2005-08-24 + if (sigq.sigs[sig].si.si_signo && sigq.sigs[sig].tls == pack.tls) sigproc_printf ("sig %d already queued", pack.si.si_signo); else { -- cgit v1.2.3