(defun sigint-%break (format-string &rest format-arguments)
(flet ((break-it ()
(apply #'%break 'sigint format-string format-arguments)))
- (let ((done-p nil))
- (loop while (not done-p)
- do
- (setq done-p t)
- ;; what if I type interrupt-thread at the debugger?
- (handler-case
- (sb!thread:interrupt-thread (sb!thread::foreground-thread)
- #'break-it)
- (sb!thread:interrupt-thread-error ()
- (setq done-p nil)))))))
+ (sb!thread:interrupt-thread (sb!thread::foreground-thread) #'break-it)))
(eval-when (:compile-toplevel :execute)
(sb!xc:defmacro define-signal-handler (name
(with-test (:name (:thread-start :dynamic-values-and-gc))
(let ((gc-thread (sb-thread:make-thread (lambda ()
- (loop (sleep (random 0.01))
+ (loop (sleep (random 0.2))
(sb-ext:gc :full t))))))
(wait-for-threads
- (loop for i below 30000000
+ (loop for i below 3000
when (zerop (mod i 30))
- do (princ ".") (force-output)
+ do (princ ".")
collect
- (let ((*a* (lambda ()))
- (*b* (lambda ()))
- (*c* (lambda ()))
- (*d* (lambda ()))
- (*e* (lambda ()))
- (*f* (lambda ()))
- (*g* (lambda ()))
- (*h* (lambda ())))
- (declare (special *a* *b* *c* *d* *e* *f* *g* *h*))
- (sb-thread:make-thread (lambda ()
- (functionp *a*)
- (functionp *b*)
- (functionp *c*)
- (functionp *d*)
- (functionp *e*)
- (functionp *f*)
- (functionp *g*)
- (functionp *h*))))))
+ (let ((*x* (lambda ())))
+ (declare (special *x*))
+ (sb-thread:make-thread (lambda () (functionp *x*))))))
(sb-thread:terminate-thread gc-thread)
(terpri)))
;;; 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".)
-"0.9.5.43"
+"0.9.5.44"