ID: 8446
User Update by: [EMAIL PROTECTED]
Old-Status: Feedback
Status: Open
Bug Type: *General Issues
Description: PHP/apache process is in infinite loop or appears to suck CPU
I now added the --enable-debug and here are the following backtraces I get when
php/apache is stuck:
example1:
Attaching to program: /usr/sbin/httpd, Pid 3193
0x2ac1d671 in ?? ()
(gdb) bt
#0 0x2ac1d671 in ?? ()
#1 0x2ac1d4d4 in ?? ()
#2 0x81016ca in normal_skipS (enc=0x1, ptr=0x0) at xmltok_impl.c:1694
#3 0x807efe7 in php_global_startup_internal_extensions () at internal_functions.c:68
#4 0x807c637 in init_request_info ()
#5 0x8150470 in utf8_toUtf8 ()
#6 0x814ed2a in normal_scanPoundName ()
#7 0x814edaa in normal_scanPoundName ()
#8 0x814ed16 in normal_scanPoundName ()
#9 0x815e41d in gdImageCopyMergeGray ()
#10 0x815eab3 in gdImageCreateFromXbm ()
#11 0x815ee30 in gdImageCreateFromXbm ()
#12 0x815f395 in gdImageSetTile ()
#13 0x815f9bf in gdImageCharUp ()
#14 0x2abbafd1 in ?? ()
(gdb)
example2:
(gdb) bt
#0 0x2ac1ce26 in ?? ()
#1 0x2ac1cc94 in ?? ()
#2 0x81016ca in php_XmlInitUnknownEncoding (mem=0x1, table=0x0, convert=0x7ffff898,
userData=0x807efbd) at xmltok.c:1313
#3 0x807efe7 in do_cfg_op (type=42 '*', result=0x821cbb4, op1=0x7ffff8d8,
op2=0x8153192)
at configuration-parser.c:389
#4 0x807c637 in php_apache_value_handler_ex ()
#5 0x8150470 in big2_scanComment ()
#6 0x814ed2a in little2_prologTok ()
#7 0x814edaa in little2_prologTok ()
#8 0x815e895 in mime_cmds ()
#9 0x815eab3 in mime_cmds ()
#10 0x815ee30 in negotiation_cmds ()
#11 0x815f395 in status_options ()
#12 0x815f9bf in status_options ()
#13 0x2abbae21 in ?? ()
(gdb)
Unfortunately there is no way I can attach a script that causes this bug because we
have no clue when it happens and it happens only a few times a day on a site that gets
65 million page views per month. We are using gd version 1.8.3
Previous Comments:
---------------------------------------------------------------------------
[2001-01-02 09:25:12] [EMAIL PROTECTED]
Yes, you should reconfigure/compile php with --enable-debug
in configure line. And please add also shortest possible
script which causes this infinite loop.
--Jani
---------------------------------------------------------------------------
[2000-12-28 14:04:42] [EMAIL PROTECTED]
Below is the requested information on one of the processes. I am not running php with
--enable-debug - is this a problem? Should I go back and recompile everything?
Thanks
Attaching to program: /usr/sbin/httpd, Pid 28916
0x2ac1ce2b in ?? ()
(gdb) bt
#0 0x2ac1ce2b in ?? ()
#1 0x2ac1cc94 in ?? ()
#2 0x80dcf59 in do_foreach_cont (value=0xb4b201c, key=0x2acbe8a0, as_token=0x80eecb8)
at zend_compile.c:2095
#3 0x80dd41b in do_extended_fcall_begin () at zend_compile.c:2291
#4 0x807e708 in php_execute_script (primary_file=0x0) at main.c:1150
#5 0x807e6bb in php_execute_script (primary_file=0x81a5920) at main.c:1144
#6 0x807cdb5 in php_info_apache (zend_module=0x81ea024) at php_apache.c:269
#7 0x812556e in usage ()
#8 0x812b4fb in ap_read_request ()
#9 0x812e0b2 in ap_rprintf ()
#10 0x812e6fb in ap_send_error_response ()
#11 0x812ea78 in ap_send_error_response ()
#12 0x812efdd in check_safe_file ()
#13 0x812f607 in directory_walk ()
#14 0x2abbae21 in ?? ()
---------------------------------------------------------------------------
[2000-12-28 05:31:37] [EMAIL PROTECTED]
Rasmus replyed:
We cannot possibly track this down for you based on this. You will need
to attach gdb to one of these looped processes and see where it is
looping.
---------------------------------------------------------------------------
[2000-12-27 19:31:40] [EMAIL PROTECTED]
Below is a report from top for a SMP machine. This happens to all of our webservers
every day or so a few machine have one two httpd processes eating CPU. This same
problem also happens on the last two or more previous versions of php.
A simple kill -9 pid removes it w/o killing the whole webserver. Below are the apache
and httpd configuration lines:
./configure --with-mysql --enable-track-vars --with-zlib --with-apache=$apachedir
--with-gd=$gddir --with-jpeg-dir=$gddir
--with-config-file-path=/common/globalconfig/php --enable-memory-limit
./configure --with-layout=production --activate-module=src/modules/php4/libphp4.a
An interesting aspect that is amount of memory each processing using 100% CPU is
around 50megs. We have the memory limit set in php as 30M.
1 processes: 85 sleeping, 6 running, 0 zombie, 0 stopped
CPU0 states: 70.0% user, 4.0% system, 0.0% nice, 25.0% idle
CPU1 states: 53.0% user, 4.0% system, 0.0% nice, 41.0% idle
Mem: 1036464K av, 1006188K used, 30276K free, 149244K shrd, 32068K buff
Swap: 136512K av, 1124K used, 135388K free 677272K cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
7763 nobody 9 0 53808 52M 2172 R 99.9 5.1 1527m httpd
6825 nobody 0 0 4320 4320 2272 S 9.2 0.4 0:00 httpd
6779 nobody 0 0 4912 4912 2276 S 6.4 0.4 0:00 httpd
6830 root 4 0 1036 1036 812 R 6.4 0.0 0:00 top
Thanks for your help - this has been a real nagging problem for us that we keep
thinking is resolved in the next version.
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=8446
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]