From 75119e9980e160d8766111f40353df61abc8159b Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Wed, 3 Sep 2003 14:15:55 +0000 Subject: * exceptions.cc (set_process_mask): Set pending signals only when signals become unmasked. * sigproc.cc (pending_signals): Flip back to a global. (wait_sig): Don't set pending signals when there is an armed semaphore or signal is blocked. * shared.cc (shared_info::initialize): Add a username parameter for user-mode mounts. Reorganize to try to avoid startup race. (memory_init): Move some stuff into shared_info::initialize. * shared_info.h (shared_info::initialize): Change declaration. (CURR_SHARED_MAGIC): Update. --- winsup/cygwin/exceptions.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'winsup/cygwin/exceptions.cc') diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index c63ed2058..feffcd3d2 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -963,11 +963,15 @@ set_process_mask (sigset_t newmask) sigproc_printf ("old mask = %x, new mask = %x", myself->getsigmask (), newmask); myself->setsigmask (newmask); // Set a new mask mask_sync->release (); - if (oldmask != newmask) - sig_dispatch_pending (); - else + if (!(oldmask & ~newmask)) sigproc_printf ("not calling sig_dispatch_pending. sigtid %p current %p", sigtid, GetCurrentThreadId ()); + else + { + extern bool pending_signals; + pending_signals = true; + sig_dispatch_pending (); + } return; } -- cgit v1.2.3