[asterisk-dev] [Code Review] 4501: ast_register_atexit should only be used when absolutely needed (13+ version)

rmudgett reviewboard at asterisk.org
Fri Mar 20 18:52:57 CDT 2015



> On March 15, 2015, 5:54 a.m., Corey Farrell wrote:
> > /branches/13/main/core_local.c, lines 1012-1019
> > <https://reviewboard.asterisk.org/r/4501/diff/1/?file=72410#file72410line1012>
> >
> >     This was an inconsistency with previous versions and all other channel drivers - nothing else hangs up during shutdown 'now'.  That said it's how things currently work in 13, so maybe a separate function should ast_register_atexit to hangup all local channels?

All channels are hungup during shutdown 'now'.  Look at asterisk.c:can_safely_quit().  In v11, that calls ast_begin_shutdown(1) which sets the soft hangup flag on all channels.  In v13, that calls ast_softhangup_all().

The code you point out here can be removed as a leftover from moving chan_local.c into the core.  chan_local.c did this when it unloaded to make sure that there were no local channels left.  It's kind of useless there too because the module is reffed on channel creation and if there ever are any local channels they wouldn't have a chance to go away before the module unload cleanup completed and hilarity ensues.


- rmudgett


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


On March 15, 2015, 5:33 a.m., Corey Farrell wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/4501/
> -----------------------------------------------------------
> 
> (Updated March 15, 2015, 5:33 a.m.)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Bugs: ASTERISK-24142, ASTERISK-24683, ASTERISK-24805, and ASTERISK-24881
>     https://issues.asterisk.org/jira/browse/ASTERISK-24142
>     https://issues.asterisk.org/jira/browse/ASTERISK-24683
>     https://issues.asterisk.org/jira/browse/ASTERISK-24805
>     https://issues.asterisk.org/jira/browse/ASTERISK-24881
> 
> 
> Repository: Asterisk
> 
> 
> Description
> -------
> 
> We've had many issues related to "core stop now" or "core restart now" causing segmentation faults.  The solution to this is to change almost everything to use ast_register_cleanup.
> 
> Exceptions:
> CDR: Flush records.
> res_musiconhold: Kill external applications.
> AstDB: Close the DB.
> canary_exit: Kill canary process.
> 
> Although some changes from ast_register_atexit to ast_register_cleanup are not strictly necessary, the point is for nothing to use ast_register_atexit except where required.  For this reason the change is across the board.
> 
> 
> Diffs
> -----
> 
>   /branches/13/main/xmldoc.c 432991 
>   /branches/13/main/utils.c 432991 
>   /branches/13/main/udptl.c 432991 
>   /branches/13/main/timing.c 432991 
>   /branches/13/main/threadstorage.c 432991 
>   /branches/13/main/taskprocessor.c 432991 
>   /branches/13/main/stun.c 432991 
>   /branches/13/main/stasis.c 432991 
>   /branches/13/main/sounds_index.c 432991 
>   /branches/13/main/sorcery.c 432991 
>   /branches/13/main/rtp_engine.c 432991 
>   /branches/13/main/pickup.c 432991 
>   /branches/13/main/pbx.c 432991 
>   /branches/13/main/message.c 432991 
>   /branches/13/main/manager_system.c 432991 
>   /branches/13/main/manager_mwi.c 432991 
>   /branches/13/main/manager_endpoints.c 432991 
>   /branches/13/main/manager_channels.c 432991 
>   /branches/13/main/manager_bridges.c 432991 
>   /branches/13/main/manager.c 432991 
>   /branches/13/main/indications.c 432991 
>   /branches/13/main/image.c 432991 
>   /branches/13/main/http.c 432991 
>   /branches/13/main/format_cache.c 432991 
>   /branches/13/main/format.c 432991 
>   /branches/13/main/file.c 432991 
>   /branches/13/main/features.c 432991 
>   /branches/13/main/dnsmgr.c 432991 
>   /branches/13/main/data.c 432991 
>   /branches/13/main/core_local.c 432991 
>   /branches/13/main/config_options.c 432991 
>   /branches/13/main/config.c 432991 
>   /branches/13/main/codec.c 432991 
>   /branches/13/main/cli.c 432991 
>   /branches/13/main/channel.c 432991 
>   /branches/13/main/cel.c 432991 
>   /branches/13/main/ccss.c 432991 
>   /branches/13/main/bridge.c 432991 
>   /branches/13/main/astobj2_container.c 432991 
>   /branches/13/main/astobj2.c 432991 
>   /branches/13/main/astmm.c 432991 
>   /branches/13/main/astfd.c 432991 
>   /branches/13/main/asterisk.c 432991 
>   /branches/13/main/aoc.c 432991 
>   /branches/13/include/asterisk.h 432991 
> 
> Diff: https://reviewboard.asterisk.org/r/4501/diff/
> 
> 
> Testing
> -------
> 
> Compiled, started and ran 'core stop now'.
> 
> 
> Thanks,
> 
> Corey Farrell
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20150320/a5f95da2/attachment.html>


More information about the asterisk-dev mailing list