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>

Reply via email to