Bug #18258: Gettting frequent Seg Faults on PHP scripts

From: Date: Wed, 10 Jul 2002 07:54:06 +0000
Subject: Bug #18258: Gettting frequent Seg Faults on PHP scripts
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-13693@lists.php.net to get a copy of this message
From: tauren@servlets.net Operating system: Red Hat 6.2 PHP version: 4.2.1 PHP Bug Type: Reproducible crash Bug description: Gettting frequent Seg Faults on PHP scripts I just upgraded to Apache 1.3.26 with PHP 4.2.1 and now I'm having problems with Segmentaion Faults when going to PHP pages. Previous to upgrading, my Apache/PHP server was running with all of the same options that I'm compiling in now. I wasn't having problems with the Apache 1.3.24/PHP4.2.0 combination. For instance, I have a simple document called phpinfo.php that contains the following: <?php phpinfo(); ?> When I hit this page, I will normally get the text output, but sometimes my browser will come back with no data or an error. Most of the time the two images (PHP and Zend) will not display. When this happens, the following errors are appended to the error_log: [Wed Jul 10 00:38:43 2002] [notice] child pid 1295 exit signal Segmentation fault (11) [Wed Jul 10 00:38:46 2002] [notice] child pid 1298 exit signal Segmentation fault (11) I've recompiled Apache and PHP with the --enable-debug option. Here is how PHP is configured: CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure --prefix=/usr/local \ --with-apache=/home/local/src/atb/Apachetoolbox-1.5.58/apache_1.3.26 \ --enable-exif \ --enable-track-vars \ --with-calendar=shared \ --enable-magic-quotes \ --enable-trans-sid \ --enable-wddx \ --enable-ftp \ --enable-inline-optimization \ --enable-memory-limit \ --enable-debug \ --with-gd="/usr/local" \ --with-zlib \ --enable-gd-native-tt \ --with-t1lib="/usr/local" \ --with-jpeg-dir="/usr" \ --with-png-dir="/usr" \ --with-zlib-dir="/usr" \ --with-ttf \ --with-freetype-dir="/usr/local" \ --with-imap=/usr/local \ --with-mhash=/usr/local \ --with-mcrypt=/usr/local \ --with-openssl="/usr/local" \ --with-curl=/usr/local \ --with-gettext="/usr" \ --with-mysql=/usr \ --with-ldap \ Here is how Apache is configured: export SSL_BASE=/usr/local export EAPI_MM=/home/local/src/atb/Apachetoolbox-1.5.58/src/mm-1.1.3 export CFLAGS="" export LIBS="" export INCLUDES="" ./configure --prefix=/usr/local/apache \ --enable-suexec \ --suexec-caller=nobody \ --suexec-docroot=/home \ --suexec-logfile=/var/log/httpd/cgi.log \ --suexec-uidmin=500 \ --suexec-gidmin=500 \ --suexec-safepath=/usr/local/bin:/usr/bin:/bin \ --enable-module=so \ --enable-module=access \ --disable-module=auth_db \ --disable-module=digest \ --enable-module=imap \ --enable-module=mime \ --enable-module=setenvif \ --enable-module=usertrack \ --enable-module=auth \ --disable-module=cern_meta \ --disable-module=expires \ --enable-module=log_config \ --disable-module=proxy \ --disable-module=vhost_alias \ --disable-module=auth_anon \ --enable-module=cgi \ --enable-module=headers \ --disable-module=log_referer \ --enable-module=rewrite \ --enable-module=userdir \ --enable-module=asis \ --enable-module=autoindex \ --disable-module=example \ --disable-module=log_agent \ --enable-module=negotiation \ --enable-module=status \ --enable-module=actions \ --disable-module=auth_dbm \ --enable-module=dir \ --enable-module=include \ --disable-module=mime_magic \ --disable-module=unique_id \ --enable-module=alias \ --disable-module=auth_digest \ --enable-module=env \ --disable-module=info \ --disable-module=mmap_static \ --disable-module=speling \ --enable-module=ssl \ --activate-module=src/modules/layout/liblayout.a \ --activate-module=src/modules/ldap/mod_auth_ldap.c \ --activate-module=src/modules/perl/libperl.a \ --add-module=mod_frontpage.c --activate-module=src/modules/dav/libdav.a \ --add-module=/home/local/src/atb/Apachetoolbox-1.5.58/src/mod_gzip.c \ --activate-module=src/modules/php4/libphp4.a \ Note again that my previous Apache/PHP installation was successfully using all of these options. I'm not that familiar with using gdb, so I'll explain exactly what I did. Using this debug version of Apache/PHP, I executed this command: gdb /usr/local/apache/bin/httpd At the (gdb) prompt, I entered this (my Apache configuration doesn't use the default httpd.conf location): (gdb) run -X -DSSL -f /usr/local/apache/conf/custom/test/httpd.conf Starting program: /usr/local/apache/bin/httpd -X -DSSL -f /usr/local/apache/conf/custom/test/httpd.conf Processing config directory: /usr/local/apache/conf/custom/test/virtual Processing config file: /usr/local/apache/conf/custom/test/virtual/www.sample.com:80 When I hit the phpinfo.php page, this was output in gdb: Program received signal SIGSEGV, Segmentation fault. 0x81b42a6 in _zend_is_inconsistent (ht=0x63616373, file=0x8364c24 "zend_hash.c", line=681) at zend_hash.c:84 84 if (ht->inconsistent==HT_OK) { I did a backtrace and got this: (gdb) bt #0 0x81b42a6 in _zend_is_inconsistent (ht=0x63616373, file=0x8364c24 "zend_hash.c", line=681) at zend_hash.c:84 #1 0x81b5e26 in zend_hash_apply (ht=0x63616373, apply_func=0x80c5f78 <php_apache_alter_ini_entries>) at zend_hash.c:681 #2 0x80c6130 in send_php () at md4.c:255 #3 0x80c636f in send_parsed_php () at md4.c:255 #4 0x821bd83 in ap_invoke_handler () at md4.c:255 #5 0x8230b59 in process_request_internal () at md4.c:255 #6 0x8230bbc in ap_process_request () at md4.c:255 #7 0x8227c1e in child_main () at md4.c:255 #8 0x8227dd0 in make_child () at md4.c:255 #9 0x8227f29 in startup_children () at md4.c:255 #10 0x8228586 in standalone_main () at md4.c:255 #11 0x8228d63 in main () at md4.c:255 #12 0x402e59cb in __libc_start_main (main=0x82289fc <main>, argc=5, argv=0xbffffb44, init=0x808f990 <_init>, fini=0x832864c <_fini>, rtld_fini=0x4000aea0 <_dl_fini>, stack_end=0xbffffb3c) at ../sysdeps/generic/libc-start.c:92 I don't know if this is helpful or not. If you need more details, please let me know what you need and how to get it. This problem seems to be happening only on any PHP page. No other document types are causing the problem. Normally I would also include APC (alternative cache) and/or Zend Optimizer, but I've left them out for now. Currently my PHP customers on this server are without reliable PHP service. Any help or suggestions would be very much appreciated! Thanks, Tauren -- Edit bug report at http://bugs.php.net/?id=18258&edit=1 -- Fixed in CVS: http://bugs.php.net/fix.php?id=18258&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=18258&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=18258&r=needtrace Try newer version: http://bugs.php.net/fix.php?id=18258&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=18258&r=support Expected behavior: http://bugs.php.net/fix.php?id=18258&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=18258&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=18258&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=18258&r=globals

« previous php.bugs (#13693) next »