httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stefan Fritsch ...@sfritsch.de>
Subject Re: Finding memory leaks in httpd and httpd modules
Date Wed, 17 Feb 2010 23:12:09 GMT
On Wednesday 17 February 2010, Jeff Trawick wrote:
> > 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 */

Exactly. I have fixed a few of these in httpd trunk but I guess these 
can appear in third party modules, too. And 2.2.x has these problems, 
too.

One particular problem is that 2.2's core_output_filter may call 
apr_brigade_destroy() on brigades which have been passed down the 
filter chain and which may be later reused by the filter that has 
created them. I have attached an (untested) patch for this issue. A 
simpler variant would just change all three apr_brigade_destroy() 
calls to apr_brigade_cleanup().

Mime
View raw message