diff options
author | rjung <rjung@13f79535-47bb-0310-9956-ffa450edef68> | 2019-07-17 11:43:58 +0000 |
---|---|---|
committer | rjung <rjung@13f79535-47bb-0310-9956-ffa450edef68> | 2019-07-17 11:43:58 +0000 |
commit | ad5be4a0fe1227b5490deefca58de8bce5c97fc6 (patch) | |
tree | 2ff976fe58f8e63167036e374ef3d08f68241345 | |
parent | b6f72cbf22c125bff031c124011ed7df8927875e (diff) | |
download | libapr-ad5be4a0fe1227b5490deefca58de8bce5c97fc6.tar.gz |
Fix pool debugging output so that creation events are
always emitted before allocation events and subpool destruction
events are emitted on pool clear/destroy for proper accounting.
Backport of r1675967 from trunk resp. r1863202 from 1.7.x.
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/branches/1.6.x@1863211 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | CHANGES | 4 | ||||
-rw-r--r-- | memory/unix/apr_pools.c | 27 |
2 files changed, 17 insertions, 14 deletions
@@ -1,6 +1,10 @@ -*- coding: utf-8 -*- Changes for APR 1.6.6 + *) apr_pools: Fix pool debugging output so that creation events are + always emitted before allocation events and subpool destruction + events are emitted on pool clear/destroy for proper accounting. + [Brane Čibej] Changes for APR 1.6.5 diff --git a/memory/unix/apr_pools.c b/memory/unix/apr_pools.c index 17fadb42a..9fdd00129 100644 --- a/memory/unix/apr_pools.c +++ b/memory/unix/apr_pools.c @@ -1886,10 +1886,6 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool, apr_pool_check_lifetime(pool); -#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) - apr_pool_log_event(pool, "CLEAR", file_line, 1); -#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */ - #if APR_HAS_THREADS if (pool->parent != NULL) mutex = pool->parent->mutex; @@ -1905,6 +1901,10 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool, pool_clear_debug(pool, file_line); +#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) + apr_pool_log_event(pool, "CLEAR", file_line, 1); +#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */ + #if APR_HAS_THREADS /* If we had our own mutex, it will have been destroyed by * the registered cleanups. Recreate the mutex. Unlock @@ -1929,12 +1929,12 @@ static void pool_destroy_debug(apr_pool_t *pool, const char *file_line) { apr_pool_check_lifetime(pool); + pool_clear_debug(pool, file_line); + #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) apr_pool_log_event(pool, "DESTROY", file_line, 1); #endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */ - pool_clear_debug(pool, file_line); - /* Remove the pool from the parents child list */ if (pool->parent) { #if APR_HAS_THREADS @@ -2043,6 +2043,9 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool, pool->owner_proc = (apr_os_proc_t)getnlmhandle(); #endif /* defined(NETWARE) */ +#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) + apr_pool_log_event(pool, "CREATE", file_line, 1); +#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */ if (parent == NULL || parent->allocator != allocator) { #if APR_HAS_THREADS @@ -2072,10 +2075,6 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool, *newpool = pool; -#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) - apr_pool_log_event(pool, "CREATE", file_line, 1); -#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */ - return APR_SUCCESS; } @@ -2129,6 +2128,10 @@ APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex_debug(apr_pool_t **newpoo } pool->allocator = pool_allocator; +#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) + apr_pool_log_event(pool, "CREATEU", file_line, 1); +#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */ + if (pool->allocator != allocator) { #if APR_HAS_THREADS apr_status_t rv; @@ -2151,10 +2154,6 @@ APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex_debug(apr_pool_t **newpoo *newpool = pool; -#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) - apr_pool_log_event(pool, "CREATEU", file_line, 1); -#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */ - return APR_SUCCESS; } |