mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-23 13:09:00 +00:00
pjproject: Add cache_pools debugging option.
The pool cache gets in the way of finding use after free errors of memory pool contents. Tools like valgrind and MALLOC_DEBUG don't know when a pool is released because it gets put into the cache instead of being freed. * Added the "cache_pools" option to pjproject.conf. Disabling the option helps track down pool content mismanagement when using valgrind or MALLOC_DEBUG. The cache gets in the way of determining if the pool contents are used after free and who freed it. To disable the pool caching simply disable the cache_pools option in pjproject.conf and restart Asterisk. Sample pjproject.conf setting: [startup] cache_pools=no * Made current users of the caching pool factory initialization and destruction calls call common routines to create and destroy cached pools. ASTERISK-27704 Change-Id: I64d5befbaeed2532f93aa027a51eb52347d2b828
This commit is contained in:
@@ -42,6 +42,7 @@
|
||||
#include "asterisk/netsock2.h"
|
||||
#include "asterisk/vector.h"
|
||||
#include "asterisk/lock.h"
|
||||
#include "asterisk/res_pjproject.h"
|
||||
|
||||
#define HISTORY_INITIAL_SIZE 256
|
||||
|
||||
@@ -1369,7 +1370,7 @@ static int load_module(void)
|
||||
ast_log(LOG_WARNING, "Unable to register history log level\n");
|
||||
}
|
||||
|
||||
pj_caching_pool_init(&cachingpool, &pj_pool_factory_default_policy, 0);
|
||||
ast_pjproject_caching_pool_init(&cachingpool, &pj_pool_factory_default_policy, 0);
|
||||
|
||||
AST_VECTOR_INIT(&vector_history, HISTORY_INITIAL_SIZE);
|
||||
|
||||
@@ -1387,7 +1388,7 @@ static int unload_module(void)
|
||||
ast_sip_push_task_synchronous(NULL, clear_history_entries, NULL);
|
||||
AST_VECTOR_FREE(&vector_history);
|
||||
|
||||
pj_caching_pool_destroy(&cachingpool);
|
||||
ast_pjproject_caching_pool_destroy(&cachingpool);
|
||||
|
||||
if (log_level != -1) {
|
||||
ast_logger_unregister_level("PJSIP_HISTORY");
|
||||
|
Reference in New Issue
Block a user