~ chicken-core (chicken-5) 39ba4406e8633c78969237b45a34856cec60fbf8


commit 39ba4406e8633c78969237b45a34856cec60fbf8
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Mon Nov 15 11:24:36 2010 -0500
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Mon Nov 15 11:24:36 2010 -0500

    when scheduler detects thread on fdlist that is not blocked for I/O, then just unblock it and let things be

diff --git a/scheduler.scm b/scheduler.scm
index 90e75e5a..1f8475cc 100644
--- a/scheduler.scm
+++ b/scheduler.scm
@@ -448,8 +448,12 @@ EOF
 					  (dbg t " unblocked by timeout")
 					  (loop2 (cdr threads) keep))
 					 ((not (pair? p)) ; not blocked for I/O?
-					  (panic 
-					   "##sys#unblock-threads-for-i/o: thread on fd-list is not blocked for I/O"))
+					  ;; thread on fd-list is not blocked for I/O - this
+					  ;; is incorrect but will be ignored, just let it run
+					  (when (##sys#slot t 4) ; also blocked for timeout?
+					    (##sys#remove-from-timeout-list t))
+					  (##sys#thread-basic-unblock! t) 
+					  (loop2 (cdr threads) keep))
 					 ((not (eq? fd (car p)))
 					  (panic
 					   "##sys#unblock-threads-for-i/o: thread on fd-list has wrong FD"))
Trap