On Wed, Nov 25, 2020 at 10:20 AM Ruediger Pluem <rpl...@apache.org> wrote:
>
> On 11/24/20 10:12 PM, yla...@apache.org wrote:
> > Author: ylavic
> > Date: Tue Nov 24 21:12:37 2020
> > New Revision: 1883801
> >
> > URL: http://svn.apache.org/viewvc?rev=1883801&view=rev
> > Log:
> > apr_pools: follow up to r1883750 and r1883800.
> >
> > After r1883800, the mutex of a pool in APR_POOL_DEBUG can't be NULL, so
> > remove useless NULL checks around locking.
>
> I am struggling a bit to see when the mutex could have been NULL before 
> r1883800.

It could have been NULL because apr_pool_create_ex_debug() was adding
the pool to the parent's children list before creating the mutex.
In this window, apr_pool_walk_tree() (like apr_pool_find() starting
from the global_pool) could have found the pool with its NULL mutex
and walked it unlocked.
For a short leaving pool, the pool could then have been cleared while
a walker was accessing a child => boom!

Regards;
Yann.

Reply via email to