Date: Wed, 24 Aug 2016 19:54:52 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-threads@FreeBSD.org Subject: [Bug 211947] bconsole won't die sitting on do_rw_wrlock Message-ID: <bug-211947-16-1Dr7136cXZ@https.bugs.freebsd.org/bugzilla/> In-Reply-To: <bug-211947-16@https.bugs.freebsd.org/bugzilla/> References: <bug-211947-16@https.bugs.freebsd.org/bugzilla/>
index | next in thread | previous in thread | raw e-mail
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=211947 --- Comment #4 from longwitz@incore.de --- I can confirm that the user stack of the hanging process nearly looks like yours, the difference is probably because I use amd64: [Switching to Thread 801406400 (LWP 100956)] _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 37 RSYSCALL_ERR(_umtx_op) (gdb) bt #0 _umtx_op_err () at /usr/src/lib/libthr/arch/amd64/amd64/_umtx_op_err.S:37 #1 0x000000080082a267 in __thr_rwlock_wrlock (rwlock=0x800a42880, tsp=<optimized out>) at /usr/src/lib/libthr/thread/thr_umtx.c:297 #2 0x000000080083186a in _thr_rwlock_wrlock (rwlock=<optimized out>, tsp=<optimized out>) at /usr/src/lib/libthr/thread/thr_umtx.h:204 #3 _thr_rtld_wlock_acquire (lock=0x800a42880) at /usr/src/lib/libthr/thread/thr_rtld.c:141 #4 0x000000080060bc80 in wlock_acquire (lock=0x80081fcc0 <rtld_locks>, lockstate=0x7fffffffe658) at /usr/src/libexec/rtld-elf/rtld_lock.c:217 #5 0x0000000800605dbd in objlist_call_fini (list=<optimized out>, root=<optimized out>, lockstate=<optimized out>) at /usr/src/libexec/rtld-elf/rtld.c:2418 #6 0x0000000800604f39 in rtld_exit () at /usr/src/libexec/rtld-elf/rtld.c:2800 #7 0x0000000800b5f8c6 in __cxa_finalize () from /lib/libc.so.7 #8 0x0000000800b0337c in exit () from /lib/libc.so.7 #9 0x0000000000400bcb in main () (gdb) frame 4 #4 0x000000080060bc80 in wlock_acquire (lock=0x80081fcc0 <rtld_locks>, lockstate=0x7fffffffe658) at /usr/src/libexec/rtld-elf/rtld_lock.c:217 217 lockinfo.wlock_acquire(lock->handle); (gdb) p/x *(struct urwlock *)(lock->handle) $1 = {rw_state = 0xa0000000, rw_flags = 0x2, rw_blocked_readers = 0x0, rw_blocked_writers = 0x0, rw_spare = {0x0, 0x0, 0x0, 0x0}} In this situation I can see the backtrace of the process in the kernel, but "bt full" stops in frame 2: (kgdb) thread 705 [Switching to thread 705 (Thread 100956)]#0 sched_switch (td=0xfffff80052d114b0, newtd=<value optimized out>, flags=<value optimized out>) at /usr/src/sys/kern/sched_ule.c:1945 1945 cpuid = PCPU_GET(cpuid); (kgdb) bt #0 sched_switch (td=0xfffff80052d114b0, newtd=<value optimized out>, flags=<value optimized out>) at /usr/src/sys/kern/sched_ule.c:1945 #1 0xffffffff80551271 in mi_switch (flags=260, newtd=0x0) at /usr/src/sys/kern/kern_synch.c:491 #2 0xffffffff80594ffb in sleepq_catch_signals (wchan=0xfffff80052018c80, pri=0) at /usr/src/sys/kern/subr_sleepqueue.c:426 #3 0xffffffff80594eaf in sleepq_wait_sig (wchan=0x0, pri=0) at /usr/src/sys/kern/subr_sleepqueue.c:632 #4 0xffffffff80550c7d in _sleep (ident=<value optimized out>, lock=<value optimized out>, priority=<value optimized out>, wmesg=<value optimized out>, sbt=<value optimized out>, pr=<value optimized out>, flags=<value optimized out>) at /usr/src/sys/kern/kern_synch.c:253 #5 0xffffffff80565285 in umtxq_sleep (uq=0xfffff80052018c80, wmesg=0xffffffff808b2ebc "uwrlck", abstime=0x0) at /usr/src/sys/kern/kern_umtx.c:780 #6 0xffffffff8056881f in do_rw_wrlock (td=0xfffff80052d114b0, rwlock=0x800a42880, timeout=<value optimized out>) at /usr/src/sys/kern/kern_umtx.c:3109 #7 0xffffffff8056c4a7 in __umtx_op_rw_wrlock (td=<value optimized out>, uap=<value optimized out>) at /usr/src/sys/kern/kern_umtx.c:3657 #8 0xffffffff807db84f in amd64_syscall (td=0xfffff80052d114b0, traced=0) at subr_syscall.c:141 #9 0xffffffff807c040b in Xfast_syscall () at /usr/src/sys/amd64/amd64/exception.S:398 #10 0x0000000800833e8c in ?? () Previous frame inner to this frame (corrupt stack?) (kgdb) bt full #0 sched_switch (td=0xfffff80052d114b0, newtd=<value optimized out>, flags=<value optimized out>) at /usr/src/sys/kern/sched_ule.c:1945 tdq = <value optimized out> ts = <value optimized out> mtx = <value optimized out> #1 0xffffffff80551271 in mi_switch (flags=260, newtd=0x0) at /usr/src/sys/kern/kern_synch.c:491 td = (struct thread *) 0xfffff80052d114b0 new_switchtime = <value optimized out> runtime = <value optimized out> #2 0xffffffff80594ffb in sleepq_catch_signals (wchan=0xfffff80052018c80, pri=0) at /usr/src/sys/kern/subr_sleepqueue.c:426 td = <value optimized out> ret = Error accessing memory address 0x4: Bad address. -- You are receiving this mail because: You are the assignee for the bug.help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-211947-16-1Dr7136cXZ>
