rbb 99/10/13 10:45:17
Modified: src/lib/apr/lib apr_pools.c Log: I am actually going to fix the recursive lock contention this time. These locks were removed when Dean did his NSPR work a long time ago, and were carried over into the apache-apr tree. When the lib directory was created for APR though, it was created from the 1.3 tree, which still had these locks. This removes them, hopefully for good. I have tested the server, and it appears to serve pages again, but as always, YMMV Revision Changes Path 1.19 +3 -9 apache-2.0/src/lib/apr/lib/apr_pools.c Index: apr_pools.c =================================================================== RCS file: /home/cvs/apache-2.0/src/lib/apr/lib/apr_pools.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- apr_pools.c 1999/10/12 17:54:32 1.18 +++ apr_pools.c 1999/10/13 17:45:16 1.19 @@ -563,19 +563,13 @@ * This way, we are garaunteed that we only lock this mutex once when calling * either one of these functions. */ -static void ap_clear_real_pool(ap_pool_t *a, int clearcaller) +static void ap_clear_real_pool(ap_pool_t *a) { ap_block_alarms(); - if (clearcaller) { - ap_lock(alloc_mutex); - } while (a->sub_pools) { ap_destroy_real_pool(a->sub_pools); } - if (clearcaller) { - ap_unlock(alloc_mutex); - } /* * Don't hold the mutex during cleanups. */ @@ -608,13 +602,13 @@ API_EXPORT(void) ap_clear_pool(struct context_t *a) { - ap_clear_real_pool(a->pool, 1); + ap_clear_real_pool(a->pool); } API_EXPORT(void) ap_destroy_real_pool(ap_pool_t *a) { ap_block_alarms(); - ap_clear_real_pool(a, 0); + ap_clear_real_pool(a); ap_lock(alloc_mutex); if (a->parent) {