On Mon, Nov 23, 2020 at 01:24:39PM +0100, Yann Ylavic wrote:
> --- srclib/apr-trunk/memory/unix/apr_pools.c (revision 1883742)
> +++ srclib/apr-trunk/memory/unix/apr_pools.c (working copy)
> @@ -1951,10 +1951,8 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t
>
> static void pool_destroy_debug(apr_pool_t *pool, const char *file_line)
> {
> - apr_pool_check_lifetime(pool);
> + apr_pool_clear_debug(pool, file_line);
>
> - pool_clear_debug(pool, file_line);
> -
> #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
> apr_pool_log_event(pool, "DESTROY", file_line, 1);
> #endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */):
> --
>
> No more use-after-free, while without this patch there are many ones
> (like in the attached ASAN report).
> Note: pool_clear_debug is not mutex protected, while apr_pool_clear_debug is.
Nice work!
> Could we run APR_POOL_DEBUG test --with-inclued-apr (only) on travis,
> or fetching the sources causes issues still?
Do you mean a different APR/APR-util tag/branch than 1.7.0/1.6.1? The
only restriction is that we can't test LDAP/pool-debug (usefully) if
building against APR trunk. We can switch to building against 1.7.x
branches, it works but adds a few minutes to the build time because we
can't cache the installs in that specific case.
BTW do you have an idiots guide to building/testing httpd with ASAN? We
could add that to travis too.
Regards, Joe