-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/3777/#review12702
-----------------------------------------------------------


This file is terrible when it comes to {} around code blocks.  I'm not flagging 
issues for this, but it would be great if you could add brackets to places you 
are making changes.


/trunk/main/loader.c
<https://reviewboard.asterisk.org/r/3777/#comment22981>

    Not sure we want this, but if we do I think it should be ast_debug.


- Corey Farrell


On July 14, 2014, 4:16 p.m., Matt Jordan wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/3777/
> -----------------------------------------------------------
> 
> (Updated July 14, 2014, 4:16 p.m.)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Repository: Asterisk
> 
> 
> Description
> -------
> 
> When Asterisk starts a module (calling its load_module function), it 
> re-orders the module list, sorting it alphabetically. Ostensibly, this was 
> done so that the output of 'module show' listed modules in alphabetic order. 
> This had the unfortunate side effect of making modules with complex usage 
> patterns practically unloadable. A module that has a large number of modules 
> that depend on it is typically abandoned during the unloading process. This 
> results in its memory not being reclaimed during exit.
> 
> Generally, this isn't harmful - when the process is destroyed, the operating 
> system will reclaim all memory allocated by the process. However, it makes 
> tracking memory leaks or ref debug leaks a real pain.
> 
> While this patch is not a complete overhaul of the module loader - such an 
> effort would be beyond the scope of what could be done for Asterisk 13 - this 
> does make some marginal improvements to the loader such that modules like 
> res_pjsip or res_stasis *may* be made properly un-loadable in the future.
> 1. The linked list of modules has been replaced with a doubly linked list. 
> This allows traversal of the module list to occur backwards. The module 
> shutdown routine now walks the global list backwards when it attempts to 
> unload modules.
> 2. The alphabetic reorganization of the module list on startup has been 
> removed. Instead, a started module is placed at the end of the module list.
> 3. The ast_update_module_list function - which is used by the CLI to display 
> the modules - now does the sorting alphabetically itself. It creates its own 
> linked list and inserts the modules into it in alphabetic order. This allows 
> for the intent of the previous code to be maintained.
> 
> This patch also contains a fix for res_calendar. Without calendar.conf, the 
> calendar modules were improperly bumping the use count of res_calendar, then 
> failing to load themselves. This patch makes it so that we detect whether or 
> not calendaring is enabled before altering the use count.
> 
> 
> Diffs
> -----
> 
>   /trunk/res/res_calendar.c 418436 
>   /trunk/main/loader.c 418436 
> 
> Diff: https://reviewboard.asterisk.org/r/3777/diff/
> 
> 
> Testing
> -------
> 
> Verified that the CLI command worked appropriately.
> 
> Verified that module loading/unloading of res_calendar (whose calendar 
> modules modify the res_calendar use count) loaded/unloaded properly:
> 
>  Asterisk Dynamic Loader Starting:
> [Jul 14 15:14:52] NOTICE[11877]: loader.c:1317 load_modules: 6 modules will 
> be loaded.
>  Loading res_calendar.so.
>  Loading res_calendar_icalendar.so.
>  Loading res_calendar_exchange.so.
>  Loading res_calendar_caldav.so.
>  Loading res_calendar_ews.so.
> Asterisk Ready.
> *CLI> core stop gracefully
> Waiting for inactivity to perform halt...
>  Unloading res_calendar_ews.so
>  Unloading res_calendar_caldav.so
>  Unloading res_calendar_exchange.so
>  Unloading res_calendar_icalendar.so
>  Unloading res_calendar.so
> Asterisk cleanly ending (0).
> Executing last minute cleanups
> 
> Verified that using autoload with all modules, module are started as they 
> were previously, and now are stopped/unloaded in the reverse order.
> 
> 
> Thanks,
> 
> Matt Jordan
> 
>

-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-dev

Reply via email to