On 22 Jun 2015, at 10:07 AM, Stefan Eissing <stefan.eiss...@greenbytes.de> 
wrote:

> Sort answer: no.
> Re issue 28: I will look into this more today. I was able to generate a 
> segfault on connection shutdown on Friday and work on a fix.
> 
> Longer version re buckets: 
> - even though buckets for a request are created inside a single worker 
> thread, they are mutated/split/placed on free list upon processing down the 
> main connection. Which then all affects their bucket_alloc_t from several 
> threads. Especially on longer response bodies, 
> - since there are no function pointers for bucket_alloc_t, it is not obvious 
> to me how one would replace them with another implementation.
> - what can be added are, of course, new bucket implementations. Maybe there 
> is an approach to move the data itself without copying more than once. With a 
> clever handling of file buckets, maybe no copying at all.
> 
> Otherwise, I am open to ideas.

The secret to all of this is the pool hierarchy - if a request is to be served 
by any thread in a pool of threads, then that request mustn’t ever contain 
memory allocated from a pool tied to a specific thread.

When mod_proxy learned how to do connection pooling there were subtle pool 
lifetime issues uncovered caused by the backend connections allocated from a 
connection pool being interfaced to the frontend connections per request. You 
have to get the pools 100% right.

Regards,
Graham
—

Reply via email to