Re: deadlock and LOR with threads

From: Gleb Smirnoff <glebius_at_freebsd.org>
Date: Sun, 20 Feb 2005 12:55:32 +0300
And it appeared to be 100% reproducible.

On Sun, Feb 20, 2005 at 11:55:57AM +0300, Gleb Smirnoff wrote:
T>   Today I've upgraded my edsktop to the new CURRENT and experienced
T> the following problem.
T> I'm running gkrellm (linked against libpthread) with gkrellmms plugin.
T> When I started xmms using gkrellmms button, gkrellm freezed. After
T> gkrellm was killed with SIGKILL, new instances of gkrellm freezed on start
T> before drawing a window. I tried to gdb gkrellm with the followin result:
T> 
T> glebius_at_morannon:~:|>gdb `which gkrellm`
T> GNU gdb 6.1.1 [FreeBSD]
T> Copyright 2004 Free Software Foundation, Inc.
T> GDB is free software, covered by the GNU General Public License, and you are
T> welcome to change it and/or distribute copies of it under certain conditions.
T> Type "show copying" to see the conditions.
T> There is absolutely no warranty for GDB.  Type "show warranty" for details.
T> This GDB was configured as "i386-marcel-freebsd"...(no debugging symbols found)...
T> (gdb) run
T> Starting program: /usr/X11R6/bin/gkrellm 
T> (no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...^C
T> Program received signal SIGINT, Interrupt.
T> [Switching to Thread 2 (LWP 100150)]
T> 0x282ba38b in pthread_testcancel () from /usr/lib/libpthread.so.1
T> (gdb) 
T> 
T> Then I looked into dmesg and found this LOR:
T> lock order reversal
T>  1st 0xc07bdd80 sched lock (sched lock) _at_ /usr/src/sys/kern/sys_process.c:657
T>  2nd 0xc07c1ac4 sleepq chain (sleepq chain) _at_ /usr/src/sys/kern/subr_sleepqueue.c:219
T> KDB: stack backtrace:
T> kdb_backtrace(c075c7bd,c07c1ac4,c075b8d7,c075b8d7,c075b8e4) at kdb_backtrace+0x2e
T> witness_checkorder(c07c1ac4,9,c075b8e4,db,c15964b4) at witness_checkorder+0x6aa
T> _mtx_lock_spin_flags(c07c1ac4,0,c075b8e4,db,d1a22b74) at _mtx_lock_spin_flags+0x8d
T> sleepq_lock(c15964b4,c1da57f0,c1da5858,c1955060,d1a22b98) at sleepq_lock+0x39
T> wakeup(c15964b4,1,c0756e2e,5ad,c1e60000) at wakeup+0x12
T> thread_continued(c1da57f0,0,c075d149,291,a) at thread_continued+0x9c
T> kern_ptrace(c1e37190,7,8cc,1,0) at kern_ptrace+0xadf
T> ptrace(c1e37190,d1a22d14,10,3ff,4) at ptrace+0xf0
T> syscall(2f,2f,2f,0,1871d) at syscall+0x270
T> Xint0x80_syscall() at Xint0x80_syscall+0x1f
T> --- syscall (26, FreeBSD ELF32, ptrace), eip = 0x28346fff, esp = 0xbfbfdf2c, ebp = 0xbfbfdfe8 ---
T> 
T> -- 
T> Totus tuus, Glebius.
T> GLEBIUS-RIPN GLEB-RIPE
T> _______________________________________________
T> freebsd-current_at_freebsd.org mailing list
T> http://lists.freebsd.org/mailman/listinfo/freebsd-current
T> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"

-- 
Totus tuus, Glebius.
GLEBIUS-RIPN GLEB-RIPE
Received on Sun Feb 20 2005 - 08:55:36 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:28 UTC