Edit report at http://bugs.php.net/bug.php?id=53412&edit=1
ID: 53412 User updated by: php-bugs at thequod dot de Reported by: php-bugs at thequod dot de Summary: php-fpm children constantly exiting (immediately) -Status: Feedback +Status: Assigned Type: Bug Package: FPM related Operating System: Linux PHP Version: 5.3SVN-2010-11-26 (snap) Assigned To: fat Block user comment: N Private report: N New Comment: Unfortunately this does not work: "exit" is not undefined in my case, and when running the program (using "-y main.conf" it starts looping right away). However, I have something more/new: (gdb) set follow-fork-mode child (gdb) catch fork Catchpoint 1 (fork) (gdb) break exit Breakpoint 2 at 0x806a2f0 (gdb) run -y main.conf Starting program: /usr/sbin/php5-fpm -y main.conf [Thread debugging using libthread_db enabled] [New Thread 0xb7591b70 (LWP 24013)] [Thread 0xb7591b70 (LWP 24013) exited] Nov 30 17:20:22.583597 [DEBUG] pid 24010, fpm_event_init_main(), line 229: 1 fds have been reserved Nov 30 17:20:22.583701 [NOTICE] pid 24010, fpm_init(), line 52: fpm is running, pid 24010 Catchpoint 1 (forked process 24014), 0xb7a77f32 in __libc_fork () at ../nptl/sysdeps/unix/sysv/linux/i386/../fork.c:130 130 ../nptl/sysdeps/unix/sysv/linux/i386/../fork.c: No such file or directory. in ../nptl/sysdeps/unix/sysv/linux/i386/../fork.c (gdb) n [New process 24014] [Thread debugging using libthread_db enabled] Nov 30 17:20:33.356489 [DEBUG] pid 24010, fpm_children_make(), line 377: pid after fork=24014 Nov 30 17:20:33.356517 [DEBUG] pid 24010, fpm_children_make(), line 400: [pool www] child 24014 started Nov 30 17:20:33.356527 [NOTICE] pid 24010, fpm_event_loop(), line 254: ready to handle connections 137 in ../nptl/sysdeps/unix/sysv/linux/i386/../fork.c [...] 216 in ../nptl/sysdeps/unix/sysv/linux/i386/../fork.c fpm_children_make (wp=0x8924b30, in_event_loop=0, nb_to_spawn=0, is_debug=1) at /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c:377 377 /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c: No such file or directory. in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 376 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 377 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c Nov 30 17:22:45.638098 [DEBUG] pid 24014, fpm_children_make(), line 377: pid after fork=0 379 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 337 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 338 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 59 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 383 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 146 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 383 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 146 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 148 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 149 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 148 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 150 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 148 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 151 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 148 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 152 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 148 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 153 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 148 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c 406 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c fpm_children_create_initial (wp=0x8924b30) at /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c:412 412 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c fpm_run (max_requests=0xbfffd590) at /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm.c:70 70 /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm.c: No such file or directory. in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm.c 80 in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm.c Using "next"/"n" the next time causes the infinite loop. I cannot see what is going on there really, because the scrollback buffer is spammed fast and I need to switch to another screen window to "pkill -9 -f php-fpm". Apparently the child/fork I've followed in gdb exits here?! Debugging this further, it looks like the child itselfs calls fork again? (gdb) set follow-fork-mode child (gdb) catch fork Catchpoint 1 (fork) (gdb) break exit Breakpoint 2 at 0x806a2f0 (gdb) break fpm_children_create_initial Breakpoint 3 at 0x83a73b6: file /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c, line 411. (gdb) run -y main.conf Starting program: /usr/sbin/php5-fpm -y main.conf [Thread debugging using libthread_db enabled] [New Thread 0xb7591b70 (LWP 26154)] [Thread 0xb7591b70 (LWP 26154) exited] Nov 30 17:37:05.574273 [DEBUG] pid 26151, fpm_event_init_main(), line 229: 1 fds have been reserved Nov 30 17:37:05.574381 [NOTICE] pid 26151, fpm_init(), line 52: fpm is running, pid 26151 Breakpoint 3, fpm_children_create_initial (wp=0x8924b30) at /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c:411 411 /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c: No such file or directory. in /build/buildd/php5-5.3.4~snap201011290730/sapi/fpm/fpm/fpm_children.c (gdb) n Catchpoint 1 (forked process 26155), 0xb7a77f32 in __libc_fork () at ../nptl/sysdeps/unix/sysv/linux/i386/../fork.c:130 130 ../nptl/sysdeps/unix/sysv/linux/i386/../fork.c: No such file or directory. in ../nptl/sysdeps/unix/sysv/linux/i386/../fork.c (gdb) n [New process 26155] Nov 30 17:37:13.200755 [DEBUG] pid 26151, fpm_children_make(), line 377: pid after fork=26155 Nov 30 17:37:13.200784 [DEBUG] pid 26151, fpm_children_make(), line 400: [pool www] child 26155 started Nov 30 17:37:13.200799 [NOTICE] pid 26151, fpm_event_loop(), line 254: ready to handle connections [Thread debugging using libthread_db enabled] 137 in ../nptl/sysdeps/unix/sysv/linux/i386/../fork.c When coming to the last line (80 in fpm.c), I can do "ni" once, before the second one triggers the loop again. I could setup a remote box for you, if this would help you debugging this. However, my fear grows that this is related to some Debian/Ubuntu patch (and I should check vanilla PHP), but this also means that you could try the Ubuntu build as well as a remote box. Previous Comments: ------------------------------------------------------------------------ [2010-11-30 00:39:14] f...@php.net You can : # gdb ./sapi/fpm/php-fpm (gdb) set follow-fork-mode child (gdb) break exit Function "exit" not defined. Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 1 (exit) pending. (gdb) run ... (gdb) bt ------------------------------------------------------------------------ [2010-11-29 23:17:21] php-bugs at thequod dot de Don't you see a possibility to attach gdb to the child process to see where it is exiting? What does exit code 1 refer to? Generic error? Does it make sense to use specific exit codes for reference? Where should I to start with adding debug output? FWIW, this happens both with the Ubuntu package (available at https://launchpad.net/ubuntu/+source/php5/5.3.3-1ubuntu9.1/+build/2003382 if you like to try reproducing it from there) and the package updated using the source from the snapshot(s); I have not tried it unpatched. However, there does not appear to be a fpm specific patch (apart from config handling). My packages are available from here: https://launchpad.net/~blueyed/+archive/ppa/+packages ------------------------------------------------------------------------ [2010-11-29 23:17:08] php-bugs at thequod dot de Don't you see a possibility to attach gdb to the child process to see where it is exiting? What does exit code 1 refer to? Generic error? Does it make sense to use specific exit codes for reference? Where should I to start with adding debug output? FWIW, this happens both with the Ubuntu package (available at https://launchpad.net/ubuntu/+source/php5/5.3.3-1ubuntu9.1/+build/2003382 if you like to try reproducing it from there) and the package updated using the source from the snapshot(s); I have not tried it unpatched. However, there does not appear to be a fpm specific patch (apart from config handling). My packages are available from here: https://launchpad.net/~blueyed/+archive/ppa/+packages ------------------------------------------------------------------------ [2010-11-29 22:08:56] f...@php.net OK, children forks correctely. There is a problem somewhere after fork(). What you can do (as I can't reproduice the problem and I don't have access to a server which has the same problem): set only one pool with : log_level = debug pm = static pm.max_children = 1 insert a log trace in the source code step by step to determine where the bug comes from. I'm sorry not to be able to help you more. ------------------------------------------------------------------------ [2010-11-29 21:50:23] php-bugs at thequod dot de It looks like this: Nov 29 21:47:59.518416 [DEBUG] pid 29191, fpm_children_make(), line 377: pid after fork=30301 Nov 29 21:47:59.518440 [NOTICE] pid 29191, fpm_children_make(), line 400: [pool www] child 30301 started Nov 29 21:47:59.518451 [DEBUG] pid 30301, fpm_children_make(), line 377: pid after fork=0 Nov 29 21:47:59.518981 [DEBUG] pid 29191, fpm_got_signal(), line 75: received SIGCHLD Nov 29 21:47:59.518995 [WARNING] pid 29191, fpm_children_bury(), line 249: [pool www] child 30301 exited with code 1 after 0.000562 seconds from start ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/bug.php?id=53412 -- Edit this bug report at http://bugs.php.net/bug.php?id=53412&edit=1