Sander Striker wrote:
From: Bill Stoddard [mailto:[EMAIL PROTECTED] Sent: 19 March 2002 05:43
I'm pretty sure I have identified the problem on Windows. The blow up happens when we are trying to obtain a mutex that has been freed. This happens on the very last pool to be cleaned up (the "global_pool"). In apr_pool_destroy, we call the pool cleanups (one of which is for the mutex in the allocator) then call apr_allocator_free() which proceeds to attempt to acquire the mutex that was just freed.
Oh, duh! Why didn't I think of that? Thanks for tracking this down Bill.
This hack of a patch eliminates the seg fault. I am not so familier with the pool code and am not inclined to dig into it right now. Perhaps the check to NULL out the mutex should be
if (apr_allocator_get_owner(allocator) == pool) {
???
Yes, that is the correct spot. I've committed a patch similar to yours.
That patch doesn't solve the problem. apr_terminate still crashes in the pool cleanup.
-- Brane Äibej <[EMAIL PROTECTED]> http://www.xbc.nu/brane/
