X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-thread.lisp;h=3493cfce2f4897fa7a034edb9a02575174f34a64;hb=bf77540f53dbb693d87b9ff4fbfd09d3de7fb2d9;hp=c534ca01fb2e94e0b61973ecc1322602059ac56a;hpb=70c6facc145eaf5ca368528b04df63f730746b1f;p=sbcl.git diff --git a/src/code/target-thread.lisp b/src/code/target-thread.lisp index c534ca0..3493cfc 100644 --- a/src/code/target-thread.lisp +++ b/src/code/target-thread.lisp @@ -266,8 +266,13 @@ directly." #!-sb-thread (ignore waitp)) (unless new-owner (setq new-owner *current-thread*)) - (when (eql new-owner (mutex-%owner mutex)) - (error "Recursive lock attempt ~S." mutex)) + (let ((old (mutex-%owner mutex))) + (when (eq new-owner old) + (error "Recursive lock attempt ~S." mutex)) + #!-sb-thread + (if old + (error "Strange deadlock on ~S in an unithreaded build?" mutex) + (setf (mutex-%owner mutex) new-owner))) #!+sb-thread (progn ;; FIXME: Lutexes do not currently support deadlines, as at least