[asterisk-dev] Possible Deadlock?

Norman Franke norman at myasd.com
Tue Aug 19 11:46:10 CDT 2008


I had a deadlock today using 1.4.21.1. I had asterisk dump core to  
explore in GDB. Thread 32 is waiting for the "channels" lock held by  
21 while holding a channel lock. Thread 21 is then waiting for a lock  
on a channel held by 32 while holding a lock on "channels".

However, I can't figure out how thread 32 got the lock in the first  
place. Perhaps from this in the log?

[Aug 19 10:55:26] VERBOSE[25324] logger.c:     -- Got SIP response 480  
"Temporarily Unavailable" back from 172.16.22.30

And it never released the lock? I see in chan_sip.c:12936

                                 /* XXX Locking issues?? XXX */

This has only happened once recently.

Thread 32 (process 25324):
#0  0xffffe410 in __kernel_vsyscall ()
#1  0xb7edd56e in __lll_mutex_lock_wait () from /lib/tls/i686/cmov/ 
libpthread.so.0
#2  0xb7eda179 in _L_mutex_lock_141 () from /lib/tls/i686/cmov/ 
libpthread.so.0
#3  0xb786a918 in ?? ()
#4  0x0807d514 in ast_cdr_start (cdr=0x815a148) at cdr.c:689
#5  0x0807fd3f in ast_mutex_lock (pmutex=0x815a148) at /usr/src/ 
asterisk-1.4.21.1/include/asterisk/lock.h:755
#6  0x08081795 in ast_channel_alloc (needqueue=0, state=0,  
cid_num=0xb7358a4d "6106421787", cid_name=0x8150810 "",
     acctcode=0x8150810 "", exten=0xb7358a05 "8827",  
context=0xb7358996 "cisco", amaflag=0, name_fmt=0xb78c43d4 "SIP/%s- 
%08x")
     at channel.c:858
#7  0xb787dc90 in sip_new (i=0xb7366560, state=0, title=0x0) at  
chan_sip.c:4012
#8  0xb78ae300 in handle_request_invite (p=0xb7366560, req=0xb786b11c,  
debug=0, seqno=101, sin=0xb786b10c, recount=0xb786b100,
     e=0xb786b33f "sip:8827 at 172.16.8.14:5060", nounlock=0xb786b104) at  
chan_sip.c:14052
#9  0xb78b422b in handle_request (p=0xb7366560, req=0xb786b11c,  
sin=0xb786b10c, recount=0xb786b100, nounlock=0xb786b104)
     at chan_sip.c:15413
#10 0xb78b4cae in sipsock_read (id=0x8285778, fd=11, events=1,  
ignore=0x0) at chan_sip.c:15566
#11 0x080ae93d in ast_io_wait (ioc=0x82777e0, howlong=241) at io.c:279
#12 0xb78b5660 in do_monitor (data=0x0) at chan_sip.c:15779
#13 0x08101bc9 in dummy_start (data=0x82828b0) at utils.c:895
#14 0xb7ed8240 in start_thread () from /lib/tls/i686/cmov/ 
libpthread.so.0
#15 0xb7df349e in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 21 (process 31233):
#0  0xffffe410 in __kernel_vsyscall ()
#1  0xb7edd56e in __lll_mutex_lock_wait () from /lib/tls/i686/cmov/ 
libpthread.so.0
#2  0xb7eda179 in _L_mutex_lock_141 () from /lib/tls/i686/cmov/ 
libpthread.so.0
#3  0xb6c29f78 in ?? ()
#4  0x0807275e in ast_mutex_unlock (pmutex=0x82e4ea8) at /usr/src/ 
asterisk-1.4.21.1/include/asterisk/lock.h:745
#5  0x0807fd3f in ast_mutex_lock (pmutex=0x82e4ea8) at /usr/src/ 
asterisk-1.4.21.1/include/asterisk/lock.h:755
#6  0x080824a2 in ast_channel_free (chan=0x82e4e30) at channel.c:1198
#7  0x080831db in ast_hangup (chan=0x82e4e30) at channel.c:1502
#8  0xb71d3c25 in dial_exec_full (chan=0xb6f2b860, data=0xb6c2d008,  
peerflags=0xb6c2aed4, continue_exec=0x0) at app_dial.c:1719
#9  0xb71d3e50 in dial_exec (chan=0xb6f2b860, data=0xb6c2d008) at  
app_dial.c:1753
#10 0x080bfeab in pbx_exec (c=0xb6f2b860, app=0x82a78a8,  
data=0xb6c2d008) at pbx.c:537
#11 0x080c32f3 in pbx_extension_helper (c=0xb6f2b860, con=0x0,  
context=0xb6f2b9e0 "smcx", exten=0xb6f2ba30 "3911", priority=11,
     label=0x0, callerid=0xb6f3e1b8 "7325890000", action=E_SPAWN) at  
pbx.c:1862
#12 0x080c43ed in ast_spawn_extension (c=0xb6f2b860,  
context=0xb6f2b9e0 "smcx", exten=0xb6f2ba30 "3911", priority=11,
     callerid=0xb6f3e1b8 "7325890000") at pbx.c:2317
#13 0x080c4909 in __ast_pbx_run (c=0xb6f2b860) at pbx.c:2419
#14 0x080c56d8 in pbx_thread (data=0xb6f2b860) at pbx.c:2636
#15 0x08101bc9 in dummy_start (data=0xb6f00ac0) at utils.c:895
#16 0xb7ed8240 in start_thread () from /lib/tls/i686/cmov/ 
libpthread.so.0
#17 0xb7df349e in clone () from /lib/tls/i686/cmov/libc.so.6

Norman Franke
Answering Service for Directors, Inc.
www.myasd.com





More information about the asterisk-dev mailing list