On Dec 5, 2005, at 10:30 AM, Brian Pane wrote:

William A. Rowe, Jr. wrote:

Paul Querna wrote:


Best guess is that we corrupted a bucket brigade by double freeing it, or something of that kind. This is definitely a new behavior since the
async-write code was merged into trunk.

It is odd that we could of double-free'ed something on the connection
pool. Maybe it isn't a double-free issue at all...


My other thought comes down to the thread locking. Perhaps we are looking at an issue of two threads touching the per-thread non-locking allocator at once? The reason I suspect is that it -seems- your process ended up
with a linked block list with a cyclic loop.


That might well be the problem, since the thread that frees the brigade isn't necessarily the same thread that allocated it. I'll take a look at the
code later today.

No, on closer inspection, that's not it.  The event MPM creates a new
allocator whenever it creates a new ptrans pool (line 1000).  If the
ptrans pool ever gets destroyed, we might have problems, because it's
created as a child of pconf, and I don't think pconf is thread-safe.  It
doesn't appear that the ptrans pool is ever destroyed within the code,
though, so pconf thread-safety problems wouldn't explain the error
Paul saw.

Brian

Reply via email to