"Sander Striker" <striker@apache.org> writes:
> Hmmm, well, it _is_ evening now, but I don't really have the energy
> to patch it up. If someone beats me to it, fine, otherwise just don't
> run with apr pool debugging enabled for now.
I'm using a patch that puts the mutex into the parent's pool. This
allows APR_POOL_DEBUG to be used with Subversion. It's not a perfect
solution due to the potential for unbounded memory use. It's good
enough for me...
Index: memory/unix/apr_pools.c
===================================================================
RCS file: /home/cvspublic/apr/memory/unix/apr_pools.c,v
retrieving revision 1.169
diff -u -r1.169 apr_pools.c
--- memory/unix/apr_pools.c 26 May 2002 09:00:08 -0000 1.169
+++ memory/unix/apr_pools.c 29 May 2002 13:56:07 -0000
@@ -1409,6 +1409,7 @@
#if APR_HAS_THREADS
if (mutex)
apr_thread_mutex_unlock(mutex);
+ apr_thread_mutex_destroy(mutex);
#endif /* APR_HAS_THREADS */
}
@@ -1494,9 +1495,14 @@
* the pool having no lock). However, this might actually
* hide problems like creating a child pool of a pool
* belonging to another thread.
+ *
+ * PROBLEM: allocating in parent pool causes potentially unbounded
+ * memory usage.
*/
- if ((rv = apr_thread_mutex_create(&pool->mutex,
- APR_THREAD_MUTEX_NESTED, pool)) != APR_SUCCESS) {
+ rv = apr_thread_mutex_create(&pool->mutex,
+ APR_THREAD_MUTEX_NESTED,
+ pool->parent ? pool->parent : pool);
+ if (rv != APR_SUCCESS) {
free(pool);
return rv;
}
--
Philip
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed May 29 16:05:15 2002