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.

Reply via email to