On Wed, Feb 17, 2010 at 3:26 PM, Stefan Fritsch wrote: > On Wednesday 17 February 2010, Joe Orton wrote: >> On Wed, Feb 17, 2010 at 09:12:03AM -0500, Jeff Trawick wrote: >> > a. get the server to steady state >> >> ... >> >> > b. see what causes the heap to expand (brk/sbrk) >> >> This is what I do too, FWIW.  It's primitive but usually effective. > > What about adding some code to apr-util's bucket debugging that logs > when destroyed brigades (i.e. where the pool cleanup has been removed) > are reused? I think this may be a common cause for memory leaks. as in something like this? apr_brigade_destroy(foo->bb) ... if (!foo->bb) { foo->bb = apr_brigade_create(); } ... APR_BRIGADE_INSERT_TAIL(foo->bb, b); /* no automatic cleanup of b */ > A simpler alternative would be to set bb->pool and bb->bucket_alloc to > NULL in apr_brigade_destroy(). The latter could maybe even be enabled > in some apr-util maintainer mode (just like httpd enables some > debugging in maintainer mode). APR_BRIGADE_CHECK_CONSISTENCY() would presumably be changed to abort if !bb->pool