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

Review request for Asterisk Developers.


Repository: Asterisk


Description
-------

When a 'core restart now' or 'core stop now' is executed and a channel is 
currently in a media operation, the translator matrix can be destroyed while a 
channel is currently blocked on getting the best translation choice (see 
ast_translator_best_choice). When the channel gets the mutex, the translation 
matrix now has invalid memory, and Asterisk crashes.

This patch does two things:
(1) We now only clean up the translation matrix on a graceful shutdown. In that 
case, there are no channels, and so there is no risk of this occurring.
(2) We also now set the __matrix and __indextable to NULL. In some initial 
backtraces when this occurred, it looked as if there was a memory corruption 
occurring, and it wasn't until we determined that something had restarted 
Asterisk that the issue became clear. By setting these to NULL on shutdown, it 
becomes a bit easier to determine why a crash is occurring.

Note that we could litter the code with NULL checks on the __matrix, but the 
act of making the translation matrix cleaned up on shutdown should preclude 
this issue from occurring in the first place, and this part of the code needs 
to be as fast as possible.


Diffs
-----

  /branches/13/main/translate.c 432443 

Diff: https://reviewboard.asterisk.org/r/4457/diff/


Testing
-------


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