Hi all,

While debugging something else entirely I have tripped over an abort() triggered from inside mod_dir when POOL_DEBUG is enabled.

It seems within ap_internal_fast_redirect(), an attempt is made to do this:

    r->notes = apr_table_overlay(r->pool, rr->notes, r->notes);

The abort occurs because "apr_table_overlay: overlay's pool is not an ancestor of p".

The subrequest rr is created inside make_sub_request() like this:

    apr_pool_create(&rrp, r->pool);
    apr_pool_tag(rrp, "subrequest");
    rnew = apr_pcalloc(rrp, sizeof(request_rec));
    rnew->pool = rrp;

I am confused - rr->pool was created as an ancestor of r->pool, so why should it abort?

At the top of ap_internal_fast_redirect(), the comment says:

/* XXX: Is this function is so bogus and fragile that we deep-6 it? */

which leads me to believe that this function has caused somebody pain in the past.

Does this look familiar to anybody?

The backtrace looks like this:

Thread [1] (Suspended: Signal 'SIGABRT' received. Description: Aborted.)        
        15 kill()  0x900481ac   
        14 abort()  0x9012d7b4  
13 apr_table_overlay() /Users/minfrin/src/apache/sandbox/proxy/httpd-trunk/srclib/apr/tables/apr_tables.c:844 0x007621dc 12 ap_internal_fast_redirect() /Users/minfrin/src/apache/sandbox/proxy/httpd-2.2.8/modules/http/http_request.c:433 0x000d839c 11 fixup_dir() /Users/minfrin/src/apache/sandbox/proxy/httpd-2.2.8/modules/mappers/mod_dir.c:198 0x00087c58 10 ap_run_fixups() /Users/minfrin/src/apache/sandbox/proxy/httpd-2.2.8/server/request.c:73 0x0002a298 9 ap_process_request_internal() /Users/minfrin/src/apache/sandbox/proxy/httpd-2.2.8/server/request.c:246 0x0002b544 8 ap_process_request() /Users/minfrin/src/apache/sandbox/proxy/httpd-2.2.8/modules/http/http_request.c:256 0x000d7b9c 7 ap_process_http_connection() /Users/minfrin/src/apache/sandbox/proxy/httpd-2.2.8/modules/http/http_core.c:190 0x0008b894 6 ap_run_process_connection() /Users/minfrin/src/apache/sandbox/proxy/httpd-2.2.8/server/connection.c:43 0x0002f368 5 ap_process_connection() /Users/minfrin/src/apache/sandbox/proxy/httpd-2.2.8/server/connection.c:178 0x0002f9e4 4 child_main() /Users/minfrin/src/apache/sandbox/proxy/httpd-2.2.8/server/mpm/prefork/prefork.c:640 0x0009cd68 3 make_child() /Users/minfrin/src/apache/sandbox/proxy/httpd-2.2.8/server/mpm/prefork/prefork.c:680 0x0009ceb8 2 ap_mpm_run() /Users/minfrin/src/apache/sandbox/proxy/httpd-2.2.8/server/mpm/prefork/prefork.c:956 0x0009d700 1 main() /Users/minfrin/src/apache/sandbox/proxy/httpd-2.2.8/server/main.c:730 0x00003b90

Regards,
Graham
--

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to