mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
core: Add cache_media_frames debugging option.
The media frame cache gets in the way of finding use after free errors of media frames. Tools like valgrind and MALLOC_DEBUG don't know when a frame is released because it gets put into the cache instead of being freed. * Added the "cache_media_frames" option to asterisk.conf. Disabling the option helps track down media frame mismanagement when using valgrind or MALLOC_DEBUG. The cache gets in the way of determining if the frame is used after free and who freed it. NOTE: This option has no effect when Asterisk is compiled with the LOW_MEMORY compile time option enabled because the cache code does not exist. To disable the media frame cache simply disable the cache_media_frames option in asterisk.conf and restart Asterisk. Sample asterisk.conf setting: [options] cache_media_frames=no ASTERISK-27413 Change-Id: I0ab2ce0f4547cccf2eb214901835c2d951b78c00
This commit is contained in:
@@ -676,6 +676,9 @@ static char *handle_show_settings(struct ast_cli_entry *e, int cmd, struct ast_c
|
||||
ast_cli(a->fd, " Transmit silence during rec: %s\n", ast_test_flag(&ast_options, AST_OPT_FLAG_TRANSMIT_SILENCE) ? "Enabled" : "Disabled");
|
||||
ast_cli(a->fd, " Generic PLC: %s\n", ast_test_flag(&ast_options, AST_OPT_FLAG_GENERIC_PLC) ? "Enabled" : "Disabled");
|
||||
ast_cli(a->fd, " Min DTMF duration:: %u\n", option_dtmfminduration);
|
||||
#if !defined(LOW_MEMORY)
|
||||
ast_cli(a->fd, " Cache media frames: %s\n", ast_opt_cache_media_frames ? "Enabled" : "Disabled");
|
||||
#endif
|
||||
|
||||
if (ast_option_rtpptdynamic == AST_RTP_PT_LAST_REASSIGN) {
|
||||
ast_cli(a->fd, " RTP dynamic payload types: %u,%u-%u\n",
|
||||
@@ -3827,6 +3830,11 @@ static void ast_readconfig(void)
|
||||
/* Cache recorded sound files to another directory during recording */
|
||||
} else if (!strcasecmp(v->name, "cache_record_files")) {
|
||||
ast_set2_flag(&ast_options, ast_true(v->value), AST_OPT_FLAG_CACHE_RECORD_FILES);
|
||||
#if !defined(LOW_MEMORY)
|
||||
/* Cache media frames for performance */
|
||||
} else if (!strcasecmp(v->name, "cache_media_frames")) {
|
||||
ast_set2_flag(&ast_options, ast_true(v->value), AST_OPT_FLAG_CACHE_MEDIA_FRAMES);
|
||||
#endif
|
||||
/* Specify cache directory */
|
||||
} else if (!strcasecmp(v->name, "record_cache_dir")) {
|
||||
ast_copy_string(record_cache_dir, v->value, AST_CACHE_DIR_LEN);
|
||||
|
Reference in New Issue
Block a user