On Wed, Feb 17, 2010 at 3:26 PM, Stefan Fritsch <[email protected]> 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