After building the current Apache 2.1 & APR HEAD I hit a segfault by starting the server. A quick gdb session shows problems in apr_file_open at apr/file_io/unix/open.c:149
---
(gdb) run -X
Starting program: /usr/sbin/httpd -X
[New Thread 1024 (LWP 21251)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 21251)]
0x401ef78d in apr_file_open (new=0xb59c,
fname=0x8147078 "/etc/httpd/conf/httpd.conf", flag=129, perm=4095,
pool=0x80ff8d0) at open.c:149
149 if ((flag & APR_BUFFERED) && ((*new)->flags & APR_XTHREAD)) {
(gdb) bt
#0 0x401ef78d in apr_file_open (new=0xb59c,
fname=0x8147078 "/etc/httpd/conf/httpd.conf", flag=129, perm=4095,
pool=0x80ff8d0) at open.c:149
#1 0x080b71d8 in ap_pcfg_openfile (ret_cfg=0xb638, p=0x80ff8d0,
name=0x8147078 "/etc/httpd/conf/httpd.conf") at util.c:910
#2 0x080b2e52 in ap_process_resource_config (s=0x8106320,
fname=0x8147078 "/etc/httpd/conf/httpd.conf", conftree=0x80f2354,
p=0x80ff8d0, ptemp=0x81439e0) at config.c:1545
#3 0x080b352f in ap_read_config (process=0x80fd948, ptemp=0x81439e0,
filename=0x80e2abb "/etc/httpd/conf/httpd.conf", conftree=0x80f2354)
at config.c:1832
#4 0x080b5130 in main (argc=2, argv=0xb8e4) at main.c:565
#5 0x42017589 in __libc_start_main () from /lib/i686/libc.so.6
(gdb) print (*new)->flags
Cannot access memory at address 0xc
(gdb) print (*new)
$2 = (apr_file_t *) 0x0
---
seems that this has something to do with the latest changes in apr/file_io/unix/open.c... the following patch works fine for me.
--- /home/cvs/apr/file_io/unix/open.c Mon Dec 30 02:58:01 2002
+++ open.c Mon Dec 30 03:59:26 2002
@@ -146,7 +146,7 @@
#endif
#if APR_HAS_THREADS
-if ((flag & APR_BUFFERED) && ((*new)->flags & APR_XTHREAD)) {
+if ((flag & APR_BUFFERED) && (flag & APR_XTHREAD)) {
rv = apr_thread_mutex_create(&thlock,
APR_THREAD_MUTEX_DEFAULT, pool);
if (rv) {
also does reverting open.c to rev. 1.101.
cheers,
erik