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



/branches/12/res/stasis/command.h
<https://reviewboard.asterisk.org/r/3908/#comment23589>

    Remove this special function and use ast_free_ptr instead.  This is what 
ast_free_ptr is for.



/branches/12/res/stasis/command.h
<https://reviewboard.asterisk.org/r/3908/#comment23588>

    Remove this special function and use __ao2_cleanup instead.  This is what 
__ao2_cleanup is for.



/branches/12/res/stasis/command.c
<https://reviewboard.asterisk.org/r/3908/#comment23592>

    You should call the data_destructor here if it is present and then clear 
the data_destructor pointer.  Otherwise, you are extending the life of the data 
object possibly too long from what it was before.



/branches/12/res/stasis/command.c
<https://reviewboard.asterisk.org/r/3908/#comment23591>

    Call the data_destructor here if there is one to guarantee that the data 
will be destroyed regardless of successfully queueing the command.  Otherwise, 
you could return -1 and the caller would not know if the data was destroyed.
    
    It might be better to have command_create() do this instead if the command 
object could not be created.  This way the other places that create commands 
would be covered as well.


- rmudgett


On Aug. 20, 2014, 4:21 p.m., Jonathan Rose wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/3908/
> -----------------------------------------------------------
> 
> (Updated Aug. 20, 2014, 4:21 p.m.)
> 
> 
> Review request for Asterisk Developers, kmoore, Matt Jordan, and rmudgett.
> 
> 
> Bugs: ASTERISK-24147
>     https://issues.asterisk.org/jira/browse/ASTERISK-24147
> 
> 
> Repository: Asterisk
> 
> 
> Description
> -------
> 
> Here's a basic rundown of what was happening:
> 
> 1. Stasis application with a channel in it, channel is in a bridge.  Playback 
> actions for the channel are queued, the stasis control is running them.
> 
> 2. The channel hangs up. Because the stasis control detects a hangup and the 
> depart is expected to be handled when the channel leaves the bridge, the 
> stasis application execution function exits taking the control along with it. 
> When the PBX thread exits, the channel is considered fully hung up and leaves 
> the bridging core. At this point we are running after bridge callbacks with, 
> one of which holds a pointer to a dead control object that we are trying to 
> do all queue actions to along with other things.  This causes the crash.
> 
> In order to fix this, I made sure that if the control execution loop is 
> exited without pulling the channel out of the bridge that the channel depart 
> would occur manually and the control would be marked so that the after bridge 
> cb wouldn't attempt to exit the bridge in this case. This wasn't actually 
> causing problems, but Richard and I both have concerns about an after bridge 
> callback attempting to depart a channel from a bridge... it seems a little 
> out there.
> 
> 
> Diffs
> -----
> 
>   /branches/12/res/stasis/stasis_bridge.c 421424 
>   /branches/12/res/stasis/control.c 421424 
>   /branches/12/res/stasis/command.c 421424 
>   /branches/12/res/stasis/command.h 421424 
>   /branches/12/res/res_stasis_recording.c 421424 
>   /branches/12/res/res_stasis_playback.c 421424 
>   /branches/12/res/res_stasis_answer.c 421424 
>   /branches/12/res/res_stasis.c 421424 
>   /branches/12/include/asterisk/stasis_app_impl.h 421424 
> 
> Diff: https://reviewboard.asterisk.org/r/3908/diff/
> 
> 
> Testing
> -------
> 
> Made sure the crash that was happening no longer occurs
> 
> Tested long queues of playback to check what would happen with the additional 
> playbacks.  Each subsequent playback from the one currently running fails (in 
> an expected manner) and reports its failure over stasis.  Nothing too odd 
> there.
> 
> 
> Thanks,
> 
> Jonathan Rose
> 
>

-- 
_____________________________________________________________________
-- 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