Re: Upgraded from 4.0.6 to 4.1.1 and now apache segfaults
| From: | Yasuo Ohgaki | Date: | Wed, 16 Jan 2002 05:03:35 +0000 |
| Subject: | Re: Upgraded from 4.0.6 to 4.1.1 and now apache segfaults | ||
| References: | 1 2 3 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-77202@lists.php.net to get a copy of this message | ||
Russ Goodwin wrote:
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! -RussCan you display phpinfo()? -- Yasuo Ohgaki
"Yasuo Ohgaki" <yasuo_ohgaki@yahoo.com> wrote in message news:3C44D712.7000102@yahoo.com...-- Yasuo OhgakiI guess you are loading incompatible modules from your php.ini. Get rid of all extensions including zend extensions. -- Yasuo Ohgaki Russ Goodwin wrote:findHi- I've searched high and low (bugs.php.net and google) and can't seem tobut ifanyone with this same problem, I'm not entirely convinced it's a bug,PHPI 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 andrun4.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, thenand'apachectl startssl', apachectl functions normally, asks for my key's passphrase, then exits. Ordinarily the forked child would stay aliveproblem,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 limitgotand posted to the php.install group asking if anyone had seen this, butnewerno response. I'm convinced it's not a file descriptor problem, thoughbecause running 'limit' shows "descriptors 1024" and "openfiles1024" (everything else unlimited). The segfault only happens with thesomethingphp though, so I'm posting here... if you think it's an apache (ortoelse) problem, please let me know. I've uncommented the 6th virtualhost's log directives and run 'httpd -X'areget 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 youdetails.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" forp2=0x406935c0This 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:3838 ../sysdeps/generic/strcmp.c: No such file or directory.(gdb) bt #0 strcmp (p1=0x403785c0 <Address 0x403785c0 out of bounds>,MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)"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,st_size=6,= 0x401ba000_llseek(21, 0, [0], SEEK_CUR) = 0 getpid() = 12231stat("/usr/local/apache/logs/httpd.pid", {st_mode=S_IFREG|0644,= 3...}) = 0time(NULL) = 1011128952write(2, "[Tue Jan 15 16:09:12 2002] [warn"..., 131) = 131write(2, "\n", 1) = 1 umask(022) = 02 umask(022) = 022open("/usr/local/apache/logs/httpd.pid", O_WRONLY|O_CREAT|O_TRUNC, 0666)MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)umask(02) = 022 fstat64(0x3, 0xbffff1a0) = 0old_mmap(NULL, 4096, PROT_READ|PROT_WRITE,0= 0x401bb000write(3, "12231\n", 6) = 6 close(3) = 0 munmap(0x401bb000, 4096) = 0 open("./php.ini", O_RDONLY) = -1 ENOENT (No such file ordirectory) open("/usr/local/lib/php.ini", O_RDONLY) = 3getcwd("/tmp", 4095) = 5lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lstat("/usr/local", {st_mode=S_IFDIR|S_ISGID|0755, st_size=4096, ...}) =...})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,for= 0ioctl(3, TCGETS, 0xbffff7fc) = -1 ENOTTY (Inappropriate ioctlfordevice) 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) = 7824read(3, "", 368) = 0 read(3, "", 8192) = 0 ioctl(3, TCGETS, 0xbfffec14) = -1 ENOTTY (Inappropriate ioctlLooks todevice)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)../configure --with-mysql=/home/mysql --with-apxs=/usr/local/apache/bin/apxsme 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:appreciated.--with-curl=/usr/local/lib/libcurl.so --with-openssl I'm really stuck, so any help you can offer would be greatlyThanks. -Russ