16b9767bc3e45ea20f68c6a539762f17bc44d384
[sbcl.git] / tests / signals.impure.lisp
1 ;;;; Tests for async signal safety.
2
3 ;;;; This software is part of the SBCL system. See the README file for
4 ;;;; more information.
5 ;;;;
6 ;;;; While most of SBCL is derived from the CMU CL system, the test
7 ;;;; files (like this one) were written from scratch after the fork
8 ;;;; from CMU CL.
9 ;;;
10 ;;;; This software is in the public domain and is provided with
11 ;;;; absoluely no warranty. See the COPYING and CREDITS files for
12 ;;;; more information.
13
14 (use-package :test-util)
15
16 (with-test (:name (:async-unwind :specials))
17   (let ((*x0* nil) (*x1* nil) (*x2* nil) (*x3* nil) (*x4* nil))
18     (declare (special *x0* *x1* *x2* *x3* *x4*))
19     (loop repeat 10 do
20           (loop repeat 10 do
21                 (catch 'again
22                   (sb-ext:schedule-timer (sb-ext:make-timer
23                                           (lambda ()
24                                             (throw 'again nil)))
25                                          (random 0.1))
26                   (loop
27                    (let ((*x0* (cons nil nil)) (*x1* (cons nil nil))
28                          (*x2* (cons nil nil)) (*x3* (cons nil nil))
29                          (*x4* (cons nil nil)))
30                      (declare (special *x0* *x1* *x2* *x3* *x4*)))))
31                 (when (not (and (null *x0*) (null *x1*) (null *x2*) (null *x3*)
32                                 (null *x4*)))
33                   (format t "~S ~S ~S ~S ~S~%" *x0* *x1* *x2* *x3* *x4*)
34                   (assert nil)))
35           (princ '*)
36           (force-output))
37     (terpri)))