PHP 4.0 Bug #8885: Child processes hang on exit
| From: | nick at shadowlink dot net | Date: | Wed, 24 Jan 2001 15:54:07 +0000 |
| Subject: | PHP 4.0 Bug #8885: Child processes hang on exit | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-44903@lists.php.net to get a copy of this message | ||
From: nick@shadowlink.net
Operating system: 4.1 BSDI BSD/OS
PHP version: 4.0.4pl1
PHP Bug Type: Reproduceable crash
Bug description: Child processes hang on exit
Child (or the main) processes hang whenever they try to exit.
This will happen when
maxrequestsperchild is reached (I'm assuming) and a child tries to die naturally
a child process is killed manually
the main process can't bind to port/etc
Here's a ps to see what it looks like
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
www443 14066 5.6 0.3 6220 988 ?? R 8:00AM 0:06.52 /var/www443/bin/httpd
www443 14067 5.3 0.3 6216 1000 ?? R 8:00AM 0:07.20 /var/www443/bin/httpd
www443 14063 5.4 0.3 6220 1000 ?? R 8:00AM 0:07.17 /var/www443/bin/httpd
www443 14065 5.4 0.3 6212 980 ?? R 8:00AM 0:06.63 /var/www443/bin/httpd
www443 14064 5.5 0.3 6216 1004 ?? R 8:00AM 0:07.57 /var/www443/bin/httpd
www443 19823 5.9 0.2 6032 608 ?? R 8:26AM 9:31.91 /var/www443/bin/httpd
root 14027 0.0 0.1 6032 404 ?? Ss 8:00AM 0:00.18 /var/www443/bin/httpd
www443 14322 0.0 0.2 6208 724 ?? S 8:01AM 0:00.22 /var/www443/bin/httpd
www443 14346 0.0 0.2 6208 736 ?? S 8:01AM 0:00.23 /var/www443/bin/httpd
www443 19726 0.0 0.2 6212 744 ?? S 8:25AM 0:00.17 /var/www443/bin/httpd
www443 19732 0.0 0.2 6212 732 ?? S 8:25AM 0:00.14 /var/www443/bin/httpd
www443 19733 0.0 0.2 6212 724 ?? S 8:25AM 0:00.09 /var/www443/bin/httpd
as you can see, the top 5 processes are hung. A sigkill is the only way to kill them.
Attaching to one of the hung processes with gdb gives the backtrace listed at the
bottom of this report.
We can only produce this problem with the following configuration:
(Apache 1.3.12 or 1.3.14)
./configure --prefix=$prefix --with-port=$port --enable-module=most \
--enable-module=rewrite --enable-module=status --with-layout=Apache \
--sysconfdir=$prefix/conf --enable-module=so
(mod_ssl 2.6.5-1.3.12 or x.x.x-1.3.14)
./configure --with-apache=../apache_1.3.12 --prefix=/var/www443 --with-ssl=/usr/local/ssl
(php 4.0.1 - 4.0.4pl1)
./configure --with-mysql --with-xml --with-gd=/usr/local \
--with-apxs=/var/www443/bin/apxs --enable-track-vars --enable-bcmath \
--enable-ftp --with-jpeg-dir=/usr/local/lib --with-ttf
If we leave out PHP or mod_ssl, the problem goes away.
Also, with older versions of BSDi, this problem does not occure. (using the same configuration as
above)
Attaching to program `/var/www443/bin/httpd', process 19823
Reading symbols from /shlib/libdl.so...done.
Reading symbols from /shlib/libgcc.so.1...done.
Reading symbols from /shlib/libc.so.1...done.
Reading symbols from /shlib/ld-bsdi.so...done.
Reading symbols from /var/www443/libexec/libphp4.so...done.
Reading symbols from /usr/local/lib/libttf.so.2...done.
Reading symbols from /shlib/libm.so.0.0...done.
0x481a5a54 in __deregister_frame_info ()
(gdb) bt
#0 0x481a5a54 in __deregister_frame_info ()
#1 0x8069e7a in __do_global_dtors_aux ()
#2 0x8163fa4 in _fini ()
#3 0x48248028 in exit ()
#4 0x80c3e1f in clean_child_exit (code=0) at http_main.c:517
#5 0x80c6ac2 in child_main (child_num_arg=10) at http_main.c:4057
#6 0x80c6f8c in make_child (s=0x81ad034, slot=10, now=980349966) at http_main.c:4435
#7 0x80c7305 in perform_idle_server_maintenance () at http_main.c:4599
#8 0x80c77f5 in standalone_main (argc=1, argv=0x8047ec4) at http_main.c:4831
#9 0x80c7dc3 in main (argc=1, argv=0x8047ec4) at http_main.c:5092
#10 0x8069e37 in __start ()
(gdb) quit
# /var/www443/bin/httpd -l
Compiled-in modules:
http_core.c
mod_vhost_alias.c
mod_env.c
mod_define.c
mod_log_config.c
mod_mime_magic.c
mod_mime.c
mod_negotiation.c
mod_status.c
mod_info.c
mod_include.c
mod_autoindex.c
mod_dir.c
mod_cgi.c
mod_asis.c
mod_imap.c
mod_actions.c
mod_speling.c
mod_userdir.c
mod_alias.c
mod_rewrite.c
mod_access.c
mod_auth.c
mod_auth_anon.c
mod_auth_dbm.c
mod_digest.c
mod_proxy.c
mod_cern_meta.c
mod_expires.c
mod_headers.c
mod_usertrack.c
mod_unique_id.c
mod_so.c
mod_setenvif.c
mod_ssl.c
mod_frontpage.c
--
Edit Bug report at: http://bugs.php.net/?id=8885&edit=1