I have a test case to reproduce it quite reliably:
;; this is iota from alexandria (defun iota (n &key (start 0) (step 1)) (declare (type (integer 0) n) (number start step)) (loop repeat n for i = (+ start (- step step)) then (+ i step) collect i))
(defun test-iota (n) (flet ((thread-fn () (loop (sleep 0.01) (make-array 100 :initial-contents (iota 100))))) (loop :repeat n :collect (sb-thread:make-thread #'thread-fn)))))
First, run (test-iota 10), then in repl:
(loop :repeat 100 :do (room))
What's interesting is that it does not crash without ":initial-contents (iota 100)" in make-array in thread-fn.
Karol
I have a test case to reproduce it quite reliably:
;; this is iota from alexandria
(defun iota (n &key (start 0) (step 1))
(declare (type (integer 0) n) (number start step))
(loop repeat n
for i = (+ start (- step step)) then (+ i step)
collect i))
(defun test-iota (n)
(make-array 100 :initial-contents (iota 100))))) make-thread #'thread-fn)))))
(flet ((thread-fn ()
(loop (sleep 0.01)
(loop :repeat n
:collect (sb-thread:
First, run (test-iota 10), then in repl:
(loop :repeat 100 :do (room))
What's interesting is that it does not crash without ":initial-contents (iota 100)" in make-array in thread-fn.
Karol