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:
Richard Mudgett
2018-02-27 15:40:18 -06:00
parent 53ed437db3
commit 1a36a452bd
11 changed files with 85 additions and 14 deletions

View File

@@ -5,6 +5,13 @@
; NOTES: The name of this section in the pjproject.conf configuration file must
; remain startup or the configuration will not be applied.
;
;cache_pools = yes ; Cache pjproject memory pools for performance
; Disable this option to help 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 being freed and who
; freed it.
; Default yes
;log_level=default ; Initial maximum pjproject logging level to log
; Valid values are: 0-6, and default
;