On Sun, Apr 18, 2021 at 9:11 PM <jaillet...@apache.org> wrote:
>
> Modified: httpd/httpd/branches/2.4.x/modules/core/mod_watchdog.c
> URL: 
> http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/modules/core/mod_watchdog.c?rev=1888928&r1=1888927&r2=1888928&view=diff
> ==============================================================================
> --- httpd/httpd/branches/2.4.x/modules/core/mod_watchdog.c (original)
> +++ httpd/httpd/branches/2.4.x/modules/core/mod_watchdog.c Sun Apr 18 
> 19:11:48 2021
> @@ -112,6 +112,7 @@ static void* APR_THREAD_FUNC wd_worker(a
>      int probed = 0;
>      int inited = 0;
>      int mpmq_s = 0;
> +    apr_pool_t *ctx = NULL;
>
>      w->pool = apr_thread_pool_get(thread);
>      w->is_running = 1;
> @@ -165,8 +166,8 @@ static void* APR_THREAD_FUNC wd_worker(a
>                       w->singleton ? "Singleton " : "", w->name);
>          apr_time_clock_hires(w->pool);
>          if (wl) {
> -            apr_pool_t *ctx = NULL;
>              apr_pool_create(&ctx, w->pool);
> +            apr_pool_tag(ctx, "wd_running");
>              while (wl && w->is_running) {
>                  /* Execute watchdog callback */
>                  wl->status = (*wl->callback_fn)(AP_WATCHDOG_STATE_STARTING,
> @@ -183,7 +184,6 @@ static void* APR_THREAD_FUNC wd_worker(a
>
>      /* Main execution loop */
>      while (w->is_running) {
> -        apr_pool_t *ctx = NULL;
>          apr_time_t curr;
>          watchdog_list_t *wl = w->callbacks;
>
> @@ -202,8 +202,10 @@ static void* APR_THREAD_FUNC wd_worker(a
>              if (wl->status == APR_SUCCESS) {
>                  wl->step += (apr_time_now() - curr);
>                  if (wl->step >= wl->interval) {
> -                    if (!ctx)
> +                    if (!ctx) {
>                          apr_pool_create(&ctx, w->pool);
> +                        apr_pool_tag(ctx, "wd_running");
> +                    }
>                      wl->step = 0;
>                      /* Execute watchdog callback */
>                      wl->status = 
> (*wl->callback_fn)(AP_WATCHDOG_STATE_RUNNING,
> @@ -224,8 +226,10 @@ static void* APR_THREAD_FUNC wd_worker(a
>               */
>              w->step += (apr_time_now() - curr);
>              if (w->step >= wd_interval) {
> -                if (!ctx)
> +                if (!ctx) {
>                      apr_pool_create(&ctx, w->pool);
> +                    apr_pool_tag(ctx, "wd_running");
> +                }
>                  w->step = 0;
>                  /* Run watchdog step hook */
>                  ap_run_watchdog_step(wd_server_conf->s, w->name, ctx);

These changes in mod_watchdog need two follow ups, r1876619 and
r1876675 (at least the first one) to fix the crash in ci.
Just proposed that in r1888934..

Regards;
Yann.

Reply via email to