--- file_not_specified_in_diff +++ file_not_specified_in_diff @@ -, +, @@ --- httpd-2.4.2/modules/proxy/mod_proxy_balancer.c +++ httpd-2.4.2/modules/proxy/mod_proxy_balancer.c @@ -825,6 +825,16 @@ proxy_worker_shared *shm; worker = *workers; + + /* Ckeck if we grabbed already */ + if (storage->dptr(balancer->wslot, worker->s->index, (void *)&shm) == APR_SUCCESS) { + if (shm == worker->s) { + /* worker->s pointed to some shm before */ + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s, APLOGNO(05561) "won't grab worker-SHM %lu with index %d twice", (unsigned long int)(worker->s), worker->s->index); + continue; + } + } + if ((rv = storage->grab(balancer->wslot, &index)) != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_EMERG, rv, s, APLOGNO(01186) "worker slotmem_grab failed"); return !OK;