[asterisk-commits] irroot: branch irroot/distrotech-customers-1.8 r319075 - /team/irroot/distrot...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon May 16 05:57:50 CDT 2011
Author: irroot
Date: Mon May 16 05:57:45 2011
New Revision: 319075
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=319075
Log:
Add another deadlock avoidance
=== Thread ID: -1369711760 (do_monitor started at [24733] chan_sip.c restart_monitor())
=== ---> Lock #0 (chan_sip.c): MUTEX 24226 handle_request_do &netlock 0xb55466a0 (1)
=== ---> Lock #1 (chan_sip.c): MUTEX 22130 local_attended_transfer transferer 0xa3278f8 (1)
=== ---> Waiting for Lock #2 (channel.c): MUTEX 1361 __ast_queue_frame chan 0xa8b0808 (1)
=== --- ---> Locked Here: channel.c line 6270 (ast_do_masquerade)
=== -------------------------------------------------------------------
===
=== Thread ID: -1378321552 (pbx_thread started at [ 5042] pbx.c ast_pbx_start())
=== ---> Lock #0 (channel.c): MUTEX 6249 ast_do_masquerade channels 0xb6482388 (1)
=== ---> Lock #1 (channel.c): MUTEX 6246 ast_do_masquerade original 0xa5abc60 (2)
=== ---> Lock #2 (channel.c): MUTEX 6270 ast_do_masquerade clonechan 0xa8b0808 (1)
=== ---> Waiting for Lock #3 (chan_sip.c): MUTEX 6517 sip_indicate p 0xa3278f8 (1)
=== --- ---> Locked Here: chan_sip.c line 22130 (local_attended_transfer)
=== -------------------------------------------------------------------
Modified:
team/irroot/distrotech-customers-1.8/channels/chan_sip.c
Modified: team/irroot/distrotech-customers-1.8/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/irroot/distrotech-customers-1.8/channels/chan_sip.c?view=diff&rev=319075&r1=319074&r2=319075
==============================================================================
--- team/irroot/distrotech-customers-1.8/channels/chan_sip.c (original)
+++ team/irroot/distrotech-customers-1.8/channels/chan_sip.c Mon May 16 05:57:45 2011
@@ -6582,7 +6582,9 @@
struct sip_pvt *p = ast->tech_pvt;
int res = 0;
- sip_pvt_lock(p);
+ while (sip_pvt_trylock(p)) {
+ CHANNEL_DEADLOCK_AVOIDANCE(ast);
+ }
switch(condition) {
case AST_CONTROL_RINGING:
if (ast->_state == AST_STATE_RING) {
More information about the asterisk-commits
mailing list