ID:               50265
 User updated by:  mg at fork dot pl
 Reported By:      mg at fork dot pl
-Status:           Feedback
+Status:           Open
 Bug Type:         CGI related
 Operating System: Linux
 PHP Version:      5.2.11
 New Comment:

My previous comment shows state BEFORE the problem hits. Many "forking"
messages are because of low MAX_REQUEST limit.

When I attached to the process running inside the endless loop (it was
before recompilation with DEBUG_FASTCGI) I got following bt

#0  0xffffe424 in __kernel_vsyscall ()                                 
                                                                        
                                                  
#1  0xb712fc6d in __libc_wait (stat_loc=0xbff2d2a4) 
at ../sysdeps/unix/sysv/linux/wait.c:32                                
                                                                        

#2  0x0845e720 in main (argc=0, argv=Cannot access memory at address
0x4                                                                     
                                                       
) at
/usr/src/debug/dev-lang/php-5.2.11/php-5.2.11/sapi/cgi/cgi_main.c:1632


Previous Comments:
------------------------------------------------------------------------

[2009-11-24 20:20:27] [email protected]

1 child is in endless loop or what? Try attach to such process with gdb
and see what the backtrace says.

------------------------------------------------------------------------

[2009-11-24 03:02:09] mg at fork dot pl

I rebuilt php and started up, but as I don't know what exactly causes
the problem we'll have to wait until it happens...

I started it like
% PHP_FCGI_CHILDREN=2 PHP_FCGI_MAX_REQUESTS=100 php-cgi -e -b
127.0.0.1:30004 -c /.../php.ini

Process group 2720
Forking, 0 running
Forking, 1 running
Wait for kids, pid 2720
Forking, 1 running
Wait for kids, pid 2720
Forking, 1 running
Wait for kids, pid 2720
Forking, 1 running
Wait for kids, pid 2720


pstree -uap shows

`-php-cgi,2720 -e -b 127.0.0.1:30004 -c /.../php.ini
  |-php-cgi,13821 -e -b 127.0.0.1:30004 -c /.../php.ini
  `-php-cgi,13822 -e -b 127.0.0.1:30004 -c /.../php.ini

------------------------------------------------------------------------

[2009-11-23 10:16:14] [email protected]

Try enable fastcgi debugging with DEBUG_FASTCGI when you compile PHP
and provide the log of the failing run.

------------------------------------------------------------------------

[2009-11-23 02:24:21] mg at fork dot pl

Description:
------------
fast-cgi php process loops forever during wait()ing for child process
while there's no more child processes. 

Actual result:
--------------
in cgi_main.c there's loop:

1631                 while (1) {
1632                     if (wait(&status) >= 0) {
1633                         running--;
1634                         break;
1635                     } else if (exit_signal) {
1636                         break;
1637                     }
1638                 }

wait returns -1 as strace shows:

wait4(-1, 0xbff2d2a4, 0, NULL)          = -1 ECHILD (No child
processes)

and loop never breaks (as apparently exit_signal is set to 0).


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=50265&edit=1

Reply via email to