[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: immense Apache memory leak, plus patch

From: C. Michael Pilato <cmpilato_at_collab.net>
Date: Thu, 03 Sep 2009 09:45:25 -0400

Blaise Tarr wrote:
> Greg Stein wrote:
>> I don't see how this would work, however, because there are *still* a
>> lot of uses of the 'output' variable. Just changing the one in
>> ap_pass_brigade() is going to be insufficient. Seems that all of them
>> should really be changed.
>
> That patch is just the bare minimum to prevent the crashes we've
> experienced, and it confirms the source of the problem, but it's
> definitely not the proper fix. Sorry, I should have stated that earlier.
> It works because the pointers in the 'output' ap_filter_t struct still
> happen to be valid, or so it seems.
>
> Changing all the references to 'output' would more correct, but that
> would essentially render the 'output' function parameter useless, and
> that doesn't feel right.
>
> One possibility is to create a dummy (sentinel) filter at the beginning
> of the filter chain that would simply pass the brigade along. It would
> always be present, and references to the filter chain using it would
> always be valid. Implementing it would be more appropriate in Apache
> itself, but there should be no harm in having mod_dav_svn do it.

Please excuse my ignorance, but what would such a filter look like?
Anything like the following?

apr_status_t
dav_svn__dummy_filter(ap_filter_t *f,
                      apr_bucket_brigade *bb)
{
   return ap_pass_brigade(f->r->output_filters, bb);
}

-- 
C. Michael Pilato <cmpilato_at_collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2390665

Received on 2009-09-03 15:45:46 CEST

This is an archived mail posted to the Subversion Dev mailing list.