Generating core-dump for php5-fpm

Install Packages

Run following command:

apt-get install gdb php5-dbg

Linux Changes

First you need to enable core dumps in linux

su -
echo '/tmp/core-%e.%p' > /proc/sys/kernel/core_pattern
echo 0 > /proc/sys/kernel/core_uses_pid
ulimit -c unlimited

PHP5-FPM Config Changes

Then you need to make changes to php5-fpm config:

vim /etc/php-fpm.d/www.conf

and uncomment following line

rlimit_core = unlimited

Restart FPM

service pgp5-fpm restart

Check core dumps

If you see in fpm error logs:

[05-Jun-2014 06:21:12] WARNING: [pool www] child 631273 exited on signal 11 (SIGSEGV - core dumped) after 20.263546 seconds from start

Go to /tmp folder and you will see files like:

# ls -l /tmp/core*
-rw------- 1 www-data www-data 133021696 Jun  5 06:05 /tmp/core-php5-fpm.630436
-rw------- 1 www-data www-data  66887680 Jun  5 06:09 /tmp/core-php5-fpm.630735
-rw------- 1 www-data www-data  66887680 Jun  5 06:11 /tmp/core-php5-fpm.630832
-rw------- 1 www-data www-data  72388608 Jun  5 06:21 /tmp/core-php5-fpm.631273

Reading a backtrace

Use following syntax to run gdb

gdb /usr/sbin/php5-fpm /tmp/core-php5-fpm.630832

Above will show useful info about crash from dump file and open a gdb shell.

You can run bt command in it to get more detailed output.

(gdb) bt