Skip site navigation (1)Skip section navigation (2)
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/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D211947

--- 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=3D0x800a42880,
tsp=3D<optimized out>) at /usr/src/lib/libthr/thread/thr_umtx.c:297
#2  0x000000080083186a in _thr_rwlock_wrlock (rwlock=3D<optimized out>,
tsp=3D<optimized out>)
    at /usr/src/lib/libthr/thread/thr_umtx.h:204
#3  _thr_rtld_wlock_acquire (lock=3D0x800a42880) at
/usr/src/lib/libthr/thread/thr_rtld.c:141
#4  0x000000080060bc80 in wlock_acquire (lock=3D0x80081fcc0 <rtld_locks>,
lockstate=3D0x7fffffffe658)
    at /usr/src/libexec/rtld-elf/rtld_lock.c:217
#5  0x0000000800605dbd in objlist_call_fini (list=3D<optimized out>,
root=3D<optimized out>, lockstate=3D<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=3D0x80081fcc0 <rtld_locks>,
lockstate=3D0x7fffffffe658)
    at /usr/src/libexec/rtld-elf/rtld_lock.c:217
217             lockinfo.wlock_acquire(lock->handle);
(gdb) p/x *(struct urwlock *)(lock->handle)
$1 =3D {rw_state =3D 0xa0000000, rw_flags =3D 0x2, rw_blocked_readers =3D 0=
x0,
rw_blocked_writers =3D 0x0, rw_spare =3D {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=3D0xfffff80052d114b0, newtd=3D<value optimized out>,
    flags=3D<value optimized out>) at /usr/src/sys/kern/sched_ule.c:1945
1945                    cpuid =3D PCPU_GET(cpuid);
(kgdb) bt
#0  sched_switch (td=3D0xfffff80052d114b0, newtd=3D<value optimized out>,
flags=3D<value optimized out>)
    at /usr/src/sys/kern/sched_ule.c:1945
#1  0xffffffff80551271 in mi_switch (flags=3D260, newtd=3D0x0) at
/usr/src/sys/kern/kern_synch.c:491
#2  0xffffffff80594ffb in sleepq_catch_signals (wchan=3D0xfffff80052018c80,
pri=3D0) at /usr/src/sys/kern/subr_sleepqueue.c:426
#3  0xffffffff80594eaf in sleepq_wait_sig (wchan=3D0x0, pri=3D0) at
/usr/src/sys/kern/subr_sleepqueue.c:632
#4  0xffffffff80550c7d in _sleep (ident=3D<value optimized out>, lock=3D<va=
lue
optimized out>, priority=3D<value optimized out>,
    wmesg=3D<value optimized out>, sbt=3D<value optimized out>, pr=3D<value=
 optimized
out>, flags=3D<value optimized out>)
    at /usr/src/sys/kern/kern_synch.c:253
#5  0xffffffff80565285 in umtxq_sleep (uq=3D0xfffff80052018c80,
wmesg=3D0xffffffff808b2ebc "uwrlck", abstime=3D0x0)
    at /usr/src/sys/kern/kern_umtx.c:780
#6  0xffffffff8056881f in do_rw_wrlock (td=3D0xfffff80052d114b0,
rwlock=3D0x800a42880, timeout=3D<value optimized out>)
    at /usr/src/sys/kern/kern_umtx.c:3109
#7  0xffffffff8056c4a7 in __umtx_op_rw_wrlock (td=3D<value optimized out>,
uap=3D<value optimized out>)
    at /usr/src/sys/kern/kern_umtx.c:3657
#8  0xffffffff807db84f in amd64_syscall (td=3D0xfffff80052d114b0, traced=3D=
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=3D0xfffff80052d114b0, newtd=3D<value optimized out>,
flags=3D<value optimized out>)
    at /usr/src/sys/kern/sched_ule.c:1945
        tdq =3D <value optimized out>
        ts =3D <value optimized out>
        mtx =3D <value optimized out>
#1  0xffffffff80551271 in mi_switch (flags=3D260, newtd=3D0x0) at
/usr/src/sys/kern/kern_synch.c:491
        td =3D (struct thread *) 0xfffff80052d114b0
        new_switchtime =3D <value optimized out>
        runtime =3D <value optimized out>
#2  0xffffffff80594ffb in sleepq_catch_signals (wchan=3D0xfffff80052018c80,
pri=3D0) at /usr/src/sys/kern/subr_sleepqueue.c:426
        td =3D <value optimized out>
        ret =3D Error accessing memory address 0x4: Bad address.

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-211947-16-1Dr7136cXZ>