The bug is pretty obvious looking at the backtrace, but I think uri_meets_conditions() is probably entirely wrong. For example:
/* Compare the hostnames */ if(filter.hostname) { if (!url.hostname) { return 0; } else if (strcasecmp(filter.hostname, url.hostname)) { return 0; } } If filter.hostname is NULL we don't check it against url.hostname being NULL too, is this right ? The backtrace: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 46912499703168 (LWP 619)] 0x0000003703470004 in strncmp () from /lib64/tls/libc.so.6 (gdb) bt #0 0x0000003703470004 in strncmp () from /lib64/tls/libc.so.6 #1 0x00000000004421a5 in uri_meets_conditions (filter= {scheme = 0x0, hostinfo = 0x0, user = 0x0, password = 0x0, hostname = 0x0, port_str = 0x0, path = 0x651800 "/", query = 0x0, fragment = 0x0, hostent = 0x0, port = 0, is_initialized = 1, dns_looked_up = 0, dns_resolved = 0}, pathlen=1, url= {scheme = 0x6c2800 "http", hostinfo = 0x6c2808 "login.yahoo.com", user = 0x0, password = 0x0, hostname = 0x6c2818 "login.yahoo.com", port_str = 0x0, path = 0x0, query = 0x0, fragment = 0x0, hostent = 0x0, port = 0, is_initialized = 1, dns_looked_up = 0, dns_resolved = 0}) at cache_util.c:71 #2 0x000000000044237b in ap_cache_get_providers (r=0x6c11b8, conf=0x666840, uri= {scheme = 0x6c2800 "http", hostinfo = 0x6c2808 "login.yahoo.com", user = 0x0, password = 0x0, hostname = 0x6c2818 "login.yahoo.com", port_str = 0x0, path = 0x0, query = 0x0, fragment = 0x0, hostent = 0x0, port = 0, is_initialized = 1, dns_looked_up = 0, dns_resolved = 0}) at cache_util.c:85 #3 0x000000000044012e in cache_url_handler (r=0x6c11b8, lookup=0) at mod_cache.c:71 #4 0x0000000000434d71 in ap_run_quick_handler (r=0x6c11b8, lookup=0) at config.c:160 #5 0x000000000046677f in ap_process_request (r=0x6c11b8) at http_request.c:254 #6 0x00000000004642fd in ap_process_http_connection (c=0x6b9368) at http_core.c:171 #7 0x000000000043b3f3 in ap_run_process_connection (c=0x6b9368) at connection.c:43 #8 0x0000000000477de0 in child_main (child_num_arg=Variable "child_num_arg" is not available. ) at prefork.c:640 #9 0x00000000004780a6 in make_child (s=0x5c5098, slot=0) at prefork.c:680 #10 0x0000000000478667 in ap_mpm_run (_pconf=Variable "_pconf" is not available. ) at prefork.c:956 #11 0x0000000000422b25 in main (argc=4, argv=0x7fffffccad28) at main.c:712