[asterisk-bugs] [JIRA] (ASTERISK-19639) [patch] - Deadlock in queue with attended transfer

Matt Jordan (JIRA) noreply at issues.asterisk.org
Thu Jan 9 14:59:03 CST 2014


    [ https://issues.asterisk.org/jira/browse/ASTERISK-19639?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=213875#comment-213875 ] 

Matt Jordan commented on ASTERISK-19639:
----------------------------------------

Good news! With a bit of trolling through the history that Paul provided in #asterisk-dev, this particular piece of "crappy code" has already been fixed.

The locking inversion occurred because of the following:
 * Masquerade locks the channel. During the masquerade, the app_queue fixup function is called, grabbing the Queue lock.
 * At the same time, calling get_queue_member_status *can* cause the channel to be locked. If get_queue_member_status is called within the Queue lock, this causes a deadlock.

However, in r378663, rmudgett modified the code in this place such that it no longer calls get_queue_member_status in the first place (note that this was done as part of the cleanup in ASTERISK-16115; see [this patch here|https://issues.asterisk.org/jira/secure/attachment/45753/jira_asterisk_16115_single_q_v1.8.patch]). Now, since all we need to do there is clear their status, that is done via {{member_call_pending_clear}} - which, while it locks the queue member, does not have to go out to the device state/extension state core.

Since this no longer appears to be a bug in the latest Asterisk 1.8, I'm going to go ahead and close this out as Fixed.
                
> [patch] - Deadlock in queue with attended transfer
> --------------------------------------------------
>
>                 Key: ASTERISK-19639
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-19639
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Applications/app_queue
>    Affects Versions: 1.8.9.3
>            Reporter: Byron Clark
>         Attachments: backtrace.txt, queue_memberstatus_deadlock.patch
>
>
> I haven't been able to find an easy way to reproduce this deadlock, but from the backtrace it appears to happen when a transfer occurs on a queue agent while a new caller is entering the queue. That said, it seems to be somewhat rare.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.asterisk.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the asterisk-bugs mailing list