On Mon, 18 Nov 2024 16:34:55 +0100 Corinna Vinschen wrote: > Hi Takashi, > > thanks for looking into this problem. > > On Nov 18 00:48, Takashi Yano wrote: > > @@ -640,6 +641,16 @@ sigwait_common (const sigset_t *set, siginfo_t *info, > > PLARGE_INTEGER waittime) > > } > > break; > > case WAIT_TIMEOUT: > > + _my_tls.lock (); > > + if (_my_tls.sigwait_mask == 0) > > + { > > + /* sigpacket::process() already started. */ > > + waittime = cw_infinite; > > cw_infinite? Shouldn't this situation lead to cygwait returning > immediately with WAIT_SIGNALLED? The theory would explain to me > that the timeout doesn't matter in this case, but given that the > actual, configured timeout already occured, wouldn't it be > safer to set timeout to 0? Just in case?
The signal will arrive very soon definitely, so I think cw_infinite can be used, I think. However, handling it as if WAIT_SIGNALED is returned sounds more reasonable, so I'll submit v2 patch. Could you please have a look? -- Takashi Yano <takashi.y...@nifty.ne.jp>