FreeBSD Bugzilla – Attachment 242274 Details for
Bug 271490
Deadlock between _rtld_atfork_pre and _thr_attr_init
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
Another gdb backtrace of the problem
bsd_rtld_hang.txt (text/plain), 13.89 KB, created by
KJ Tsanaktsidis
on 2023-05-19 11:20:55 UTC
(
hide
)
Description:
Another gdb backtrace of the problem
Filename:
MIME Type:
Creator:
KJ Tsanaktsidis
Created:
2023-05-19 11:20:55 UTC
Size:
13.89 KB
patch
obsolete
>(gdb) info threads > > Id Target Id Frame >* 1 LWP 145211 of process 60860 _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:40 > 2 LWP 565034 of process 60860 _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:40 >(gdb) thread 1 > >[Switching to thread 1 (LWP 145211 of process 60860)] >#0 _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:40 >40 /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S: No such file or directory. >(gdb) bt > >#0 _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:40 >#1 0x000028d8f353e690 in __thr_rwlock_wrlock (rwlock=0x28d8f3542b80, tsp=<optimized out>) at /usr/src/lib/libthr/thread/thr_umtx.c:327 >#2 0x000028d8f3538df1 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=0x28d8f3542b80) at /usr/src/lib/libthr/thread/thr_rtld.c:143 >#4 0x000038a84b65123f in wlock_acquire (lock=0x38a84b65d8a0 <rtld_locks>, lockstate=<optimized out>) > at /usr/src/libexec/rtld-elf/rtld_lock.c:276 >#5 _rtld_atfork_pre (locks=0x28d8ee6b21b0) at /usr/src/libexec/rtld-elf/rtld_lock.c:477 >#6 0x000028d8f3532694 in thr_fork_impl (a=a@entry=0x28d8ee6b2218) at /usr/src/lib/libthr/thread/thr_fork.c:195 >#7 0x000028d8f35325d8 in __thr_fork () at /usr/src/lib/libthr/thread/thr_fork.c:314 >#8 0x000028d8f40c9248 in daemonfd (chdirfd=chdirfd@entry=-1, nullfd=nullfd@entry=-1) at /usr/src/lib/libc/gen/daemon.c:61 >#9 0x000028d8f40c9337 in daemon (nochdir=nochdir@entry=1, noclose=noclose@entry=1) at /usr/src/lib/libc/gen/daemon.c:110 >#10 0x000028d0cd931db8 in rb_daemon (nochdir=1, noclose=1) at process.c:6851 >#11 proc_daemon (argc=<optimized out>, argv=0x28d8faeb28c8, _=<optimized out>) at process.c:6840 >#12 0x000028d0cda1a8f0 in vm_call_cfunc_with_frame_ (ec=0x28d8faeac050, reg_cfp=<optimized out>, calling=<optimized out>, > argc=<optimized out>, argv=<optimized out>, stack_bottom=<optimized out>) at ./vm_insnhelper.c:3433 >#13 0x000028d0cd9fc957 in vm_sendish (ec=0x28d8faeac050, cd=0x28d9137ac230, block_handler=0, method_explorer=mexp_search_method, > reg_cfp=<optimized out>) at ./vm_insnhelper.c:5487 >#14 vm_exec_core (ec=ec@entry=0x28d8faeac050, initial=initial@entry=0) at insns.def:835 >#15 0x000028d0cda0fc2b in rb_vm_exec (ec=0x28d8faeac050) at vm.c:2603 >#16 0x000028d0cda235e2 in invoke_iseq_block_from_c (ec=0x28d8faeac050, 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=0x28d8faeac050, 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 0x000028d0cda08c54 in rb_yield (val=<optimized out>, val@entry=4) at vm.c:1511 >#19 0x000028d0cd8b048b in popen_finish (port=<optimized out>, klass=44912605014040) at io.c:7967 >#20 rb_io_s_popen (argc=<optimized out>, argv=0x28d8faeb2878, klass=44912605014040) at io.c:7921 >#21 0x000028d0cda1a8f0 in vm_call_cfunc_with_frame_ (ec=0x28d8faeac050, reg_cfp=<optimized out>, calling=<optimized out>, > argc=<optimized out>, argv=<optimized out>, stack_bottom=<optimized out>) at ./vm_insnhelper.c:3433 >#22 0x000028d0cd9fc849 in vm_sendish (ec=0x28d8faeac050, cd=0x28d9138278c0, 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=0x28d8faeac050, initial=initial@entry=0) at insns.def:815 >#24 0x000028d0cda0fc2b in rb_vm_exec (ec=0x28d8faeac050) at vm.c:2603 >#25 0x000028d0cda235e2 in invoke_iseq_block_from_c (ec=0x28d8faeac050, 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=0x28d8faeac050, block_handler=<optimized out>, argc=argc@entry=1, argv=argv@entry=0x28d8ee6b2b38, > 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 0x000028d0cda229e4 in vm_yield_with_cref (ec=0x28d8f3542b80, argc=1, argv=0x28d8ee6b2b38, kw_splat=0, cref=0x0, is_lambda=0) at vm.c:1511 >#28 vm_yield (ec=0x28d8f3542b80, argc=1, argv=0x28d8ee6b2b38, kw_splat=0) at vm.c:1519 >#29 rb_yield_0 (argc=1, argv=0x28d8ee6b2b38) at ./vm_eval.c:1359 >#30 catch_i (tag=44912941374880, _=<optimized out>, argc=<optimized out>, argv=<optimized out>, blockarg=<optimized out>) at ./vm_eval.c:2264 >#31 0x000028d0cda0b0ee in vm_catch_protect (tag=44912941374880, func=0x28d0cda22970 <catch_i>, data=13, data@entry=0, > stateptr=stateptr@entry=0x28d8ee6b2c34, ec=0x28d8faeac050) at ./vm_eval.c:2346 >#32 0x000028d0cda0b952 in rb_catch_obj (t=44912260426624, func=0xd, data=0) at ./vm_eval.c:2372 >--Type <RET> for more, q to quit, c to continue without paging-- > >#33 rb_f_catch (argc=<optimized out>, argv=<optimized out>, self=<optimized out>) at ./vm_eval.c:2322 >#34 0x000028d0cda1a8f0 in vm_call_cfunc_with_frame_ (ec=0x28d8faeac050, reg_cfp=<optimized out>, calling=<optimized out>, > argc=<optimized out>, argv=<optimized out>, stack_bottom=<optimized out>) at ./vm_insnhelper.c:3433 >#35 0x000028d0cd9fc849 in vm_sendish (ec=0x28d8faeac050, cd=0x28d8ffc74660, 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=0x28d8faeac050, initial=initial@entry=0) at insns.def:815 >#37 0x000028d0cda0fc2b in rb_vm_exec (ec=0x28d8faeac050) at vm.c:2603 >#38 0x000028d0cda235e2 in invoke_iseq_block_from_c (ec=0x28d8faeac050, 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 >#39 invoke_block_from_c_bh (ec=0x28d8faeac050, 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 0x000028d0cda08c54 in rb_yield (val=<optimized out>) at vm.c:1511 >#41 0x000028d0cd7e0943 in rb_ary_collect (ary=44912941388880) at array.c:3745 >#42 0x000028d0cda1a8f0 in vm_call_cfunc_with_frame_ (ec=0x28d8faeac050, reg_cfp=<optimized out>, calling=<optimized out>, > argc=<optimized out>, argv=<optimized out>, stack_bottom=<optimized out>) at ./vm_insnhelper.c:3433 >#43 0x000028d0cd9fc849 in vm_sendish (ec=0x28d8faeac050, cd=0x28d9136ba8d0, 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=0x28d8faeac050, initial=initial@entry=0) at insns.def:815 >#45 0x000028d0cda0fc2b in rb_vm_exec (ec=0x28d8faeac050) at vm.c:2603 >#46 0x000028d0cda235e2 in invoke_iseq_block_from_c (ec=0x28d8faeac050, 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=0x28d8faeac050, 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 0x000028d0cda08c54 in rb_yield (val=<optimized out>) at vm.c:1511 >#49 0x000028d0cd7da337 in rb_ary_each (ary=44912766615080) at array.c:2653 >#50 0x000028d0cda1a8f0 in vm_call_cfunc_with_frame_ (ec=0x28d8faeac050, reg_cfp=<optimized out>, calling=<optimized out>, > argc=<optimized out>, argv=<optimized out>, stack_bottom=<optimized out>) at ./vm_insnhelper.c:3433 >#51 0x000028d0cd9fc849 in vm_sendish (ec=0x28d8faeac050, cd=0x28d8ffd78c40, 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=0x28d8faeac050, initial=initial@entry=0) at insns.def:815 >#53 0x000028d0cda0fc2b in rb_vm_exec (ec=0x28d8faeac050) at vm.c:2603 >#54 0x000028d0cda235e2 in invoke_iseq_block_from_c (ec=0x28d8faeac050, 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=0x28d8faeac050, 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 0x000028d0cda08c54 in rb_yield (val=<optimized out>) at vm.c:1511 >#57 0x000028d0cd7da337 in rb_ary_each (ary=44912747577480) at array.c:2653 >#58 0x000028d0cda1a8f0 in vm_call_cfunc_with_frame_ (ec=0x28d8faeac050, reg_cfp=<optimized out>, calling=<optimized out>, > argc=<optimized out>, argv=<optimized out>, stack_bottom=<optimized out>) at ./vm_insnhelper.c:3433 >#59 0x000028d0cd9fc849 in vm_sendish (ec=0x28d8faeac050, cd=0x28d8ffe127e0, block_handler=<optimized out>, > method_explorer=mexp_search_method, reg_cfp=<optimized out>) at ./vm_insnhelper.c:5487 >--Type <RET> for more, q to quit, c to continue without paging-- > >#60 vm_exec_core (ec=ec@entry=0x28d8faeac050, initial=initial@entry=0) at insns.def:815 >#61 0x000028d0cda0fc2b in rb_vm_exec (ec=0x28d8faeac050, ec@entry=0x28d90fa52b00) at vm.c:2603 >#62 0x000028d0cda0ff09 in rb_iseq_eval (iseq=iseq@entry=0x28d90fa51f98) at vm.c:2632 >#63 0x000028d0cd8d4d99 in load_iseq_eval (ec=ec@entry=0x28d8faeac050, fname=fname@entry=44912735496960) at load.c:711 >#64 0x000028d0cd8d310c in require_internal (ec=0x28d8f3542b80, ec@entry=0x28d8faeac050, fname=<optimized out>, fname@entry=44912735497000, > exception=exception@entry=1, warn=false) at load.c:1217 >#65 0x000028d0cd8d2570 in rb_require_string (fname=44912735497000) at load.c:1310 >#66 rb_f_require_relative (obj=<optimized out>, fname=<optimized out>) at load.c:972 >#67 0x000028d0cda1a8f0 in vm_call_cfunc_with_frame_ (ec=0x28d8faeac050, reg_cfp=<optimized out>, calling=<optimized out>, > argc=<optimized out>, argv=<optimized out>, stack_bottom=<optimized out>) at ./vm_insnhelper.c:3433 >#68 0x000028d0cd9fc957 in vm_sendish (ec=0x28d8faeac050, cd=0x28d8ffe18730, block_handler=0, method_explorer=mexp_search_method, > reg_cfp=<optimized out>) at ./vm_insnhelper.c:5487 >#69 vm_exec_core (ec=ec@entry=0x28d8faeac050, initial=initial@entry=0) at insns.def:835 >#70 0x000028d0cda0fc2b in rb_vm_exec (ec=0x28d8faeac050, ec@entry=0x0) at vm.c:2603 >#71 0x000028d0cda10024 in rb_iseq_eval_main (iseq=iseq@entry=0x28d90fa53708) at vm.c:2643 >#72 0x000028d0cd7ce4aa in rb_ec_exec_node (ec=ec@entry=0x28d8faeac050, n=0x28d8f3542b80, n@entry=0x28d90fa53708) at eval.c:287 >#73 0x000028d0cd7ce31c in ruby_run_node (n=0x28d90fa53708) at eval.c:328 >#74 0x000028d0cd7cbb67 in rb_main (argc=5, argv=0x28d8ee6b4228) at ./main.c:39 >#75 main (argc=5, argv=0x28d8ee6b4228) at ./main.c:58 >(gdb) thread 2 > >[Switching to thread 2 (LWP 565034 of process 60860)] >#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 0x000028d8f353e4c0 in _thr_umtx_timedwait_uint (mtx=0x28d91d852008, id=0, clockid=<optimized out>, abstime=<optimized out>, > shared=<optimized out>) at /usr/src/lib/libthr/thread/thr_umtx.c:236 >#2 0x000028d8f35308ff in cond_wait_user (cvp=0x28d91f3ed000, mp=0x28d8fd3fd408, abstime=0x0, cancel=1) > at /usr/src/lib/libthr/thread/thr_cond.c:320 >#3 cond_wait_common (cond=<optimized out>, mutex=<optimized out>, abstime=0x0, cancel=cancel@entry=1) > at /usr/src/lib/libthr/thread/thr_cond.c:380 >#4 0x000028d8f3530beb in __pthread_cond_timedwait (cond=0x28d91d852008, cond@entry=0x28d913774bb0, mutex=0xf, mutex@entry=0x28d8faea42e0, > abstime=0x0, abstime@entry=0x28d91e72fe20) at /usr/src/lib/libthr/thread/thr_cond.c:420 >#5 0x000028d0cd9c8945 in native_cond_timedwait (cond=0x28d913774bb0, mutex=0x28d8faea42e0, abs=<optimized out>) at ./thread_pthread.c:211 >#6 do_gvl_timer (sched=0x28d8faea42d8, th=0x28d8ffca7a40) at ./thread_pthread.c:440 >#7 thread_sched_to_running_common (sched=sched@entry=0x28d8faea42d8, th=th@entry=0x28d8ffca7a40) at ./thread_pthread.c:485 >#8 0x000028d0cd9c7ad6 in thread_sched_to_running (sched=0x28d8faea42d8, th=0x28d8ffca7a40) at ./thread_pthread.c:519 >#9 thread_start_func_2 (th=th@entry=0x28d8ffca7a40, stack_start=<optimized out>) at thread.c:660 >#10 0x000028d0cd9c787c in thread_start_func_1 (th_ptr=<optimized out>) at ./thread_pthread.c:1094 >#11 0x000028d8f3531a7a in thread_start (curthread=0x28d9137fd100) at /usr/src/lib/libthr/thread/thr_create.c:292 >#12 0x0000000000000000 in ?? () >Backtrace stopped: Cannot access memory at address 0x28d91e730000 > >(gdb) thread 1 > >[Switching to thread 1 (LWP 145211 of process 60860)] >#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) frame 3 > >#3 _thr_rtld_wlock_acquire (lock=0x28d8f3542b80) at /usr/src/lib/libthr/thread/thr_rtld.c:143 >143 /usr/src/lib/libthr/thread/thr_rtld.c: No such file or directory. >(gdb) info locals > >curthread = 0x28d8fae55000 >errsave = 10 >l = <optimized out> >(gdb) info args > >lock = 0x28d8f3542b80 >(gdb) print *((struct rtld_lock *)lock) > >$21 = {lock = {rw_state = -1610612736, rw_flags = 2, rw_blocked_readers = 1, rw_blocked_writers = 0, rw_spare = {0, 0, 0, 0}}, > _pad = '\000' <repeats 31 times>} >(gdb) print /x ((struct rtld_lock *)lock)->lock.rw_state & 0x80000000U > >$22 = 0x80000000 >(gdb) print /x ((struct rtld_lock *)lock)->lock.rw_state & 0x40000000U > >$23 = 0x0 >(gdb) print /x ((struct rtld_lock *)lock)->lock.rw_state & 0x1FFFFFFFU > >$24 = 0x0 >(gdb)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 271490
:
242250
| 242274 |
242275