[asterisk-bugs] [JIRA] (ASTERISK-24614) Deadlock when DEBUG_THREADS compiler flag enabled
Richard Mudgett (JIRA)
noreply at issues.asterisk.org
Fri Dec 12 16:58:28 CST 2014
[ https://issues.asterisk.org/jira/browse/ASTERISK-24614?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Richard Mudgett updated ASTERISK-24614:
---------------------------------------
Attachment: jira_asterisk_24614_v12.patch
jira_asterisk_24614_v1.8.patch
jira_asterisk_24614_v1.8.28cert.patch
Attaching patches for branches recently entering security fix only.
> Deadlock when DEBUG_THREADS compiler flag enabled
> -------------------------------------------------
>
> Key: ASTERISK-24614
> URL: https://issues.asterisk.org/jira/browse/ASTERISK-24614
> Project: Asterisk
> Issue Type: Bug
> Security Level: None
> Components: Core/General
> Affects Versions: 1.8.32.1, 11.14.2, 12.7.2, 13.0.2
> Reporter: Richard Mudgett
> Assignee: Richard Mudgett
> Attachments: backtrace.txt, jira_asterisk_24614_v12.patch, jira_asterisk_24614_v1.8.28cert.patch, jira_asterisk_24614_v1.8.patch
>
>
> There is a sporadical strange deadlock in where Certified Asterisk 1.8.28-cert2 is running with DEBUG_TRHEADS compiler flag enabled.
> In the backtrace log you will find thread 49 waiting for the reentrancy mutex which seems not to get unlocked by thread 7.
> When using Certified Asterisk 1.8.15-cert6 (DEBUG_THREADS enabled) instead this deadlock does not occur.
> After a look into the source code, it is most likely the changes of ASTERISK-22455 are responsible for this deadlock. In lock.c / int __ast_cond_wait() a pthread_mutex is copied which leads to undefined results since pthread_mutex is an opaque type.
> {noformat}
> ...
> } else if (t->tracking) {
> pthread_mutex_t reentr_mutex_orig;
> ast_reentrancy_lock(lt);
> /* Restore lock tracking to what it was prior to the wait */
> reentr_mutex_orig = lt->reentr_mutex;
> *lt = lt_orig;
> /* un-trash the mutex we just copied over */
> lt->reentr_mutex = reentr_mutex_orig;
> ast_reentrancy_unlock(lt);
>
> ast_restore_lock_info(t);
> }
> ...
> {noformat}
> Thanks to Thomas Airmont for finding this obscure regression in the DEBUG_THREADS code.
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list