On Mon, Jun 22, 2015 at 4: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.

I am afraid the change will not fix #28. In the backtrace for #28 an
EOR bucket is being deleted while the buckets in a brigade are being
copied to a new pool. That triggers all of the end of request
processing way too early.

I was naively thinking as a POC it would be possible to pmemdup the
conn_rec and create a new bucket allocator (when you create the faux
request_rec) If it worked, we'd want to find some way to get the same
result in the core.  If we continue to share one at the real
connection level, I think it needs an option of a mutex under h2.

-- 
Eric Covener
cove...@gmail.com

Reply via email to