On 09/13/2009 01:11 PM, Stefan Fritsch wrote:
> Hi,
> 
> http://httpd.apache.org/docs/trunk/developer/output-filters.html
> recommends to reuse bucket brigades and to not use apr_brigade_destroy.
> However, both in 2.2 and in trunk, the core output filter sometimes
> calls apr_brigade_destroy on brigades that it has received down the
> chain from earlier output filters. Is this not bound to cause problems
> since the brigade's pool cleanup is then removed but the brigade is
> still reused later on?

It could be. But the questions is if it is really reused later on.

> 
> Also, the core output filter often creates new brigades instead of
> reusing an existing brigade. This should also be changed to reduce
> memory usage, shouldn't it?

Yes. That was the reason for adding apr_brigade_split_ex to apr-util 1.3.
But so far nobody has found time to get through the current httpd code
and improve the needed sections by using it.

> 
> For trunk, the attached patch at least keeps the temporary brigade for
> flush buckets around. Do the versioning rules allow to add elements to
> core_output_filter_ctx for 2.2.x, too? It's defined in httpd.h.

Yes, if you add it to the end of the struct. Then only a minor bump is
required which is allowed. The other possibly more formal problem is
that we currently do not require apr / apr-util 1.3 for httpd 2.2.x but only
1.2. But after shipping 2.2.x for more then one year with apr / apr-util 1.3
without problems I guess we can change this and require apr / apr-util 1.3
for the next 2.2.x release.

But your patch is causing core dumps during the proxy tests when
running the test suite :-(.
I currently don't understand why.

Regards

RĂ¼diger

Reply via email to