Fix nanosleep returning negative rem

Corinna Vinschen
Wed Jul 21 08:39:39 GMT 2021

Hi David,

On Jul 20 16:16, David Allsopp wrote:
> I've pushed a repro case for this to
> Originally noticed as the main CI system for OCaml has been failing
> sporadically for the test mentioned in that repo. This morning I
> tried hammering that test on my dev machine and discovered that it fails
> very frequently. No idea if that's drivers, Windows 10 updates, number of
> cores or what, but it was definitely happening, and easily.
> Drilling further, it appears that NtQueryTimer is able to return a negative
> value in the TimeRemaining field even when SignalState is false. The values
> I've seen have always been < 15ms - i.e. less than the timer resolution, so
> I wonder if there is a point at which the timer has elapsed but has not been
> signalled, but WaitForMultipleObjects returns because of the EINTR signal.
> Mildly surprising that it seems to be so reproducible.
> Anyway, a patch is attached which simply guards a negative return value. The
> test on tbi.SignalState is in theory unnecessary.

Thanks for the patch, I think your patch is fine.  However, I'd like
to dig a bit into this to see what exactly happens.  Do you have a
very simple testcase in plain C, by any chance?


More information about the Cygwin-patches mailing list