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;
[...]