X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Frun-program.lisp;h=d223e77dfa70e20f9e787b584fcf7cca75c8c180;hb=07ab1e4811ab16f95a9a5e8d767426a0787f22c0;hp=df3e173e519ca84afc1bef6c82e66937d80ecef5;hpb=0e5d338cec4e90475ea88f6892c24c62a07ae579;p=sbcl.git diff --git a/src/code/run-program.lisp b/src/code/run-program.lisp index df3e173..d223e77 100644 --- a/src/code/run-program.lisp +++ b/src/code/run-program.lisp @@ -154,7 +154,8 @@ ;;; accesses it, that's why we need without-interrupts. (defmacro with-active-processes-lock (() &body body) #-win32 - `(sb-thread::call-with-system-mutex (lambda () ,@body) *active-processes-lock*) + `(sb-thread::with-system-mutex (*active-processes-lock* :allow-with-interrupts t) + ,@body) #+win32 `(progn ,@body)) @@ -830,9 +831,11 @@ Users Manual for details about the PROCESS structure."#-win32" (ash 1 descriptor) 0 0 0) (cond ((null result) - (error "~@" - (strerror readable/errno))) + (if (eql sb-unix:eintr readable/errno) + (return) + (error "~@" + (strerror readable/errno)))) ((zerop result) (return)))) (multiple-value-bind (count errno)