On Wed, Nov 25, 2020 at 1:35 AM Yann Ylavic <ylavic....@gmail.com> wrote: > > On Mon, Nov 23, 2020 at 5:35 PM Ruediger Pluem <rpl...@apache.org> wrote: > > > > On 11/23/20 12:14 PM, yla...@apache.org wrote: > > > > > > + client_lock = main_client_lock; > > > > Why is this needed? > > This one and the following (opaque_lock) are, by the look of: > > APR_DECLARE(apr_status_t) apr_global_mutex_child_init( > apr_global_mutex_t **mutex, > const char *fname, > apr_pool_t *pool) > { > apr_status_t rv; > > rv = apr_proc_mutex_child_init(&((*mutex)->proc_mutex), fname, pool); > return rv; > }
Hm, actually this commit does not (always) help regarding ONE_PROCESS mode. Here with client_lock == main_client_lock we have main_client_lock->proc_mutex overwritten by apr_proc_mutex_child_init(), so double free/cleanup/close can still happen depending on the mutex implementation. I reverted the whole thing and committed r1883810 instead, much simpler.. Thanks, Yann.