Hi,

Maybe it would make sense to clear the recycled pool in
ap_push_pool(), that would simplify caller's life (currently we always
do it before the call).

How about the attached patch?

Regards,
Yann.

On Sun, Nov 16, 2014 at 6:55 AM, Marion & Christophe JAILLET
<christophe.jail...@wanadoo.fr> wrote:
> Done in r1639960.
>
> CJ
>
> Le 15/11/2014 08:32, Marion & Christophe JAILLET a écrit :
>
>> Hi,
>>
>> the same pattern exists in eventopt.
>>
>> CJ
>>
>>
>> Le 12/11/2014 18:32, cove...@apache.org a écrit :
>>>
>>> Author: covener
>>> Date: Wed Nov 12 17:32:24 2014
>>> New Revision: 1638879
>>>
>>> URL: http://svn.apache.org/r1638879
>>> Log:
>>> avoid dereferencing a recently apr_pool_clear()'ed event_conn_state_t *cs
>>> in several paths where ptrans is being recycled at the end of a request.
>>>
>>>
>>> Modified:
>>>      httpd/httpd/trunk/server/mpm/event/event.c
>>>
>>> Modified: httpd/httpd/trunk/server/mpm/event/event.c
>>> URL:
>>> http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/event/event.c?rev=1638879&r1=1638878&r2=1638879&view=diff
>>>
>>> ==============================================================================
>>> --- httpd/httpd/trunk/server/mpm/event/event.c (original)
>>> +++ httpd/httpd/trunk/server/mpm/event/event.c Wed Nov 12 17:32:24 2014
>>> @@ -852,6 +852,7 @@ static int start_lingering_close_common(
>>>       rv = apr_pollset_add(event_pollset, &cs->pfd);
>>>       apr_thread_mutex_unlock(timeout_mutex);
>>>       if (rv != APR_SUCCESS && !APR_STATUS_IS_EEXIST(rv)) {
>>> +        apr_pool_t *p = cs->p;
>>>           ap_log_error(APLOG_MARK, APLOG_ERR, rv, ap_server_conf,
>>>                        "start_lingering_close: apr_pollset_add failure");
>>>           apr_thread_mutex_lock(timeout_mutex);
>>> @@ -859,7 +860,7 @@ static int start_lingering_close_common(
>>>           apr_thread_mutex_unlock(timeout_mutex);
>>>           apr_socket_close(cs->pfd.desc.s);
>>>           apr_pool_clear(cs->p);
>>> -        ap_push_pool(worker_queue_info, cs->p);
>>> +        ap_push_pool(worker_queue_info, p);
>>>           return 0;
>>>       }
>>>       return 1;
>>
>> [...]
>>
>

Attachment: httpd-trunk-ap_push_pool-clear.patch
Description: application/download

Reply via email to