Christopher Faylor wrote:
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.
OK, great. Thanks.
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.
Where can I find this patch? Could you post it or is there somewhere I should go to find it? I have a feeling I've probably run into this myself during my stress tests.
-- 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/