]> git.ipfire.org Git - thirdparty/haproxy.git/commit
DEBUG: pools: add new build option DEBUG_POOL_TRACING
authorWilly Tarreau <w@1wt.eu>
Mon, 24 Jan 2022 14:52:51 +0000 (15:52 +0100)
committerWilly Tarreau <w@1wt.eu>
Mon, 24 Jan 2022 15:40:48 +0000 (16:40 +0100)
commitadd43fa43eb3e3189cba1a38a511a4a4ff2e3aec
treef6acc6e081c90e2c748a4582c7c1356c2873599e
parent0e2a5b4b61fa91b67e67631b8ae75295f22d0bee
DEBUG: pools: add new build option DEBUG_POOL_TRACING

This new option, when set, will cause the callers of pool_alloc() and
pool_free() to be recorded into an extra area in the pool that is expected
to be helpful for later inspection (e.g. in core dumps). For example it
may help figure that an object was released to a pool with some sub-fields
not yet released or that a use-after-free happened after releasing it,
with an immediate indication about the exact line of code that released
it (possibly an error path).

This only works with the per-thread cache, and even objects refilled from
the shared pool directly into the thread-local cache will have a NULL
there. That's not an issue since these objects have not yet been freed.
It's worth noting that pool_alloc_nocache() continues not to set any
caller pointer (e.g. when the cache is empty) because that would require
a possibly undesirable API change.

The extra cost is minimal (one pointer per object) and this completes
well with DEBUG_POOL_INTEGRITY.
Makefile
doc/internals/api/pools.txt
include/haproxy/pool.h
src/pool.c