[asterisk-bugs] [JIRA] (ASTERISK-29698) Segfault if sorcery object_lifetime_maximum and qualify_frequency the same value
Joshua C. Colp (JIRA)
noreply at issues.asterisk.org
Tue Nov 9 14:09:49 CST 2021
[ https://issues.asterisk.org/jira/browse/ASTERISK-29698?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=256826#comment-256826 ]
Joshua C. Colp edited comment on ASTERISK-29698 at 11/9/21 2:08 PM:
--------------------------------------------------------------------
Can you elaborate on what you think above? In schedule_cache_expiration the reference to cache is only unreferenced if it is successfully deleted from the scheduler. If the scheduled item is running then the unref in AST_SCHED_DEL_UNREF is never executed, and instead the unref is done in expire_objects_from_cache. It's one or the other - not both - so there would be no double unreference.
This reference is incremented in the first place when the scheduled item for expire_objects_from_cache is added.
was (Author: jcolp):
Can you elaborate on what you think above? In schedule_cache_expiration the reference to cache is only unreferenced if it is successfully deleted from the scheduler. If the scheduled item is running then the unref in AST_SCHED_DEL_UNREF is never executed, and instead the unref is done in expire_objects_from_cache. It's one or the other - not both - so there would be no double unreference.
> Segfault if sorcery object_lifetime_maximum and qualify_frequency the same value
> --------------------------------------------------------------------------------
>
> Key: ASTERISK-29698
> URL: https://issues.asterisk.org/jira/browse/ASTERISK-29698
> Project: Asterisk
> Issue Type: Bug
> Security Level: None
> Components: Resources/res_pjsip, Resources/res_sorcery_memory_cache
> Affects Versions: 16.21.1
> Reporter: Alexei Gradinari
> Assignee: Unassigned
> Attachments: bt2.txt, bt.txt, core-brief.txt, core-full.txt, core-locks.txt, core-thread1.txt
>
>
> sorcery.conf:
> [res_pjsip]
> endpoint=realtime,ps_endpoints
> endpoint/cache=memory_cache,maximum_objects=3000,expire_on_reload=yes,object_lifetime_maximum=30
> aor=realtime,ps_aors
> aor/cache=memory_cache,maximum_objects=3000,expire_on_reload=yes,object_lifetime_maximum=30
> The endpoint with aor's static contact and qualify_frequency = 30
> I think one thread 'sorcery_memory_cache' clears cache due to expiry
> and another thread 'pjsip_options' uses the same cache object which is already freed.
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list