This is the mail archive of the cygwin mailing list for the Cygwin project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Fri, Feb 24, 2006 at 03:22:05PM -0500, Paul Clements wrote:
OK, I think I see what is happening now:
set_signal_mask() does indeed call sig_dispatch_pending() to do a flush when the signal mask changes. However, when the sigq is empty, sig_dispatch_pending() just returns! See:
sig_dispatch_pending (bool fast) { -if (exit_state || &_my_tls == _sig_tls || !sigq.start.next) +if (exit_state || &_my_tls == _sig_tls)
I always wondered if that "optimization" was right and now I see that it is obviously racy. I've removed it from the source.
Not until I ran the test suite, waited five minutes and saw an error. Attaching gdb to the running process shows another problem. I'll check in a fix for this, too.
-- Paul
-- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |