[asterisk-dev] [Code Review] Asterisk 1.8 Deadlock in app_queue

irroot reviewboard at asterisk.org
Sat Sep 10 14:43:24 CDT 2011

This is an automatically generated e-mail. To reply, visit:

(Updated Sept. 10, 2011, 2:43 p.m.)

Review request for Asterisk Developers and Matthew Nicholson.


hi there there is no need to call ao2_lock(queues) / ao2_unlock(queues) outside of the ao2 functions as they handle the container locking.

app_queue MUST never lock a channel with the queues container lock held this will lead to these deadlocks on masquerade / transfer the call to ao2_lock(queues) in try_calling will deadlock with update_queues in try_calling and the fixup routine the first instance has been fixed by mnicholson [added to this review due to this]

the latest patch removes all calls to ao2_[un]lock(queues) that are double locks. 


Locking order with queues container.

1)the queues container is locked when calling channels this causes a deadlock and is unneeded.
2)lock the queues container when running queue_update to maintain correct locking order.

This addresses bug ASTERISK-18101.

Diffs (updated)

  /branches/1.8/apps/app_queue.c 335124 

Diff: https://reviewboard.asterisk.org/r/1402/diff




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20110910/cd1ef404/attachment.htm>

More information about the asterisk-dev mailing list