* The variable current_control_stack_pointer is no longer valid
on threaded targets. Substitute thread_control_stack_size, which
is valid on all targets, fixing alien.impure.lisp.
* Some dynamic-extent tests currently fail on threaded PPC.
Updated :fails-on information in dynamic-extent.impure.lisp.
* Test (:timer :parallel-unschedule) locked up my linux/ppc box
when running. Disabled, fixing timer.impure.lisp. Interestingly,
while the lockup in question killed the keyboard and the mouse,
briefly pressing the power button caused backlogged events to be
processed, and repeatedly pressing the power button eventually
unlocked the system completely.
* Test (:interrupt-thread :interrupt-consing-child :again) uses
sb-kernel:*pseudo-atomic-bits*, which is an x86oid-only symbol
(other ports use various parts of reg_ALLOC instead). Disabled the
test on non-x86oid ports, fixing threads.impure.lisp.
;;; In sbcl-0.6.10, Douglas Brebner reported that (SETF EXTERN-ALIEN)
;;; was messed up so badly that trying to execute expressions like
;;; this signalled an error.
;;; In sbcl-0.6.10, Douglas Brebner reported that (SETF EXTERN-ALIEN)
;;; was messed up so badly that trying to execute expressions like
;;; this signalled an error.
-(setf (sb-alien:extern-alien "current_control_stack_pointer" sb-alien:unsigned)
- (sb-alien:extern-alien "current_control_stack_pointer" sb-alien:unsigned))
+(setf (sb-alien:extern-alien "thread_control_stack_size" sb-alien:unsigned)
+ (sb-alien:extern-alien "thread_control_stack_size" sb-alien:unsigned))
;;; bug 133, fixed in 0.7.0.5: Somewhere in 0.pre7.*, C void returns
;;; were broken ("unable to use values types here") when
;;; bug 133, fixed in 0.7.0.5: Somewhere in 0.pre7.*, C void returns
;;; were broken ("unable to use values types here") when
(setf (gethash 5 *table*) 13)
(gethash 5 *table*))
(setf (gethash 5 *table*) 13)
(gethash 5 *table*))
-(with-test (:name (:no-consing :hash-tables))
+;; This fails on threaded PPC because the hash-table implementation
+;; uses recursive system spinlocks, which cons (see below for test
+;; (:no-consing :spinlock), which also fails on threaded PPC).
+(with-test (:name (:no-consing :hash-tables) :fails-on (and :ppc :sb-thread))
(assert-no-consing (test-hash-table)))
;;; with-spinlock and with-mutex should use DX and not cons
(assert-no-consing (test-hash-table)))
;;; with-spinlock and with-mutex should use DX and not cons
(true *mutex*)))
#+sb-thread
(true *mutex*)))
#+sb-thread
-(with-test (:name (:no-consing :mutex))
+(with-test (:name (:no-consing :mutex) :fails-on :ppc)
(assert-no-consing (test-mutex)))
#+sb-thread
(assert-no-consing (test-mutex)))
#+sb-thread
-(with-test (:name (:no-consing :spinlock))
+(with-test (:name (:no-consing :spinlock) :fails-on :ppc)
(assert-no-consing (test-spinlock)))
\f
(assert-no-consing (test-spinlock)))
\f
(format t "~&multi interrupt test done~%")
(format t "~&multi interrupt test done~%")
+#+(or x86 x86-64) ;; x86oid-only, see internal commentary.
(with-test (:name (:interrupt-thread :interrupt-consing-child :again))
#+darwin
(error "Hangs on Darwin.")
(with-test (:name (:interrupt-thread :interrupt-consing-child :again))
#+darwin
(error "Hangs on Darwin.")
;;; running out of stack (due to repeating timers being rescheduled
;;; before they ran) and dying threads were open interrupts.
#+sb-thread
;;; running out of stack (due to repeating timers being rescheduled
;;; before they ran) and dying threads were open interrupts.
#+sb-thread
-(with-test (:name (:timer :parallel-unschedule))
+(with-test (:name (:timer :parallel-unschedule) :fails-on :ppc)
#+darwin
(error "Prone to hang on Darwin due to interrupt issues.")
#+darwin
(error "Prone to hang on Darwin due to interrupt issues.")
+ #+ppc
+ (error "Prone to hang the host on linux/ppc for unknown reasons.")
(let ((timer (sb-ext:make-timer (lambda () 42) :name "parallel schedulers"))
(other nil))
(flet ((flop ()
(let ((timer (sb-ext:make-timer (lambda () 42) :name "parallel schedulers"))
(other nil))
(flet ((flop ()
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)