From 843211e0a54b051ecec5d5fbbf6afa27dfa5fd81 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Wed, 18 Jul 2007 09:27:54 +0000 Subject: [PATCH] wakeUpSleepingThreads: fix off by one The symptom of this bug is after the time of a threadDelay has expired, the RTS does a whole slew of extra select() calls. This should help with #1523, but it's not the whole story. --- rts/posix/Select.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rts/posix/Select.c b/rts/posix/Select.c index 57599bc..fb7f38d 100644 --- a/rts/posix/Select.c +++ b/rts/posix/Select.c @@ -61,7 +61,7 @@ wakeUpSleepingThreads(lnat ticks) rtsBool flag = rtsFalse; while (sleeping_queue != END_TSO_QUEUE && - (int)(ticks - sleeping_queue->block_info.target) > 0) { + (int)(ticks - sleeping_queue->block_info.target) >= 0) { tso = sleeping_queue; sleeping_queue = tso->link; tso->why_blocked = NotBlocked; -- 1.7.10.4