[asterisk-dev] [Code Review] 4596: res_pjsip_phoneprov_provider: Fix leaked OBJ_MULTIPLE iterator (2nd try)
George Joseph
reviewboard at asterisk.org
Tue Apr 7 10:32:39 CDT 2015
> On April 7, 2015, 6:15 a.m., Corey Farrell wrote:
> > branches/13/res/res_pjsip_config_wizard.c, lines 1189-1191
> > <https://reviewboard.asterisk.org/r/4596/diff/1/?file=73638#file73638line1189>
> >
> > I'm concerned that this is needed due to the load order change. My worry is that there might be other modules that will need this due to res_pjsip_config_wizard loading later.
> >
> > I'm not confident enough with my knowledge of res_pjsip modules to say if this is ok.
This is due to how config_wizard is implemented (as a sorcery wizard). If config_wizard loads early then it will be in place before res_pjsip and res_pjsip_phoneprov_provider and all will load correctly. This causes it to unload late though and that caused the FRACKs. If the config_wizard loads after res_pjsip and res_pjsip_phoneprov_provider, then it has to trigger them both to reload or they won't pick up the config_wizard generated objects. The unloads work correctly in this case.
I'm looking at alternate config_wizard load/unload strategies but it's tricky. In the mean time, this should do the trick.
- George
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/4596/#review15085
-----------------------------------------------------------
On April 6, 2015, 2:32 p.m., George Joseph wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/4596/
> -----------------------------------------------------------
>
> (Updated April 6, 2015, 2:32 p.m.)
>
>
> Review request for Asterisk Developers and Corey Farrell.
>
>
> Bugs: ASTERISK-24935
> https://issues.asterisk.org/jira/browse/ASTERISK-24935
>
>
> Repository: Asterisk
>
>
> Description
> -------
>
> Original issue: res_pjsip_phoneprov_provider was using ao2_callback with OBJ_MULTIPLE, then ignoring the return. This resulted in a reference leak. Added OBJ_NODATA flag.
>
> Unfortunately, this highlighted a module unload order issue where res_phoneprov and res_pjsip_phoneprov_provider were unloading before res_pjsip_config_wizard, which needed them.
>
> res_pjsip_config_wizard is itself a sorcery wizard so there are some complexities to it's load order (it's long story) but I've removed the GLOBAL_SYMBOLS flag from res_pjsip_config_wizard so it loads later and unloads earlier and also triggered a reload of res_pjsip_phoneprov_provider. Now they load and unload in the correct order.
>
>
> Diffs
> -----
>
> branches/13/res/res_pjsip_phoneprov_provider.c 434148
> branches/13/res/res_pjsip_config_wizard.c 434148
>
> Diff: https://reviewboard.asterisk.org/r/4596/diff/
>
>
> Testing
> -------
>
> Checked load/unload order and make sure there were no FRACKs on unload.
>
>
> Thanks,
>
> George Joseph
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20150407/79912d04/attachment.html>
More information about the asterisk-dev
mailing list