Fix test-case for bug-511072 in packages.impure.lisp
authorStas Boukarev <stassats@gmail.com>
Wed, 15 Aug 2012 18:07:42 +0000 (22:07 +0400)
committerStas Boukarev <stassats@gmail.com>
Wed, 15 Aug 2012 18:09:16 +0000 (22:09 +0400)
It was creating an error in an additional thread and didn't handle it
properly, which caused SBCL to bail out.
Reported by Mirko Vukovic.

tests/packages.impure.lisp

index 96431a5..82ef917 100644 (file)
@@ -292,11 +292,15 @@ if a restart was invoked."
 ;;; MAKE-PACKAGE error in another thread blocking FIND-PACKAGE & FIND-SYMBOL
 (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)))