Fix test-case for bug-511072 in packages.impure.lisp
[sbcl.git] / tests / packages.impure.lisp
index 3b5273e..82ef917 100644 (file)
@@ -290,14 +290,17 @@ if a restart was invoked."
                   :good)))))
 
 ;;; MAKE-PACKAGE error in another thread blocking FIND-PACKAGE & FIND-SYMBOL
-#+sb-thread
-(with-test (:name :bug-511072)
+(with-test (:name :bug-511072 :skipped-on '(not :sb-thread))
   (let* ((p (make-package :bug-511072))
-         (sem (sb-thread:make-semaphore))
+         (sem1 (sb-thread:make-semaphore))
+         (sem2 (sb-thread:make-semaphore))
          (t2 (sb-thread:make-thread (lambda ()
                                       (handler-bind ((error (lambda (c)
-                                                              (sb-thread:signal-semaphore sem)
-                                                              (signal c))))
+                                                              (sb-thread:signal-semaphore sem1)
+                                                              (sb-thread:wait-on-semaphore sem2)
+                                                              (abort c))))
                                         (make-package :bug-511072))))))
-    (sb-thread:wait-on-semaphore sem)
-    (assert (eq 'cons (read-from-string "CL:CONS")))))
+    (sb-thread:wait-on-semaphore sem1)
+    (with-timeout 10
+      (assert (eq 'cons (read-from-string "CL:CONS"))))
+    (sb-thread:signal-semaphore sem2)))