X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-package.lisp;h=01ed836da5c3cce40af70b9e4f4276737a9e2447;hb=95591ed483dbb8c0846c129953acac1554f28809;hp=4fa758259181418c3145549842b8770849323cd7;hpb=30d61cc04481c081fd97c42561475bfe11209b59;p=sbcl.git diff --git a/src/code/target-package.lisp b/src/code/target-package.lisp index 4fa7582..01ed836 100644 --- a/src/code/target-package.lisp +++ b/src/code/target-package.lisp @@ -51,10 +51,15 @@ (defvar *package-lock*) (!cold-init-forms - (setf *package-lock* (sb!thread::make-spinlock :name "Package Lock"))) + (setf *package-lock* (sb!thread:make-mutex :name "Package Lock"))) (defmacro with-packages ((&key) &body forms) - `(sb!thread::with-recursive-spinlock (*package-lock*) + ;; FIXME: Since name conflicts can be signalled while holding the + ;; mutex, user code can be run leading to lock ordering problems. + ;; + ;; This used to be a spinlock, but there it can be held for a long + ;; time while the debugger waits for user input. + `(sb!thread:with-recursive-lock (*package-lock*) ,@forms)) ;;; Make a package hashtable having a prime number of entries at least