[Bug 211947] bconsole won't die sitting on do_rw_wrlock

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Aug 24 19:54:52 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=211947

--- Comment #4 from longwitz at 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.


More information about the freebsd-threads mailing list