PowerPC safepoints
[sbcl.git] / tests / threads.impure.lisp
index 0e3848b..6eb04d4 100644 (file)
   (sb-ext:gc)
   (incf *n-gcs-done*))
 
+#+(or x86 x86-64) ;the only platforms with a *binding-stack-pointer* variable
 (defun exercise-binding ()
   (loop
    (let ((*x* (make-something-big)))
      (wait-for-gc)
      (decf sb-vm::*binding-stack-pointer* binding-pointer-delta))))
 
+#+(or x86 x86-64) ;the only platforms with a *binding-stack-pointer* variable
 (with-test (:name (:binding-stack-gc-safety))
   (let (threads)
     (unwind-protect
 (with-test (:name (:synchronized-hash-table))
   (let* ((hash (make-hash-table :synchronized t))
          (*errors* nil)
-         (threads (list (make-kill-thread
+         (threads (list (make-join-thread
                          (lambda ()
                            (catch 'done
                              (handler-bind ((serious-condition 'oops))
                                  ;;(princ "1") (force-output)
                                  (setf (gethash (random 100) hash) 'h)))))
                          :name "writer")
-                        (make-kill-thread
+                        (make-join-thread
                          (lambda ()
                            (catch 'done
                              (handler-bind ((serious-condition 'oops))
                                  ;;(princ "2") (force-output)
                                  (remhash (random 100) hash)))))
                          :name "reader")
-                        (make-kill-thread
+                        (make-join-thread
                          (lambda ()
                            (catch 'done
                              (handler-bind ((serious-condition 'oops))
           two (make-box)
           three (make-box))))
 
-(with-test (:name (:funcallable-instances))
+;;; PowerPC safepoint builds occasionally hang or busy-loop (or
+;;; sometimes run out of memory) in the following test.  For developers
+;;; interested in debugging this combination of features, it might be
+;;; fruitful to concentrate their efforts around this test...
+
+(with-test (:name (:funcallable-instances)
+                  :skipped-on '(and :sb-safepoint
+                                    (not :c-stack-is-control-stack)))
   ;; the funcallable-instance implementation used not to be threadsafe
   ;; against setting the funcallable-instance function to a closure
   ;; (because the code and lexenv were set separately).