~ chicken-core (chicken-5) 49e6c4b241424b45c6a0cb8967b7c46765e66229


commit 49e6c4b241424b45c6a0cb8967b7c46765e66229
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Mon Jan 24 19:29:38 2011 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Mon Jan 24 19:29:38 2011 +0100

    no panic when fd-list entry has wrong fd registered (reported by zbigniew)

diff --git a/scheduler.scm b/scheduler.scm
index 045c3488..a3efc67c 100644
--- a/scheduler.scm
+++ b/scheduler.scm
@@ -455,10 +455,13 @@ EOF
 					    (##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"))
-					 ((fdset-test inf outf (cdr p))
+					 ((or (not (eq? fd (car p)))
+					      ;; thread on fd-list has incorrect
+					      ;; file-descriptor registered. 
+					      ;; We just assume this is the right one and
+					      ;; unblock.
+					      ;; XXX Needs to be investigated...
+					      (fdset-test inf outf (cdr p)))
 					  (when (##sys#slot t 4) ; also blocked for timeout?
 					    (##sys#remove-from-timeout-list t))
 					  (##sys#thread-basic-unblock! t) 
Trap