[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#39988: [3.0.1] Segfault in GC
From: |
Ludovic Courtès |
Subject: |
bug#39988: [3.0.1] Segfault in GC |
Date: |
Mon, 09 Mar 2020 10:11:59 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
Ludovic Courtès <address@hidden> skribis:
> Apparently a deadlock on ‘all_weak_tables_lock’:
I reproduced the deadlock:
--8<---------------cut here---------------start------------->8---
(gdb) thread 1
[Switching to thread 1 (Thread 0x7faee3633b80 (LWP 5809))]
#0 0x00007faee3bcb0bc in __lll_lock_wait ()
from
/gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/libpthread.so.0
(gdb) bt
#0 0x00007faee3bcb0bc in __lll_lock_wait ()
from
/gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/libpthread.so.0
#1 0x00007faee3bc4674 in pthread_mutex_lock ()
from
/gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/libpthread.so.0
#2 0x00007faee3d22a2f in scm_c_make_weak_table (k=<optimized out>,
kind=SCM_WEAK_TABLE_KIND_KEY)
at weak-table.c:505
#3 0x00007faee139814b in ?? ()
#4 0x00007faee330fd80 in ?? ()
#5 0x00007faee3d89860 in ?? ()
from
/gnu/store/s5p2yja08zcg6j56y1wfvnm6nxiyllz1-guile-next-3.0.1/lib/libguile-3.0.so.1
#6 0x00007faee330fd80 in ?? ()
#7 0x00007faee3cc46eb in scm_jit_enter_mcode (thread=0x7faee330fd80,
mcode=0x7faedb2a87f0 "I\211\314I)\304I\203\374\020\017\217", <incomplete
sequence \344>) at jit.c:5725
#8 0x00007faee3d1ff88 in vm_regular_engine (thread=0x7faed63eab30) at
vm-engine.c:374
#9 0x00007faee3d20935 in scm_call_n (proc=<optimized out>,
argv=argv@entry=0x7fff3f56ce98, nargs=nargs@entry=1)
at vm.c:1600
#10 0x00007faee3c9d1e7 in scm_primitive_eval (exp=<optimized out>) at eval.c:671
#11 0x00007faee3cc63ab in scm_primitive_load (filename=<optimized out>) at
load.c:131
#12 0x00007faee3d1f4fc in vm_regular_engine (thread=0x7faee330fd80) at
vm-engine.c:972
#13 0x00007faee3d20935 in scm_call_n (proc=<optimized out>,
argv=argv@entry=0x7fff3f56d068, nargs=nargs@entry=1)
at vm.c:1600
#14 0x00007faee3c9d1e7 in scm_primitive_eval (exp=<optimized out>,
exp@entry=((@ (ice-9 control) %) (begin (set! %load-path (cons "."
%load-path)) (set! %load-path (cons "." %load-path)) ((@@ (ice-9 command-line)
load/lang) "./build-aux/compile-all.scm") (quit)))) at eval.c:671
#15 0x00007faee3c9d243 in scm_eval (
exp=((@ (ice-9 control) %) (begin (set! %load-path (cons "." %load-path))
(set! %load-path (cons "." %load-path)) ((@@ (ice-9 command-line) load/lang)
"./build-aux/compile-all.scm") (quit))),
module_or_state=module_or_state@entry="#<struct module>" = {...}) at
eval.c:705
#16 0x00007faee3cf6860 in scm_shell (argc=834, argv=0x7fff3f56d6c8) at
script.c:357
#17 0x00007faee3cb4bed in invoke_main_func (body_data=0x7fff3f56d570) at
init.c:308
#18 0x00007faee3c97e3a in c_body (d=0x7fff3f56d4b0) at continuations.c:430
#19 0x00007faee3d1f4fc in vm_regular_engine (thread=0x7faee330fd80) at
vm-engine.c:972
#20 0x00007faee3d20935 in scm_call_n (proc=<optimized out>,
argv=argv@entry=0x7fff3f56d270, nargs=nargs@entry=2)
at vm.c:1600
#21 0x00007faee3c9c07a in scm_call_2 (proc=<optimized out>, arg1=<optimized
out>, arg2=<optimized out>)
at eval.c:503
#22 0x00007faee3c9d87a in scm_c_with_exception_handler (type=type@entry=#t,
handler=handler@entry=0x7faee3d15d60 <catch_post_unwind_handler>,
handler_data=handler_data@entry=0x7fff3f56d3e0,
thunk=thunk@entry=0x7faee3d15ea0 <catch_body>,
thunk_data=thunk_data@entry=0x7fff3f56d3e0) at exceptions.c:170
#23 0x00007faee3d1609d in scm_c_catch (tag=tag@entry=#t,
body=body@entry=0x7faee3c97e30 <c_body>,
body_data=body_data@entry=0x7fff3f56d4b0,
handler=handler@entry=0x7faee3c980d0 <c_handler>,
handler_data=handler_data@entry=0x7fff3f56d4b0,
pre_unwind_handler=pre_unwind_handler@entry=0x7faee3c97f30
<pre_unwind_handler>,
pre_unwind_handler_data=0x7faee15e63c0) at throw.c:168
#24 0x00007faee3c983e3 in scm_i_with_continuation_barrier
(body=body@entry=0x7faee3c97e30 <c_body>,
body_data=body_data@entry=0x7fff3f56d4b0,
handler=handler@entry=0x7faee3c980d0 <c_handler>,
handler_data=handler_data@entry=0x7fff3f56d4b0,
pre_unwind_handler=pre_unwind_handler@entry=0x7faee3c97f30
<pre_unwind_handler>,
pre_unwind_handler_data=0x7faee15e63c0) at continuations.c:368
#25 0x00007faee3c98475 in scm_c_with_continuation_barrier (func=<optimized
out>, data=<optimized out>)
at continuations.c:464
#26 0x00007faee3d14b3f in with_guile (base=base@entry=0x7fff3f56d518,
data=data@entry=0x7fff3f56d540)
at threads.c:645
#27 0x00007faee3bf9a68 in GC_call_with_stack_base (fn=fn@entry=0x7faee3d14af0
<with_guile>,
arg=arg@entry=0x7fff3f56d540) at misc.c:1941
#28 0x00007faee3d14e58 in scm_i_with_guile (dynamic_state=<optimized out>,
data=data@entry=0x7fff3f56d540,
func=func@entry=0x7faee3cb4bd0 <invoke_main_func>) at threads.c:688
#29 scm_with_guile (func=func@entry=0x7faee3cb4bd0 <invoke_main_func>,
data=data@entry=0x7fff3f56d570)
at threads.c:694
#30 0x00007faee3cb4d62 in scm_boot_guile (argc=argc@entry=834,
argv=argv@entry=0x7fff3f56d6c8,
main_func=main_func@entry=0x401240 <inner_main>, closure=closure@entry=0x0)
at init.c:291
#31 0x0000000000401100 in main (argc=834, argv=0x7fff3f56d6c8) at guile.c:95
(gdb) thread 5
[Switching to thread 5 (Thread 0x7faee0f93700 (LWP 5815))]
#0 0x00007faee3bc7efc in pthread_cond_wait@@GLIBC_2.3.2 ()
from
/gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/libpthread.so.0
(gdb) bt
#0 0x00007faee3bc7efc in pthread_cond_wait@@GLIBC_2.3.2 ()
from
/gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/libpthread.so.0
#1 0x00007faee3d15355 in scm_pthread_cond_wait (cond=<optimized out>,
mutex=<optimized out>) at threads.c:1605
#2 0x00007faee3d15523 in block_self (queue=((#<unmatched-tag 277>)
#<unmatched-tag 277>),
mutex=mutex@entry=0x7faee1201f80, waittime=waittime@entry=0x0) at
threads.c:312
#3 0x00007faee3d15657 in lock_mutex (current_thread=0x7faee330fb40,
waittime=0x0, m=0x7faee1201f80,
kind=SCM_MUTEX_RECURSIVE) at threads.c:1021
#4 scm_timed_lock_mutex (mutex=#<unmatched-tag 10377>, timeout=<optimized
out>) at threads.c:1085
#5 0x00007faee13a663f in ?? ()
#6 0x00007faee330fb40 in ?? ()
#7 0x00007faee3d89860 in ?? ()
from
/gnu/store/s5p2yja08zcg6j56y1wfvnm6nxiyllz1-guile-next-3.0.1/lib/libguile-3.0.so.1
#8 0x00007faee330fb40 in ?? ()
#9 0x00007faee3cc46eb in scm_jit_enter_mcode (thread=0x7faee330fb40,
mcode=0x7faee1396410 "I\211\314I)\304I\203\374\020\017\214\272\002") at
jit.c:5725
#10 0x00007faee3d1fc99 in vm_regular_engine (thread=0x7faee155ace8) at
vm-engine.c:360
#11 0x00007faee3d20935 in scm_call_n (proc=<optimized out>,
argv=argv@entry=0x7faee0f92090, nargs=nargs@entry=3)
at vm.c:1600
#12 0x00007faee3c9c09f in scm_call_3 (proc=<optimized out>,
arg1=arg1@entry=(guile), arg2=<optimized out>,
arg3=arg3@entry=#f) at eval.c:510
#13 0x00007faee3ccbf2f in scm_maybe_resolve_module (name=name@entry=(guile)) at
modules.c:195
#14 0x00007faee3cb8898 in resolve_module (name=(guile), public_p=<optimized
out>) at intrinsics.c:317
#15 0x00007faee3d1ef94 in vm_regular_engine (thread=0x7faee330fb40) at
vm-engine.c:1583
#16 0x00007faee3d20935 in scm_call_n (proc=<optimized out>,
argv=argv@entry=0x7faee0f92278, nargs=nargs@entry=1)
at vm.c:1600
#17 0x00007faee3c9c058 in scm_call_1 (proc=<optimized out>, arg1=<optimized
out>) at eval.c:496
#18 0x00007faee3d1f4fc in vm_regular_engine (thread=0x7faee330fb40) at
vm-engine.c:972
#19 0x00007faee3d20935 in scm_call_n (proc=<optimized out>,
argv=argv@entry=0x7faee0f92420, nargs=nargs@entry=4)
at vm.c:1600
#20 0x00007faee3c9c0d4 in scm_call_4 (proc=<optimized out>,
arg1=arg1@entry="#<vector>" = {...},
arg2=arg2@entry=#<port #<port-type file 7faee159ab40> 7faee15e63c0>,
arg3=arg3@entry=#:count,
arg4=arg4@entry=20) at eval.c:517
#21 0x00007faee3c8f5f9 in display_backtrace_body (a=<optimized out>) at
backtrace.c:239
#22 0x00007faee3c9d87a in scm_c_with_exception_handler (type=type@entry=#t,
handler=handler@entry=0x7faee3d15d60 <catch_post_unwind_handler>,
handler_data=handler_data@entry=0x7faee0f925d0,
thunk=thunk@entry=0x7faee3d15ea0 <catch_body>,
thunk_data=thunk_data@entry=0x7faee0f925d0) at exceptions.c:170
#23 0x00007faee3d1609d in scm_c_catch (tag=tag@entry=#t,
body=body@entry=0x7faee3c8f4d0 <display_backtrace_body>,
body_data=body_data@entry=0x7faee0f92640,
handler=handler@entry=0x7faee3c8f8b0 <error_during_backtrace>,
handler_data=handler_data@entry=0x7faee15e63c0,
pre_unwind_handler=pre_unwind_handler@entry=0x0,
pre_unwind_handler_data=0x0) at throw.c:168
#24 0x00007faee3d160be in scm_internal_catch (tag=tag@entry=#t,
body=body@entry=0x7faee3c8f4d0 <display_backtrace_body>,
body_data=body_data@entry=0x7faee0f92640,
handler=handler@entry=0x7faee3c8f8b0 <error_during_backtrace>,
handler_data=handler_data@entry=0x7faee15e63c0)
at throw.c:177
#25 0x00007faee3c8f4c5 in scm_display_backtrace_with_highlights
(stack=stack@entry="#<struct stack>" = {...},
port=port@entry=#<port #<port-type file 7faee159ab40> 7faee15e63c0>,
first=first@entry=#f,
depth=depth@entry=#f, highlights=highlights@entry=()) at backtrace.c:277
#26 0x00007faee3c9801f in print_exception_and_backtrace (
args=<error reading variable: ERROR: Cannot access memory at address
0x0>0x7faee11f7f50, tag=wrong-type-arg,
port=#<port #<port-type file 7faee159ab40> 7faee15e63c0>) at
continuations.c:409
#27 pre_unwind_handler (error_port=0x7faee15e63c0, tag=wrong-type-arg,
args=<error reading variable: ERROR: Cannot access memory at address
0x0>0x7faee11f7f50)
at continuations.c:453
#28 0x00007faee3d15e1b in catch_pre_unwind_handler (data=0x7faee0f92d80,
exn=<error reading variable: ERROR: Cannot access memory at address
0x0>0x7faee11f7980) at throw.c:135
#29 0x00007faee3d1f4fc in vm_regular_engine (thread=0x7faee330fb40) at
vm-engine.c:972
#30 0x00007faee3d20935 in scm_call_n (proc=proc@entry=#<unmatched-tag 10045>,
argv=<optimized out>, nargs=5)
at vm.c:1600
#31 0x00007faee3c9c3d4 in scm_apply_0 (proc=#<unmatched-tag 10045>, args=()) at
eval.c:603
#32 0x00007faee3c9d07d in scm_apply_1 (proc=<optimized out>,
arg1=arg1@entry=wrong-type-arg,
args=args@entry=<error reading variable: ERROR: Cannot access memory at
address 0x0>0x7faee10d5610)
at eval.c:609
#33 0x00007faee3d16259 in scm_throw (key=key@entry=wrong-type-arg,
args=<error reading variable: ERROR: Cannot access memory at address
0x0>0x7faee10d5610) at throw.c:262
#34 0x00007faee3d163a9 in scm_ithrow (key=key@entry=wrong-type-arg,
args=<optimized out>,
no_return=no_return@entry=1) at throw.c:457
#35 0x00007faee3c9a585 in scm_error_scm (key=key@entry=wrong-type-arg,
subr=<optimized out>,
message=message@entry="Wrong type argument in position ~A (expecting ~A):
~S",
args=args@entry=<error reading variable: ERROR: Cannot access memory at
address 0x0>0x7faee10d59a0,
data=data@entry=<error reading variable: ERROR: Cannot access memory at
address 0x0>0x7faee10d5ab0)
at error.c:90
#36 0x00007faee3c9a61f in scm_error (key=wrong-type-arg,
subr=subr@entry=0x7faee3d4bf60 <s_scm_weak_vector_ref> "weak-vector-ref",
message=message@entry=0x7faee3d3d490 "Wrong type argument in position ~A
(expecting ~A): ~S",
args=<error reading variable: ERROR: Cannot access memory at address
0x0>0x7faee10d59a0,
rest=rest@entry=<error reading variable: ERROR: Cannot access memory at
address 0x0>0x7faee10d5ab0)
at error.c:62
#37 0x00007faee3c9a9e0 in scm_wrong_type_arg_msg (
subr=subr@entry=0x7faee3d4bf60 <s_scm_weak_vector_ref> "weak-vector-ref",
pos=pos@entry=1,
bad_value=<error reading variable: ERROR: Cannot access memory at address
0x0>0x7faec8cc8980,
szMessage=szMessage@entry=0x7faee3d4bee0 "weak vector") at error.c:282
#38 0x00007faee3d23716 in scm_c_weak_vector_ref (wv=<optimized out>,
k=k@entry=0) at weak-vector.c:193
#39 0x00007faee3d22838 in scm_i_weak_car (
pair=<error reading variable: ERROR: Cannot access memory at address
0x0>0x7faec7c7d7e0) at weak-list.h:39
#40 scm_i_visit_weak_list (list_loc=0x7faee3d8a868 <all_weak_tables>,
visit=<optimized out>) at weak-list.h:49
#41 vacuum_all_weak_tables () at weak-table.c:494
#42 0x00007faee3ca5f2e in async_gc_finalizer (ptr=0x7faee3312ea0, data=0x0) at
finalizers.c:316
#43 0x00007faee3bf26ef in GC_invoke_finalizers () at finalize.c:1276
#44 0x00007faee3ca63c9 in scm_run_finalizers () at finalizers.c:398
#45 0x00007faee3ca643d in finalization_thread_proc (unused=<optimized out>) at
finalizers.c:233
#46 0x00007faee3c97e3a in c_body (d=0x7faee0f92e50) at continuations.c:430
#47 0x00007faee3d1f4fc in vm_regular_engine (thread=0x7faee330fb40) at
vm-engine.c:972
#48 0x00007faee3d20935 in scm_call_n (proc=<optimized out>,
argv=argv@entry=0x7faee0f92c10, nargs=nargs@entry=2)
at vm.c:1600
#49 0x00007faee3c9c07a in scm_call_2 (proc=<optimized out>, arg1=<optimized
out>, arg2=<optimized out>)
at eval.c:503
#50 0x00007faee3c9d87a in scm_c_with_exception_handler (type=type@entry=#t,
handler=handler@entry=0x7faee3d15d60 <catch_post_unwind_handler>,
handler_data=handler_data@entry=0x7faee0f92d80,
thunk=thunk@entry=0x7faee3d15ea0 <catch_body>,
thunk_data=thunk_data@entry=0x7faee0f92d80) at exceptions.c:170
#51 0x00007faee3d1609d in scm_c_catch (tag=tag@entry=#t,
body=body@entry=0x7faee3c97e30 <c_body>,
body_data=body_data@entry=0x7faee0f92e50,
handler=handler@entry=0x7faee3c980d0 <c_handler>,
handler_data=handler_data@entry=0x7faee0f92e50,
pre_unwind_handler=pre_unwind_handler@entry=0x7faee3c97f30
<pre_unwind_handler>,
pre_unwind_handler_data=0x7faee15e63c0) at throw.c:168
#52 0x00007faee3c983e3 in scm_i_with_continuation_barrier
(body=body@entry=0x7faee3c97e30 <c_body>,
body_data=body_data@entry=0x7faee0f92e50,
handler=handler@entry=0x7faee3c980d0 <c_handler>,
handler_data=handler_data@entry=0x7faee0f92e50,
pre_unwind_handler=pre_unwind_handler@entry=0x7faee3c97f30
<pre_unwind_handler>,
pre_unwind_handler_data=0x7faee15e63c0) at continuations.c:368
#53 0x00007faee3c98475 in scm_c_with_continuation_barrier (func=<optimized
out>, data=<optimized out>)
at continuations.c:464
#54 0x00007faee3d14b3f in with_guile (base=base@entry=0x7faee0f92eb8,
data=data@entry=0x7faee0f92ee0)
at threads.c:645
#55 0x00007faee3bf9a68 in GC_call_with_stack_base (fn=fn@entry=0x7faee3d14af0
<with_guile>,
arg=arg@entry=0x7faee0f92ee0) at misc.c:1941
#56 0x00007faee3d14e58 in scm_i_with_guile (dynamic_state=<optimized out>,
data=<optimized out>,
func=<optimized out>) at threads.c:688
#57 scm_with_guile (func=<optimized out>, data=<optimized out>) at threads.c:694
#58 0x00007faee3bc2015 in start_thread ()
from
/gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/libpthread.so.0
#59 0x00007faee372891f in clone () from
/gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/libc.so.6
--8<---------------cut here---------------end--------------->8---
It stems from the bug described in
<https://issues.guix.gnu.org/issue/39266>, this time on x86_64.
Ludo’.