From 83834110a0279c228c5c7e232a5d7ce01dd04d3e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 6 Jun 2016 16:18:53 +0200 Subject: [PATCH] Fix condition in select which results in busy loop. The check for current timestamp > start timestamp has an unwelcome side effect: The loop is not left as long as the current timestamp hasn't been incremented. This leads to busy loops of about one tick (10 to 16 ms per MSDN). This fixes https://cygwin.com/ml/cygwin/2016-05/msg00327.html Signed-off-by: Corinna Vinschen --- winsup/cygwin/select.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index c63eaeff1..69391d8e7 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -211,7 +211,7 @@ select (int maxfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, { select_printf ("recalculating us"); LONGLONG now = gtod.usecs (); - if (now > (start_time + us)) + if (now >= (start_time + us)) { select_printf ("timed out after verification"); /* Set descriptor bits to zero per POSIX. */