Created
May 19, 2023 00:22
-
-
Save KJTsanaktsidis/11df4ab633f63c3c1a2f1bca55a88ce9 to your computer and use it in GitHub Desktop.
FreeBSD fork/thread deadlock
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(gdb) info threads | |
Id Target Id Frame | |
* 1 LWP 100729 of process 15250 _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:40 | |
2 LWP 105716 of process 15250 _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:40 | |
(gdb) thread 1 | |
[Switching to thread 1 (LWP 100729 of process 15250)] | |
#0 _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:40 | |
40 in /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S | |
(gdb) bt | |
#0 _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:40 | |
#1 0x000030e4b6279690 in __thr_rwlock_wrlock (rwlock=0x30e4b627db80, tsp=<optimized out>) at /usr/src/lib/libthr/thread/thr_umtx.c:327 | |
#2 0x000030e4b6273df1 in _thr_rwlock_wrlock (rwlock=<optimized out>, tsp=<optimized out>) at /usr/src/lib/libthr/thread/thr_umtx.h:241 | |
#3 _thr_rtld_wlock_acquire (lock=0x30e4b627db80) at /usr/src/lib/libthr/thread/thr_rtld.c:143 | |
#4 0x00005692625a123f in wlock_acquire (lock=0x5692625ad8a0 <rtld_locks>, lockstate=<optimized out>) at /usr/src/libexec/rtld-elf/rtld_lock.c:276 | |
#5 _rtld_atfork_pre (locks=0x30e4b06f9390) at /usr/src/libexec/rtld-elf/rtld_lock.c:477 | |
#6 0x000030e4b626d694 in thr_fork_impl (a=a@entry=0x30e4b06f93f8) at /usr/src/lib/libthr/thread/thr_fork.c:195 | |
#7 0x000030e4b626d5d8 in __thr_fork () at /usr/src/lib/libthr/thread/thr_fork.c:314 | |
#8 0x000030e4b51dc248 in daemonfd (chdirfd=chdirfd@entry=-1, nullfd=nullfd@entry=-1) at /usr/src/lib/libc/gen/daemon.c:61 | |
#9 0x000030e4b51dc337 in daemon (nochdir=nochdir@entry=1, noclose=noclose@entry=1) at /usr/src/lib/libc/gen/daemon.c:110 | |
#10 0x000030dc90459fb8 in rb_daemon (nochdir=1, noclose=1) at process.c:6851 | |
#11 proc_daemon (argc=<optimized out>, argv=0x30e4bdb38dc8, _=<optimized out>) at process.c:6840 | |
#12 0x000030dc90542ac0 in vm_call_cfunc_with_frame_ (ec=0x30e4bdb32050, reg_cfp=<optimized out>, calling=<optimized out>, argc=<optimized out>, argv=<optimized out>, stack_bottom=<optimized out>) | |
at ./vm_insnhelper.c:3433 | |
#13 0x000030dc90524b27 in vm_sendish (ec=0x30e4bdb32050, cd=0x30e4d8a05230, block_handler=0, method_explorer=mexp_search_method, reg_cfp=<optimized out>) at ./vm_insnhelper.c:5487 | |
#14 vm_exec_core (ec=ec@entry=0x30e4bdb32050, initial=initial@entry=0) at insns.def:835 | |
#15 0x000030dc90537dfb in rb_vm_exec (ec=0x30e4bdb32050) at vm.c:2603 | |
#16 0x000030dc9054b7b2 in invoke_iseq_block_from_c (ec=0x30e4bdb32050, captured=<optimized out>, self=0, argc=<optimized out>, argv=<optimized out>, kw_splat=<optimized out>, | |
passed_block_handler=<optimized out>, cref=0x0, is_lambda=0, me=0x0) at ./vm_insnhelper.c:391 | |
#17 invoke_block_from_c_bh (ec=0x30e4bdb32050, block_handler=<optimized out>, argc=<optimized out>, argv=<optimized out>, kw_splat=kw_splat@entry=0, passed_block_handler=passed_block_handler@entry=0, cref=0x0, | |
is_lambda=<optimized out>, force_blockarg=0) at vm.c:1474 | |
#18 0x000030dc90530e24 in rb_yield (val=<optimized out>, val@entry=4) at vm.c:1511 | |
#19 0x000030dc903d868b in popen_finish (port=<optimized out>, klass=53759230289920) at io.c:7967 | |
#20 rb_io_s_popen (argc=<optimized out>, argv=0x30e4bdb38d78, klass=53759230289920) at io.c:7921 | |
#21 0x000030dc90542ac0 in vm_call_cfunc_with_frame_ (ec=0x30e4bdb32050, reg_cfp=<optimized out>, calling=<optimized out>, argc=<optimized out>, argv=<optimized out>, stack_bottom=<optimized out>) | |
at ./vm_insnhelper.c:3433 | |
#22 0x000030dc90524a19 in vm_sendish (ec=0x30e4bdb32050, cd=0x30e4d8a808c0, block_handler=<optimized out>, method_explorer=mexp_search_method, reg_cfp=<optimized out>) at ./vm_insnhelper.c:5487 | |
#23 vm_exec_core (ec=ec@entry=0x30e4bdb32050, initial=initial@entry=0) at insns.def:815 | |
#24 0x000030dc90537dfb in rb_vm_exec (ec=0x30e4bdb32050) at vm.c:2603 | |
#25 0x000030dc9054b7b2 in invoke_iseq_block_from_c (ec=0x30e4bdb32050, captured=<optimized out>, self=0, argc=<optimized out>, argv=<optimized out>, kw_splat=<optimized out>, | |
passed_block_handler=<optimized out>, cref=0x0, is_lambda=0, me=0x0) at ./vm_insnhelper.c:391 | |
#26 invoke_block_from_c_bh (ec=0x30e4bdb32050, block_handler=<optimized out>, argc=argc@entry=1, argv=argv@entry=0x30e4b06f9d18, kw_splat=kw_splat@entry=0, passed_block_handler=passed_block_handler@entry=0, | |
cref=0x0, is_lambda=<optimized out>, force_blockarg=0) at vm.c:1474 | |
#27 0x000030dc9054abb4 in vm_yield_with_cref (ec=0x30e4b627db80, argc=1, argv=0x30e4b06f9d18, kw_splat=0, cref=0x0, is_lambda=0) at vm.c:1511 | |
#28 vm_yield (ec=0x30e4b627db80, argc=1, argv=0x30e4b06f9d18, kw_splat=0) at vm.c:1519 | |
#29 rb_yield_0 (argc=1, argv=0x30e4b06f9d18) at ./vm_eval.c:1359 | |
#30 catch_i (tag=53759550141240, _=<optimized out>, argc=<optimized out>, argv=<optimized out>, blockarg=<optimized out>) at ./vm_eval.c:2264 | |
#31 0x000030dc905332be in vm_catch_protect (tag=53759550141240, func=0x30dc9054ab40 <catch_i>, data=13, data@entry=0, stateptr=stateptr@entry=0x30e4b06f9e14, ec=0x30e4bdb32050) at ./vm_eval.c:2346 | |
#32 0x000030dc90533b22 in rb_catch_obj (t=53758866742144, func=0xd, data=0) at ./vm_eval.c:2372 | |
#33 rb_f_catch (argc=<optimized out>, argv=<optimized out>, self=<optimized out>) at ./vm_eval.c:2322 | |
#34 0x000030dc90542ac0 in vm_call_cfunc_with_frame_ (ec=0x30e4bdb32050, reg_cfp=<optimized out>, calling=<optimized out>, argc=<optimized out>, argv=<optimized out>, stack_bottom=<optimized out>) | |
at ./vm_insnhelper.c:3433 | |
#35 0x000030dc90524a19 in vm_sendish (ec=0x30e4bdb32050, cd=0x30e4c399c660, block_handler=<optimized out>, method_explorer=mexp_search_method, reg_cfp=<optimized out>) at ./vm_insnhelper.c:5487 | |
#36 vm_exec_core (ec=ec@entry=0x30e4bdb32050, initial=initial@entry=0) at insns.def:815 | |
#37 0x000030dc90537dfb in rb_vm_exec (ec=0x30e4bdb32050) at vm.c:2603 | |
#38 0x000030dc9054b7b2 in invoke_iseq_block_from_c (ec=0x30e4bdb32050, captured=<optimized out>, self=0, argc=<optimized out>, argv=<optimized out>, kw_splat=<optimized out>, | |
passed_block_handler=<optimized out>, cref=0x0, is_lambda=0, me=0x0) at ./vm_insnhelper.c:391 | |
--Type <RET> for more, q to quit, c to continue without paging-- | |
#39 invoke_block_from_c_bh (ec=0x30e4bdb32050, block_handler=<optimized out>, argc=<optimized out>, argv=<optimized out>, kw_splat=kw_splat@entry=0, passed_block_handler=passed_block_handler@entry=0, cref=0x0, | |
is_lambda=<optimized out>, force_blockarg=0) at vm.c:1474 | |
#40 0x000030dc90530e24 in rb_yield (val=<optimized out>) at vm.c:1511 | |
#41 0x000030dc90308b43 in rb_ary_collect (ary=53759550159760) at array.c:3745 | |
#42 0x000030dc90542ac0 in vm_call_cfunc_with_frame_ (ec=0x30e4bdb32050, reg_cfp=<optimized out>, calling=<optimized out>, argc=<optimized out>, argv=<optimized out>, stack_bottom=<optimized out>) | |
at ./vm_insnhelper.c:3433 | |
#43 0x000030dc90524a19 in vm_sendish (ec=0x30e4bdb32050, cd=0x30e4d89138d0, block_handler=<optimized out>, method_explorer=mexp_search_method, reg_cfp=<optimized out>) at ./vm_insnhelper.c:5487 | |
#44 vm_exec_core (ec=ec@entry=0x30e4bdb32050, initial=initial@entry=0) at insns.def:815 | |
#45 0x000030dc90537dfb in rb_vm_exec (ec=0x30e4bdb32050) at vm.c:2603 | |
#46 0x000030dc9054b7b2 in invoke_iseq_block_from_c (ec=0x30e4bdb32050, captured=<optimized out>, self=0, argc=<optimized out>, argv=<optimized out>, kw_splat=<optimized out>, | |
passed_block_handler=<optimized out>, cref=0x0, is_lambda=0, me=0x0) at ./vm_insnhelper.c:391 | |
#47 invoke_block_from_c_bh (ec=0x30e4bdb32050, block_handler=<optimized out>, argc=<optimized out>, argv=<optimized out>, kw_splat=kw_splat@entry=0, passed_block_handler=passed_block_handler@entry=0, cref=0x0, | |
is_lambda=<optimized out>, force_blockarg=0) at vm.c:1474 | |
#48 0x000030dc90530e24 in rb_yield (val=<optimized out>) at vm.c:1511 | |
#49 0x000030dc90302537 in rb_ary_each (ary=53759409061480) at array.c:2653 | |
#50 0x000030dc90542ac0 in vm_call_cfunc_with_frame_ (ec=0x30e4bdb32050, reg_cfp=<optimized out>, calling=<optimized out>, argc=<optimized out>, argv=<optimized out>, stack_bottom=<optimized out>) | |
at ./vm_insnhelper.c:3433 | |
#51 0x000030dc90524a19 in vm_sendish (ec=0x30e4bdb32050, cd=0x30e4c3aa0c40, block_handler=<optimized out>, method_explorer=mexp_search_method, reg_cfp=<optimized out>) at ./vm_insnhelper.c:5487 | |
#52 vm_exec_core (ec=ec@entry=0x30e4bdb32050, initial=initial@entry=0) at insns.def:815 | |
#53 0x000030dc90537dfb in rb_vm_exec (ec=0x30e4bdb32050) at vm.c:2603 | |
#54 0x000030dc9054b7b2 in invoke_iseq_block_from_c (ec=0x30e4bdb32050, captured=<optimized out>, self=0, argc=<optimized out>, argv=<optimized out>, kw_splat=<optimized out>, | |
passed_block_handler=<optimized out>, cref=0x0, is_lambda=0, me=0x0) at ./vm_insnhelper.c:391 | |
#55 invoke_block_from_c_bh (ec=0x30e4bdb32050, block_handler=<optimized out>, argc=<optimized out>, argv=<optimized out>, kw_splat=kw_splat@entry=0, passed_block_handler=passed_block_handler@entry=0, cref=0x0, | |
is_lambda=<optimized out>, force_blockarg=0) at vm.c:1474 | |
#56 0x000030dc90530e24 in rb_yield (val=<optimized out>) at vm.c:1511 | |
#57 0x000030dc90302537 in rb_ary_each (ary=53759374819800) at array.c:2653 | |
#58 0x000030dc90542ac0 in vm_call_cfunc_with_frame_ (ec=0x30e4bdb32050, reg_cfp=<optimized out>, calling=<optimized out>, argc=<optimized out>, argv=<optimized out>, stack_bottom=<optimized out>) | |
at ./vm_insnhelper.c:3433 | |
#59 0x000030dc90524a19 in vm_sendish (ec=0x30e4bdb32050, cd=0x30e4c3b3a7e0, block_handler=<optimized out>, method_explorer=mexp_search_method, reg_cfp=<optimized out>) at ./vm_insnhelper.c:5487 | |
#60 vm_exec_core (ec=ec@entry=0x30e4bdb32050, initial=initial@entry=0) at insns.def:815 | |
#61 0x000030dc90537dfb in rb_vm_exec (ec=0x30e4bdb32050, ec@entry=0x30e4d3f52b50) at vm.c:2603 | |
#62 0x000030dc905380d9 in rb_iseq_eval (iseq=iseq@entry=0x30e4d3f51fe8) at vm.c:2632 | |
#63 0x000030dc903fcf99 in load_iseq_eval (ec=ec@entry=0x30e4bdb32050, fname=fname@entry=53759366736720) at load.c:711 | |
#64 0x000030dc903fb30c in require_internal (ec=0x30e4b627db80, ec@entry=0x30e4bdb32050, fname=<optimized out>, fname@entry=53759366736760, exception=exception@entry=1, warn=false) at load.c:1217 | |
#65 0x000030dc903fa770 in rb_require_string (fname=53759366736760) at load.c:1310 | |
#66 rb_f_require_relative (obj=<optimized out>, fname=<optimized out>) at load.c:972 | |
#67 0x000030dc90542ac0 in vm_call_cfunc_with_frame_ (ec=0x30e4bdb32050, reg_cfp=<optimized out>, calling=<optimized out>, argc=<optimized out>, argv=<optimized out>, stack_bottom=<optimized out>) | |
at ./vm_insnhelper.c:3433 | |
#68 0x000030dc90524b27 in vm_sendish (ec=0x30e4bdb32050, cd=0x30e4c3b40730, block_handler=0, method_explorer=mexp_search_method, reg_cfp=<optimized out>) at ./vm_insnhelper.c:5487 | |
#69 vm_exec_core (ec=ec@entry=0x30e4bdb32050, initial=initial@entry=0) at insns.def:835 | |
#70 0x000030dc90537dfb in rb_vm_exec (ec=0x30e4bdb32050, ec@entry=0x0) at vm.c:2603 | |
#71 0x000030dc905381f4 in rb_iseq_eval_main (iseq=iseq@entry=0x30e4d3f53758) at vm.c:2643 | |
#72 0x000030dc902f66aa in rb_ec_exec_node (ec=ec@entry=0x30e4bdb32050, n=0x30e4b627db80, n@entry=0x30e4d3f53758) at eval.c:295 | |
#73 0x000030dc902f651c in ruby_run_node (n=0x30e4d3f53758) at eval.c:336 | |
#74 0x000030dc902f3c67 in rb_main (argc=5, argv=0x30e4b06fb408) at ./main.c:39 | |
#75 main (argc=5, argv=0x30e4b06fb408) at ./main.c:58 | |
(gdb) thread 2 | |
[Switching to thread 2 (LWP 105716 of process 15250)] | |
#0 _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:40 | |
40 in /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S | |
(gdb) bt | |
#0 _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:40 | |
#1 0x000030e4b62790ec in __thr_umutex_lock (mtx=0x30e4bdad3020, id=105716) at /usr/src/lib/libthr/thread/thr_umtx.c:82 | |
#2 0x000030e4b627181c in mutex_lock_sleep (curthread=0x30e4d8a56100, m=0x30e4bdad3020, abstime=<optimized out>) at /usr/src/lib/libthr/thread/thr_mutex.c:702 | |
#3 mutex_lock_common (m=0x30e4bdad3020, abstime=<optimized out>, cvattach=false, rb_onlist=false) at /usr/src/lib/libthr/thread/thr_mutex.c:736 | |
#4 0x000030e4b52f6ddb in malloc_mutex_lock_final (mutex=0x30e4bc603238) at /usr/src/contrib/jemalloc/include/jemalloc/internal/mutex.h:153 | |
#5 __je_malloc_mutex_lock_slow (mutex=0x30e4bc603238) at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_mutex.c:96 | |
#6 0x000030e4b52f2617 in malloc_mutex_lock (tsdn=tsdn@entry=0x30e4bb586090, mutex=0x30e4bc603238, mutex@entry=0x30e4bb586090) at /usr/src/contrib/jemalloc/include/jemalloc/internal/mutex.h:219 | |
#7 extent_deactivate (tsdn=tsdn@entry=0x30e4bb586090, arena=<optimized out>, extents=extents@entry=0x30e4bc603238, extent=0x30e4bc61dd00) at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_extent.c:684 | |
#8 0x000030e4b52ed71d in extent_recycle_split (tsdn=0x30e4bb586090, arena=0x30e4bc600980, r_extent_hooks=0x30e4e138dba8, rtree_ctx=0x30e4bb5860c0, extents=0x30e4bc603238, size=28672, extent=0x30e4bc61dc80, | |
growing_retained=<optimized out>, new_addr=<optimized out>, pad=<optimized out>, alignment=<optimized out>, slab=<optimized out>, szind=<optimized out>) | |
at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_extent.c:1087 | |
#9 extent_recycle (tsdn=0x30e4bb586090, arena=0x30e4bc600980, r_extent_hooks=0x30e4e138dba8, extents=0x30e4bc603238, new_addr=<optimized out>, size=28672, pad=4096, alignment=64, slab=<optimized out>, | |
szind=39, zero=0x30e4e138dbff, commit=0x30e4e138dba7, growing_retained=<optimized out>) at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_extent.c:1148 | |
#10 0x000030e4b52ed039 in __je_extents_alloc (tsdn=0x30e4bdad3020, arena=0x11, r_extent_hooks=0x0, extents=0x0, new_addr=0x0, size=0, pad=4096, alignment=64, slab=<optimized out>, szind=39, zero=0x30e4e138dbff, | |
commit=0x30e4e138dba7) at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_extent.c:545 | |
#11 0x000030e4b52c9fbd in __je_arena_extent_alloc_large (tsdn=0x30e4bb586090, arena=0x30e4bc600980, usize=28672, alignment=64, zero=0x30e4e138dbff) at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_arena.c:438 | |
#12 0x000030e4b52f39e5 in __je_large_palloc (tsdn=0x30e4bb586090, arena=<optimized out>, usize=28672, alignment=64, zero=<optimized out>) at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_large.c:47 | |
#13 0x000030e4b530cb83 in ipallocztm (tsdn=0x30e4bb586090, usize=28672, alignment=64, zero=true, tcache=0x0, is_internal=true, arena=0x11) | |
at /usr/src/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_c.h:78 | |
#14 __je_tsd_tcache_data_init (tsd=tsd@entry=0x30e4bb586090) at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_tcache.c:451 | |
#15 0x000030e4b530caba in __je_tsd_tcache_enabled_data_init (tsd=0x30e4bb586090) at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_tcache.c:402 | |
#16 0x000030e4b530fa3a in __je_tsd_fetch_slow (tsd=0x30e4bb586090, minimal=<optimized out>) at /usr/src/contrib/jemalloc/include/jemalloc/internal/tsd_malloc_thread_cleanup.h:60 | |
#17 0x000030e4b52be31b in tsd_fetch_impl (init=true, minimal=false) at /usr/src/contrib/jemalloc/include/jemalloc/internal/tsd.h:355 | |
#18 tsd_fetch () at /usr/src/contrib/jemalloc/include/jemalloc/internal/tsd.h:381 | |
#19 imalloc (sopts=<optimized out>, dopts=<optimized out>) at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_jemalloc.c:2256 | |
#20 __je_malloc_default (size=64) at /usr/obj/usr/src/amd64.amd64/lib/libc/jemalloc_jemalloc.c:2293 | |
#21 0x000030e4b626a464 in _thr_attr_init (attr=attr@entry=0x30e4e138df08) at /usr/src/lib/libthr/thread/thr_attr.c:365 | |
#22 0x000030dc904e60a1 in get_stack (addr=0x30e4e138df00, size=0x30e4e138def8) at ./thread_pthread.c:814 | |
#23 native_thread_init_stack (th=th@entry=0x30e4c39cfa40) at ./thread_pthread.c:1049 | |
#24 0x000030dc904ef961 in thread_start_func_1 (th_ptr=<optimized out>) at ./thread_pthread.c:1085 | |
#25 0x000030e4b626ca7a in thread_start (curthread=0x30e4d8a56100) at /usr/src/lib/libthr/thread/thr_create.c:292 | |
#26 0x0000000000000000 in ?? () | |
Backtrace stopped: Cannot access memory at address 0x30e4e138e000 | |
(gdb) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment