Re: Segfault in 2.1 head on linux

2002-12-29 Thread Brian Pane
On Sun, 2002-12-29 at 19:10, Erik Abele wrote:

> 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.cMon 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)) {

Thanks, I just committed the fix.

Brian





Segfault in 2.1 head on linux

2002-12-29 Thread Erik Abele
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