Index: /trunk/source/level-1/linux-files.lisp
===================================================================
--- /trunk/source/level-1/linux-files.lisp	(revision 13978)
+++ /trunk/source/level-1/linux-files.lisp	(revision 13979)
@@ -181,5 +181,11 @@
 
 (defun wait-for-signal (s duration)
-  (or (%timed-wait-for-signal s 0 0)
+  (or (multiple-value-bind (result err)
+          (%timed-wait-for-signal s 0 0)
+        (or result
+            (if (or (eql err #$EINTR)
+                    (eql err #-windows-target #$ETIMEDOUT #+windows-target #$WAIT_TIMEOUT))
+              nil
+              (error "Error waiting for signal ~d: ~a." s (%strerror err)))))
       (with-process-whostate ("signal wait")
         (let* ((now (get-internal-real-time))
@@ -192,12 +198,9 @@
                 (when success
                   (return t))
-                (if (or (eql err #$ETIMEDOUT)
+                (if (or (eql err #-windows-target #$ETIMEDOUT #+windows-target #$WAIT_TIMEOUT)
                         (>= (setq now (get-internal-real-time)) stop))
                   (return nil)
                   (unless (eql err #$EINTR)
                     (error "Error waiting for signal ~d: ~a." s (%strerror err))))
-                (when (or (not (eql err #$EINTR))
-                          (>= (setq now (get-internal-real-time)) stop))
-                  (return nil))
                 (unless (zerop duration)
                   (let* ((diff (- stop now)))
