Re: Upgraded from 4.0.6 to 4.1.1 and now apache segfaults
| From: | Russ Goodwin | Date: | Wed, 16 Jan 2002 04:59:00 +0000 |
| Subject: | Re: Upgraded from 4.0.6 to 4.1.1 and now apache segfaults | ||
| References: | 1 2 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-77200@lists.php.net to get a copy of this message | ||
I actually switched to the stock php.ini-recommended to find out if there
was a problem in my php.ini and it behaves no differently.
All the "extensions=" lines are commented out in that file.
Thanks for the try. Anything else? I'll take all the advice, hints, and
guesses I can get, as I'm clean out!
-Russ
"Yasuo Ohgaki" <yasuo_ohgaki@yahoo.com> wrote in message
news:3C44D712.7000102@yahoo.com...
> I guess you are loading incompatible modules from
> your php.ini.
>
> Get rid of all extensions including zend extensions.
>
> --
> Yasuo Ohgaki
>
> Russ Goodwin wrote:
> > Hi-
> >
> > I've searched high and low (bugs.php.net and google) and can't seem to
find
> > anyone with this same problem, I'm not entirely convinced it's a bug,
but if
> > I should post it to the bugs db, please let me know...
> >
> > I'm running Apache 1.3.22, MySQL 3.23.46, cURL 7.8, mod_ssl 2.8.5 and
PHP
> > 4.0.6/4.1.1 on RH Linux 6.2 kernel 2.2.18pre11-va2.0smp. (with php as a
> > DSO, mod_ssl static).
> >
> > Using the 4.0.6 module, I have no problems. When I install 4.1.1, then
run
> > 'apachectl startssl', apachectl functions normally, asks for my key's
> > passphrase, then exits. Ordinarily the forked child would stay alive
and
> > spawn off StartServers children, but instead a 'ps aux' shows no httpd's
> > running.
> >
> > I have about a dozen virtualhosts set up, and when I rip out all but the
> > first 6 and then comment out the ErrorLog and CustomLog lines in the 6th
> > virtualhost setup (or rip the 6th virtualhost altogether), apache starts
> > fine. I've tried re-ordering the virtualhosts but that doesn't help. I
> > found in the apache docs that it might be a file descriptor limit
problem,
> > and posted to the php.install group asking if anyone had seen this, but
got
> > no response. I'm convinced it's not a file descriptor problem, though
> > because running 'limit' shows "descriptors 1024" and
> > "openfiles
> > 1024" (everything else unlimited). The segfault only happens with the
newer
> > php though, so I'm posting here... if you think it's an apache (or
something
> > else) problem, please let me know.
> >
> > I've uncommented the 6th virtualhost's log directives and run 'httpd
> > -X'
to
> > get a core file, and the backtrace says:
> >
> > #gdb /usr/local/apache/bin/httpd /tmp/core
> > GNU gdb 19991004
> > Copyright 1998 Free Software Foundation, Inc.
> > GDB is free software, covered by the GNU General Public License, and you
are
> > welcome to change it and/or distribute copies of it under certain
> > conditions.
> > Type "show copying" to see the conditions.
> > There is absolutely no warranty for GDB. Type "show warranty" for
details.
> > This GDB was configured as "i386-redhat-linux"...
> > Core was generated by `httpd -X'.
> > Program terminated with signal 11, Segmentation fault.
> > Reading symbols from /lib/libm.so.6...done.
> > Reading symbols from /lib/libcrypt.so.1...done.
> > Reading symbols from /lib/libdb.so.3...done.
> > Reading symbols from /usr/local/lib/libexpat.so.0...done.
> > Reading symbols from /lib/libdl.so.2...done.
> > Reading symbols from /lib/libc.so.6...done.
> > Reading symbols from /lib/ld-linux.so.2...done.
> > Reading symbols from /lib/libnss_files.so.2...done.
> > Reading symbols from /usr/local/apache/libexec/libphp4.so...done.
> > Reading symbols from /lib/libresolv.so.2...done.
> > Reading symbols from /lib/libpam.so.0...done.
> > Reading symbols from /home/mysql/lib/mysql/libmysqlclient.so.10...done.
> > Reading symbols from /usr/local/lib/libcurl.so.2...done.
> > Reading symbols from /lib/libnsl.so.1...done.
> > Reading symbols from /usr/lib/libz.so.1...done.
> > #0 strcmp (p1=0x403785c0 <Address 0x403785c0 out of bounds>,
p2=0x406935c0
> > "DESX") at ../sysdeps/generic/strcmp.c:38
> > 38 ../sysdeps/generic/strcmp.c: No such file or directory.
> > (gdb) bt
> > #0 strcmp (p1=0x403785c0 <Address 0x403785c0 out of bounds>,
p2=0x406935c0
> > "DESX") at ../sysdeps/generic/strcmp.c:38
> > #1 0x80f984d in obj_name_cmp ()
> > Cannot access memory at address 0x3008add8
> > (gdb) quit
> >
> >
> > If I do an 'strace httpd -X', the last several lines look like this:
> > old_mmap(NULL, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
> > = 0x401ba000
> > _llseek(21, 0, [0], SEEK_CUR) = 0
> > getpid() = 12231
> > stat("/usr/local/apache/logs/httpd.pid", {st_mode=S_IFREG|0644,
st_size=6,
> > ...}) = 0
> > time(NULL) = 1011128952
> > write(2, "[Tue Jan 15 16:09:12 2002] [warn"..., 131) = 131
> > write(2, "\n", 1) = 1
> > umask(022) = 02
> > umask(022) = 022
> > open("/usr/local/apache/logs/httpd.pid", O_WRONLY|O_CREAT|O_TRUNC, 0666)
= 3
> > umask(02) = 022
> > fstat64(0x3, 0xbffff1a0) = 0
> > old_mmap(NULL, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
> > = 0x401bb000
> > write(3, "12231\n", 6) = 6
> > close(3) = 0
> > munmap(0x401bb000, 4096) = 0
> > open("./php.ini", O_RDONLY) = -1 ENOENT (No such file or
> > directory)
> > open("/usr/local/lib/php.ini", O_RDONLY) = 3
> > getcwd("/tmp", 4095) = 5
> > lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> > lstat("/usr/local", {st_mode=S_IFDIR|S_ISGID|0755, st_size=4096, ...}) =
0
> > lstat("/usr/local/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> > lstat("/usr/local/lib/php.ini", {st_mode=S_IFREG|0644, st_size=24208,
...})
> > = 0
> > ioctl(3, TCGETS, 0xbffff7fc) = -1 ENOTTY (Inappropriate ioctl
for
> > device)
> > read(3, "[PHP]\n; $Id: php.ini-dist,v 1.78"..., 8192) = 8192
> > read(3, "n to end users, such as file pat"..., 8192) = 8192
> > read(3, "CP_PORT or the mysql-tcp entry i"..., 8192) = 7824
> > read(3, "", 368) = 0
> > read(3, "", 8192) = 0
> > ioctl(3, TCGETS, 0xbfffec14) = -1 ENOTTY (Inappropriate ioctl
for
> > device)
> > close(3) = 0
> > --- SIGSEGV (Segmentation fault) ---
> > +++ killed by SIGSEGV +++
> >
> >
> > Interestingly, if I 'strace httpd -X' while using the 4.0.6 module and
> > compare, the last "read(3, "",8192)" call doesn't occur... the
> > close is
> > followed by lots of brk's (dunno if this is of any significance).
Looks to
> > me like "whatever happens right after reading in php.ini" is causing the
> > segfault. But I don't know what that is or how to fix it.
> >
> > The last line in my ssl_engine_log after a segfault shows:
> > [info] Init: Configuring temporary DH parameters (512/1024 bits)
> >
> > When using 4.0.6, the line after that one is:
> > [info] Init: 2nd startup round (already detached)
> > <followed by lots more and a properly functioning httpd>
> >
> > 4.1.1 is configured like this:
> >
./configure --with-mysql=/home/mysql --with-apxs=/usr/local/apache/bin/apxs
> > --with-curl=/usr/local/lib/libcurl.so --with-openssl --enable-debug
> >
> > 4.0.6 is configured like this:
> >
./configure --with-mysql=/home/mysql --with-apxs=/usr/local/apache/bin/apxs
> > --with-curl=/usr/local/lib/libcurl.so --with-openssl
> >
> >
> > I'm really stuck, so any help you can offer would be greatly
appreciated.
> >
> > Thanks.
> >
> > -Russ
> >
> >
>