X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=tests%2Ftest-util.lisp;h=d6246bfa9411c17bf8fc07f228408dcb05ca801b;hb=ccd2a1d4ab60a9539472df45fc4f9ec7b7fdc7b7;hp=43bafa04c4f0d943472deb3e0fe3788ce6b79761;hpb=69990bc42314706e9d646ddd8f6b911f46d0052c;p=sbcl.git diff --git a/tests/test-util.lisp b/tests/test-util.lisp index 43bafa0..d6246bf 100644 --- a/tests/test-util.lisp +++ b/tests/test-util.lisp @@ -39,7 +39,7 @@ (defmacro with-test ((&key fails-on broken-on skipped-on name) &body body) (let ((block-name (gensym)) - (threads (gensym "THREADS"))) + #+sb-thread (threads (gensym "THREADS"))) `(progn (start-test) (cond @@ -69,10 +69,15 @@ (setf ,threads (union (union *threads-to-kill* *threads-to-join*) ,threads)) + #+(and sb-safepoint-strictly (not win32)) + (dolist (thread (sb-thread:list-all-threads)) + (when (typep thread 'sb-thread:signal-handling-thread) + (ignore-errors (sb-thread:join-thread thread)))) (dolist (thread (sb-thread:list-all-threads)) (unless (or (not (sb-thread:thread-alive-p thread)) (eql thread sb-thread:*current-thread*) - (member thread ,threads)) + (member thread ,threads) + (sb-thread:thread-emphemeral-p thread)) (setf any-leftover thread) (ignore-errors (sb-thread:terminate-thread thread)))) (when any-leftover