cygwin 3.6.0: No signals received after swapcontext() is used

Christian Franke Christian.Franke@t-online.de
Sat Mar 8 11:07:32 GMT 2025


Corinna Vinschen via Cygwin wrote:
> On Mar  6 13:24, Christian Franke via Cygwin wrote:
>> Found because 'stress-ng --context 1 ...' always hangs.
>>
>> The attached testcase uses the example from Linux swapcontext(3) to call the
>> context functions.
> Just tested with 3.5.3 and it doesn't work there, either.
>
> So yeah, it's a bug, but it's not a 3.6 regression and of minor
> importance.  We can look into that for 3.7.
>

This is possibly a regression introduced in 3.0.6. A comparison of 
strace outputs of signal handling before and after the swapcontext() 
calls reveals that 'incyg' is incorrectly set after swapcontext(). A 
revert of
   https://cygwin.com/git/?p=newlib-cygwin.git;a=commit;h=c5f9eed1
fixes both the testcase and 'stress-ng --context ...'.

No patch provided because I'm not sure how to handle the (at least) two 
other use cases of setcontext() correctly:
- the call from _cygtls::call_signal_handler(), and
- a call from a signal handler.

-- 
Regards,
Christian



More information about the Cygwin mailing list