[asterisk-dev] [Code Review] Asterisk 1.8 Deadlock in app_queue
irroot
reviewboard at asterisk.org
Sat Sep 10 15:01:54 CDT 2011
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1402/#review4278
-----------------------------------------------------------
Here is a self review explaining why its been altered.
/branches/1.8/apps/app_queue.c
<https://reviewboard.asterisk.org/r/1402/#comment8365>
ao2_t_find / ao2_t_link
is used to return the q no need to lock here.
/branches/1.8/apps/app_queue.c
<https://reviewboard.asterisk.org/r/1402/#comment8366>
ao2_iterator_next handles the queues lock
/branches/1.8/apps/app_queue.c
<https://reviewboard.asterisk.org/r/1402/#comment8367>
ao2_t_find is used to get the queue so no need to lock the container here
/branches/1.8/apps/app_queue.c
<https://reviewboard.asterisk.org/r/1402/#comment8368>
ao2_t_iterator_next handles locking
/branches/1.8/apps/app_queue.c
<https://reviewboard.asterisk.org/r/1402/#comment8369>
This is only needed for compare_weight latter on see first review above and it will lock a channel while held this long leading to a deadlock path on masquerade this is the route of the locks reported in this bug.
/branches/1.8/apps/app_queue.c
<https://reviewboard.asterisk.org/r/1402/#comment8370>
we do not need to lock the queues container when working on the members of a queue
/branches/1.8/apps/app_queue.c
<https://reviewboard.asterisk.org/r/1402/#comment8371>
working with members does not need queues container held
/branches/1.8/apps/app_queue.c
<https://reviewboard.asterisk.org/r/1402/#comment8372>
here we read members from the DB there is no need to lock the container here as its handeled by load_realtime_queue
/branches/1.8/apps/app_queue.c
<https://reviewboard.asterisk.org/r/1402/#comment8373>
ao2_callback will take care of this.
/branches/1.8/apps/app_queue.c
<https://reviewboard.asterisk.org/r/1402/#comment8374>
ao2_iterator does this not needed here
- irroot
On Sept. 10, 2011, 2:43 p.m., irroot wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1402/
> -----------------------------------------------------------
>
> (Updated Sept. 10, 2011, 2:43 p.m.)
>
>
> Review request for Asterisk Developers and Matthew Nicholson.
>
>
> Summary
> -------
>
> 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.
> https://issues.asterisk.org/jira/browse/ASTERISK-18101
>
>
> Diffs
> -----
>
> /branches/1.8/apps/app_queue.c 335124
>
> Diff: https://reviewboard.asterisk.org/r/1402/diff
>
>
> Testing
> -------
>
>
> Thanks,
>
> irroot
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20110910/79fcfc7d/attachment-0001.htm>
More information about the asterisk-dev
mailing list