Thread test hangs on Darwin
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
New
|
Undecided
|
Unassigned |
Bug Description
The bug-1180102.impure.lisp test hangs occasionally on Darwin.
Darwin 19.6.0 x86_64 - macOS 10.15.7 - Catalina
Not seen on Linux x86_64 or Linux ARM64.
Found with
sbcl-2.
sbcl-2.
Since it has appeared only occasionally when running the test suite, let's massage it a bit with:
i=0;
while true; do
echo -e "\n$(date +%Y%m%d-%H%M%S) - run $(( ++i ))";
../src/
--no-sysinit --no-userinit --noprint --disable-debugger --load impure-runner \
--eval '(RUN-TESTS::RUN "bug-1180102.impure.lisp" (quote RUN-TESTS:
sleep 2;
done
Result:
sbcl-2.
20240419-110819 - run 1
// Running bug-1180102.impure.lisp in COMPILE evaluator mode
::: Running (:TIMER :DISPATCH-THREAD :MAKE-THREAD :BUG-1180102)
::: Success (:TIMER :DISPATCH-THREAD :MAKE-THREAD :BUG-1180102)
::: Running (:MAKE-THREAD :INTERRUPT-WITH :MAKE-THREAD :BUG-1180102)
; .......
::: Success (:MAKE-THREAD :INTERRUPT-WITH :MAKE-THREAD :BUG-1180102)
20240419-110827 - run 2
// Running bug-1180102.impure.lisp in COMPILE evaluator mode
::: Running (:TIMER :DISPATCH-THREAD :MAKE-THREAD :BUG-1180102)
::: Success (:TIMER :DISPATCH-THREAD :MAKE-THREAD :BUG-1180102)
::: Running (:MAKE-THREAD :INTERRUPT-WITH :MAKE-THREAD :BUG-1180102)
; .......
[Hangs here]
lldb -p 82930
(lldb) process attach --pid 82930
Process 82930 stopped
* thread #1, queue = 'com.apple.
frame #0: 0x00007fff6bd0854e libsystem_
libsystem_
-> 0x7fff6bd0854e <+10>: jae 0x7fff6bd08558 ; <+20>
0x7fff6bd08550 <+12>: movq %rax, %rdi
0x7fff6bd08553 <+15>: jmp 0x7fff6bd07619 ; cerror_nocancel
0x7fff6bd08558 <+20>: retq
Executable module set to "/Users/
Architecture set to: x86_64h-
(lldb)
(lldb) thread list
Process 82930 stopped
* thread #1: tid = 0x271b19b, 0x00007fff6bd0854e libsystem_
thread #2: tid = 0x271b19d, 0x00007fff6bd09872 libsystem_
thread #3: tid = 0x272513a, 0x00007fff6bd0854e libsystem_
thread #4: tid = 0x272513b, 0x00007fff6bd06e26 libsystem_
(lldb)
(lldb) thread backtrace 1
* thread #1, queue = 'com.apple.
* frame #0: 0x00007fff6bd0854e libsystem_
frame #1: 0x00007fff6bdbc9c3 libsystem_
frame #2: 0x00007fff6bdcad56 libsystem_
frame #3: 0x0000000054a499db
frame #4: 0x0000000054881dd1
frame #5: 0x0000000054623e89
frame #6: 0x0000000054623ca8
frame #7: 0x0000000054881a86
frame #8: 0x000000005521534e
frame #9: 0x000000005520247f
frame #10: 0x00000000547abeeb
frame #11: 0x0000000054865b10
frame #12: 0x000000005488663c
frame #13: 0x0000000054885f7f
frame #14: 0x000000005481a84b
frame #15: 0x00000000548858b1
frame #16: 0x0000000054727d6a
frame #17: 0x0000000054886b07
frame #18: 0x00000000547278dc
frame #19: 0x0000000055213206
frame #20: 0x0000000055214611
frame #21: 0x00000000547abeeb
frame #22: 0x000000005464fb92
frame #23: 0x0000000054a102ae
frame #24: 0x0000000054866717
frame #25: 0x0000000054b5fa04
frame #26: 0x0000000054b5f80b
frame #27: 0x0000000054b5f638
frame #28: 0x000000000e8e859d sbcl`call_
frame #29: 0x000000000e8cdb00 sbcl`create_
frame #30: 0x000000000e8c939d sbcl`initialize
frame #31: 0x000000000e8bd909 sbcl`main(
frame #32: 0x00007fff6bbc5cc9 libdyld.dylib`start + 1
frame #33: 0x00007fff6bbc5cc9 libdyld.dylib`start + 1
(lldb)
(lldb) thread backtrace 2
thread #2, name = 'finalizer'
frame #0: 0x00007fff6bd09872 libsystem_
frame #1: 0x00007fff6bdca425 libsystem_
frame #2: 0x000000000e8b433c sbcl`finalizer_
frame #3: 0x0000000054872150
frame #4: 0x0000000054880610
frame #5: 0x0000000054880d65
frame #6: 0x00000000548801d0
frame #7: 0x0000000054880f2b
frame #8: 0x000000005487ffa9
frame #9: 0x000000000e8e859d sbcl`call_
frame #10: 0x000000000e8b2c48 sbcl`funcall1(
frame #11: 0x000000000e8ce06e sbcl`new_
frame #12: 0x000000000e8e851d sbcl`funcall1_
frame #13: 0x00007fff6bdca109 libsystem_
frame #14: 0x00007fff6bdc5b8b libsystem_
(lldb)
(lldb) thread backtrace 3
thread #3
frame #0: 0x00007fff6bd0854e libsystem_
frame #1: 0x00007fff6bdbc9c3 libsystem_
frame #2: 0x00007fff6bdc9d80 libsystem_
frame #3: 0x000000000e8ce871 sbcl`gc_
frame #4: 0x00000000547b7315
frame #5: 0x0000000054faf977
frame #6: 0x0000000054faf75d
frame #7: 0x0000000054faf53c
frame #8: 0x000000000e8e859d sbcl`call_
frame #9: 0x000000000e8b2c48 sbcl`funcall1(
frame #10: 0x000000000e8b6959 sbcl`maybe_
frame #11: 0x000000000e8bb949 sbcl`interrupt_
frame #12: 0x000000000e8bcbfa sbcl`low_
frame #13: 0x00007fff6bdbe5fd libsystem_
frame #14: 0x0000000054a4719a
frame #15: 0x0000000054880723
frame #16: 0x0000000054880d65
frame #17: 0x00000000548801d0
frame #18: 0x0000000054880f2b
frame #19: 0x000000005487ffa9
frame #20: 0x000000000e8e859d sbcl`call_
frame #21: 0x000000000e8b2c48 sbcl`funcall1(
frame #22: 0x000000000e8ce06e sbcl`new_
frame #23: 0x000000000e8e851d sbcl`funcall1_
frame #24: 0x00007fff6bdca109 libsystem_
frame #25: 0x00007fff6bdc5b8b libsystem_
(lldb)
(lldb) thread backtrace 4
thread #4
frame #0: 0x00007fff6bd06e26 libsystem_
frame #1: 0x00007fff6bb6caed libdispatch.
frame #2: 0x00007fff6bb6cfbf libdispatch.
frame #3: 0x000000000e8cd937 sbcl`thread_
frame #4: 0x000000000e8bbc70 sbcl`sig_
frame #5: 0x000000000e8bcbfa sbcl`low_
frame #6: 0x00007fff6bdbe5fd libsystem_
frame #7: 0x00007fff6bdc9d6e libsystem_
frame #8: 0x0000000054a4a26e
frame #9: 0x000000005476bf42
frame #10: 0x0000000054623e89
frame #11: 0x0000000054623ca8
frame #12: 0x000000005476beaf
frame #13: 0x0000000054880610
frame #14: 0x0000000054880d65
frame #15: 0x00000000548801d0
frame #16: 0x0000000054880f2b
frame #17: 0x000000005487ffa9
frame #18: 0x000000000e8e859d sbcl`call_
frame #19: 0x000000000e8b2c48 sbcl`funcall1(
frame #20: 0x000000000e8ce06e sbcl`new_
frame #21: 0x000000000e8e851d sbcl`funcall1_
frame #22: 0x00007fff6bdca109 libsystem_
frame #23: 0x00007fff6bdc5b8b libsystem_
(lldb)
-------
Another try with newer SBCL:
sbcl-2.
20240419-233729 - run 73
// Running bug-1180102.impure.lisp in COMPILE evaluator mode
::: Running (:TIMER :DISPATCH-THREAD :MAKE-THREAD :BUG-1180102)
::: Success (:TIMER :DISPATCH-THREAD :MAKE-THREAD :BUG-1180102)
::: Running (:MAKE-THREAD :INTERRUPT-WITH :MAKE-THREAD :BUG-1180102)
; .......
::: Success (:MAKE-THREAD :INTERRUPT-WITH :MAKE-THREAD :BUG-1180102)
20240419-233737 - run 74
// Running bug-1180102.impure.lisp in COMPILE evaluator mode
::: Running (:TIMER :DISPATCH-THREAD :MAKE-THREAD :BUG-1180102)
::: Success (:TIMER :DISPATCH-THREAD :MAKE-THREAD :BUG-1180102)
::: Running (:MAKE-THREAD :INTERRUPT-WITH :MAKE-THREAD :BUG-1180102)
; .......
[Hangs here]
(lldb) process attach --pid 11996
Process 11996 stopped
* thread #1, queue = 'com.apple.
frame #0: 0x00007fff690da54e libsystem_
libsystem_
-> 0x7fff690da54e <+10>: jae 0x7fff690da558 ; <+20>
0x7fff690da550 <+12>: movq %rax, %rdi
0x7fff690da553 <+15>: jmp 0x7fff690d9619 ; cerror_nocancel
0x7fff690da558 <+20>: retq
Executable module set to "/Users/
Architecture set to: x86_64h-
(lldb)
(lldb) thread list
Process 11996 stopped
* thread #1: tid = 0x3ab6a4, 0x00007fff690da54e libsystem_
thread #2: tid = 0x3ab6a6, 0x00007fff690db872 libsystem_
thread #3: tid = 0x3b0ddb, 0x00007fff690d8e26 libsystem_
thread #4: tid = 0x3b0ddc, 0x00007fff690da54e libsystem_
thread #5: tid = 0x3b0ddd, 0x00007fff690d8e26 libsystem_
(lldb)
(lldb) thread backtrace 1
* thread #1, queue = 'com.apple.
* frame #0: 0x00007fff690da54e libsystem_
frame #1: 0x00007fff6918e9c3 libsystem_
frame #2: 0x00007fff6919cd56 libsystem_
frame #3: 0x0000000054a4925b
frame #4: 0x0000000054881991
frame #5: 0x0000000054623e39
frame #6: 0x0000000054623c58
frame #7: 0x0000000054881646
frame #8: 0x00000000552142df
frame #9: 0x000000005520146b
frame #10: 0x00000000547abcab
frame #11: 0x0000000054865730
frame #12: 0x0000000054886194
frame #13: 0x0000000054885aff
frame #14: 0x000000005481a4e7
frame #15: 0x0000000054885445
frame #16: 0x0000000054727b12
frame #17: 0x000000005488664f
frame #18: 0x000000005472768c
frame #19: 0x0000000055212216
frame #20: 0x00000000552135f5
frame #21: 0x00000000547abcab
frame #22: 0x000000005464fac2
frame #23: 0x0000000054a0fbe2
frame #24: 0x000000005486631b
frame #25: 0x0000000054b5efc4
frame #26: 0x0000000054b5edcb
frame #27: 0x0000000054b5ebf8
frame #28: 0x0000000008b8259d sbcl`call_
frame #29: 0x0000000008b671c0 sbcl`create_
frame #30: 0x0000000008b62a5d sbcl`initialize
frame #31: 0x0000000008b56ff9 sbcl`main(
frame #32: 0x00007fff68f97cc9 libdyld.dylib`start + 1
(lldb)
(lldb) thread backtrace 2
thread #2, name = 'finalizer'
frame #0: 0x00007fff690db872 libsystem_
frame #1: 0x00007fff6919c425 libsystem_
frame #2: 0x0000000008b4da2c sbcl`finalizer_
frame #3: 0x0000000054871d20
frame #4: 0x00000000548801e0
frame #5: 0x0000000054880935
frame #6: 0x000000005487fd98
frame #7: 0x0000000054880afb
frame #8: 0x000000005487fb79
frame #9: 0x0000000008b8259d sbcl`call_
frame #10: 0x0000000008b4c338 sbcl`funcall1(
frame #11: 0x0000000008b6772e sbcl`new_
frame #12: 0x0000000008b8251d sbcl`funcall1_
frame #13: 0x00007fff6919c109 libsystem_
frame #14: 0x00007fff69197b8b libsystem_
(lldb)
(lldb) thread backtrace 3
thread #3
frame #0: 0x00007fff690d8e26 libsystem_
frame #1: 0x00007fff68f3eaed libdispatch.
frame #2: 0x00007fff68f3efbf libdispatch.
frame #3: 0x0000000008b66ff7 sbcl`thread_
frame #4: 0x0000000008b55360 sbcl`sig_
frame #5: 0x0000000008b562ea sbcl`low_
frame #6: 0x00007fff691905fd libsystem_
frame #7: 0x00007fff6919be90 libsystem_
frame #8: 0x0000000054a49aee
frame #9: 0x000000005476bc22
frame #10: 0x0000000054623e39
frame #11: 0x0000000054623c58
frame #12: 0x000000005476bb8f
frame #13: 0x00000000548801e0
frame #14: 0x0000000054880935
frame #15: 0x000000005487fd98
frame #16: 0x0000000054880afb
frame #17: 0x000000005487fb79
frame #18: 0x0000000008b8259d sbcl`call_
frame #19: 0x0000000008b4c338 sbcl`funcall1(
frame #20: 0x0000000008b6772e sbcl`new_
frame #21: 0x0000000008b8251d sbcl`funcall1_
frame #22: 0x00007fff6919c109 libsystem_
frame #23: 0x00007fff69197b8b libsystem_
(lldb)
(lldb) thread backtrace 4
thread #4
frame #0: 0x00007fff690da54e libsystem_
frame #1: 0x00007fff6918e9c3 libsystem_
frame #2: 0x00007fff6919bd80 libsystem_
frame #3: 0x0000000008b67f31 sbcl`gc_
frame #4: 0x00000000547b70d5
frame #5: 0x0000000054faee77
frame #6: 0x0000000054faec5d
frame #7: 0x0000000054faea3c
frame #8: 0x0000000008b8259d sbcl`call_
frame #9: 0x0000000008b4c338 sbcl`funcall1(
frame #10: 0x0000000008b50049 sbcl`maybe_
frame #11: 0x0000000008b55039 sbcl`interrupt_
frame #12: 0x0000000008b562ea sbcl`low_
frame #13: 0x00007fff691905fd libsystem_
frame #14: 0x0000000054a46a3a
frame #15: 0x00000000548802f3
frame #16: 0x0000000054880935
frame #17: 0x000000005487fd98
frame #18: 0x0000000054880afb
frame #19: 0x000000005487fb79
frame #20: 0x0000000008b8259d sbcl`call_
frame #21: 0x0000000008b4c338 sbcl`funcall1(
frame #22: 0x0000000008b6772e sbcl`new_
frame #23: 0x0000000008b8251d sbcl`funcall1_
frame #24: 0x00007fff6919c109 libsystem_
frame #25: 0x00007fff69197b8b libsystem_
(lldb)
On Linux x86_64 I stopped it after 3468 successful runs.
Doing some more runs on Linux ARM64 on a Raspberry Pi4, but it's slow.
Can add results here later.
1073 successful runs on Linux ARM64 as of now, so probably not an issue there.