[asterisk-bugs] [JIRA] (ASTERISK-25023) Deadlock in chan_sip in update_provisional_keepalive
Richard Mudgett (JIRA)
noreply at issues.asterisk.org
Wed Mar 16 10:44:57 CDT 2016
[ https://issues.asterisk.org/jira/browse/ASTERISK-25023?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=229910#comment-229910 ]
Richard Mudgett commented on ASTERISK-25023:
--------------------------------------------
[~ibercom] Unlocking order does not affect deadlocks and is rarely important for other reasons. Unlocking order is mostly a convenience to the particular function. That particular patch (https://gerrit.asterisk.org/#/c/2386/) is not relevant to this issue and v11 is not affected by the deadlocks reported by this issue.
> Deadlock in chan_sip in update_provisional_keepalive
> ----------------------------------------------------
>
> Key: ASTERISK-25023
> URL: https://issues.asterisk.org/jira/browse/ASTERISK-25023
> Project: Asterisk
> Issue Type: Bug
> Security Level: None
> Components: Channels/chan_sip/General
> Affects Versions: 13.3.2
> Environment: centos 6 / 64Bit
> Reporter: Arnd Schmitter
> Assignee: Richard Mudgett
> Target Release: 13.8.0
>
> Attachments: backtrace.txt, core-show-locks.txt, trace.txt
>
>
> There is a race condition / deadlock when update_provisional_keepalive is called.
> If there is already a scheduler run plant for calling send_provisional_keepalive_full.
> the func update_provisional_keepalive gets called with a locked sip_pvt struct and the first thing it does is delete the plant scheduler.
> If the plant scheduler is started after the sip_pvt lock and before the AST_SCHED_DEL_UNREF call in update_provisional_keepalive is executed, the scheduler job is blocked in send_provisional_keepalive_full, waiting to get a lock on the sip_pvt struct.
> The call to AST_SCHED_DEL_UNREF is waiting for a condistion signal, that the running scheduler finish.
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list