Hi, I may be missing something but this looks wrong to me:
apr_allocator uses a mutex to be thread safe. Pools use this mutex also to protect sub-pool creation, cleanup registering, etc. When apr creates the initial allocator and global_pool in apr_pool_initialize(), it also creates a mutex for this allocator. But mpm_event creates a new allocator for each transaction pool and does not create a mutex for it. And gdb shows that in listener_thread() at the get_worker() call, ptrans->allocator->mutex is NULL (checked in 2.4.25). Shouldn't we allocate a mutex there and call apr_allocator_mutex_set()? If no, why not. If yes, why does it still work as well as it does right now? Or could the lacking mutex explain some weird segfaults? Cheers, Stefan
