On Sep 13, 2009, at 8:48 AM, Ruediger Pluem wrote:



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.


Hmmm... either ctx->tmp_flush_bb is NULL or, since it was added in the
middle of the struct, you didn't do a make distclean 1st....

Reply via email to