PHP-FPM。分段故障。不要理解核心转储

时间:2014-10-30 14:54:52

标签: php segmentation-fault apache2 internal-server-error

在我们的Web服务测试环境中,有一个请求导致500内部服务器错误。它偶然发生了一段时间。现在500是每个请求的结果(到某个REST路由)。我们使用的是:Ubuntu Server 12.04,Apache2.2,PHP-FPM(PHP 5.5.16),PHP库:Zend Framework 2,MongoDB,Doctrine 2 ODM,Redis。 Apache是​​通过apt安装的。 PHP是用config编译的:

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --datadir=/usr/share/php --mandir=/usr --enable-cli --enable-fastcgi --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --with-config-file-path=/etc --without-t1lib --disable-short-tags
--enable-pcntl --with-tsrm-pthreads --with-zlib --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-bcmath --with-bz2 --enable-calendar --enable-exif --enable-ftp --with-iconv-dir --with-gettext --with-imap --with-imap-ssl --with-openssl --enable-mbstring
--with-mcrypt --with-mhash --with-pspell --enable-soap --enable-sockets --enable-wddx --with-xmlrpc --with-xsl --enable-zip --with-kerberos --with-tidy --with-curl --enable-ctype --enable-dbase --enable-magic-quotes --enable-reflection --enable-exif --with-gd
--with-jpeg-dir=/usr --with-png-dir=/usr --with-vpx-dir=/usr --with-freetype-dir=/usr --with-t1lib --enable-exif --enable-gd-native-ttf --enable-gd-jis-conv --with-pear --enable-debug

我们在apache的error.log中找到的唯一错误消息:

[Tue Oct 28 13:02:03 2014] [error] [client 172.22.9.6] (104)Connection reset by peer: FastCGI: comm with server "/var/lib/apache2/fastcgi/php5.fastcgi" aborted: read failed
[Tue Oct 28 13:02:03 2014] [error] [client 172.22.9.6] FastCGI: incomplete headers (0 bytes) received from server "/var/lib/apache2/fastcgi/php5.fastcgi"

php-fpm.log中没有提示

kernel.log:

    Oct 30 13:05:17 srv42 kernel: [5082178.905310] php-fpm[28668]: segfault at 74ec8319 ip 0000000000a067c9 sp 00007fffae873810 error 4 in php-fpm[400000+bd2000]
Oct 30 13:05:47 srv42 kernel: [5082208.620852] php-fpm[28667]: segfault at 74ec8319 ip 0000000000a067c9 sp 00007fffae873810 error 4 in php-fpm[400000+bd2000]
Oct 30 13:06:28 srv42 kernel: [5082248.973311] php-fpm[28786]: segfault at 74ec8319 ip 0000000000a067c9 sp 00007fffae873810 error 4 in php-fpm[400000+bd2000]
Oct 30 13:07:03 srv42 kernel: [5082284.713304] php-fpm[28784]: segfault at 74ec8319 ip 0000000000a067c9 sp 00007fffae873810 error 4 in php-fpm[400000+bd2000]
Oct 30 13:07:44 srv42 kernel: [5082325.287816] php-fpm[28808]: segfault at 7f3174ec8319 ip 0000000000a067c9 sp 00007fffae873810 error 4 in php-fpm[400000+bd2000]
Oct 30 13:09:25 srv42 kernel: [5082426.089227] php-fpm[28862]: segfault at 74ec8319 ip 0000000000a067c9 sp 00007fffae873810 error 4 in php-fpm[400000+bd2000]
Oct 30 13:13:57 srv42 kernel: [5082698.146905] php-fpm[28861]: segfault at 74ec8319 ip 0000000000a067c9 sp 00007fffae873810 error 4 in php-fpm[400000+bd2000]
Oct 30 13:14:57 srv42 kernel: [5082757.795445] php-fpm[28864]: segfault at 74ec8319 ip 0000000000a067c9 sp 00007fffae873810 error 4 in php-fpm[400000+bd2000]
Oct 30 13:15:08 srv42 kernel: [5082769.605783] php-fpm[28848]: segfault at 74ec8319 ip 0000000000a067c9 sp 00007fffae873810 error 4 in php-fpm[400000+bd2000]
Oct 30 13:15:28 srv42 kernel: [5082788.841189] php-fpm[28878]: segfault at 74ec8319 ip 0000000000a067c9 sp 00007fffae873810 error 4 in php-fpm[400000+bd2000]
Oct 30 13:16:02 srv42 kernel: [5082823.274631] php-fpm[28877]: segfault at 74ec8319 ip 0000000000a067c9 sp 00007fffae873810 error 4 in php-fpm[400000+bd2000]
Oct 30 13:22:04 srv42 kernel: [5083184.891103] php-fpm[28880]: segfault at 74ec8319 ip 0000000000a067c9 sp 00007fffae873810 error 4 in php-fpm[400000+bd2000]
Oct 30 13:22:05 srv42 kernel: [5083186.017818] php-fpm[28875]: segfault at 74ec8319 ip 0000000000a067c9 sp 00007fffae873810 error 4 in php-fpm[400000+bd2000]
Oct 30 13:22:06 srv42 kernel: [5083187.128489] php-fpm[28896]: segfault at 74ec8319 ip 0000000000a067c9 sp 00007fffae873810 error 4 in php-fpm[400000+bd2000]
Oct 30 13:30:25 srv42 kernel: [5083685.280565] php-fpm[28912]: segfault at 74ec8319 ip 0000000000a067c9 sp 00007fffae873810 error 4 in php-fpm[400000+bd2000]
Oct 30 13:46:38 srv42 kernel: [5084658.434006] php-fpm[29418] general protection ip:a067c9 sp:7fffae873810 error:0 in php-fpm[400000+bd2000]

最后,我从崩溃报告中删除了核心转储:

root@srv42:/var/php-core-dumps# gdb /usr/sbin/php-fpm /var/php-core-dumps/CoreDump 
GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /usr/sbin/php-fpm...done.
[New LWP 4922]

warning: Can't read pathname for load map: Eingabe-/Ausgabefehler.

warning: .dynamic section for "/usr/lib/php/extensions/debug-non-zts-20121212/mongo.so" is not at the expected address (wrong library or version mismatch?)
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `php-fpm: pool www                                                             '.
Program terminated with signal 11, Segmentation fault.
#0  0x000000000099190a in zend_mm_check_ptr (heap=0x2edf9d0, ptr=0x7f4127407a08, silent=1, __zend_filename=0xf3c1f8 "/home/root/src/php-5.5.16/Zend/zend_hash.c", __zend_lineno=565, __zend_orig_filename=0x0, __zend_orig_lineno=0)
    at /home/root/src/php-5.5.16/Zend/zend_alloc.c:1384
1384        if (p->info._size != ZEND_MM_NEXT_BLOCK(p)->info._prev) {
(gdb) bt
#0  0x000000000099190a in zend_mm_check_ptr (heap=0x2edf9d0, ptr=0x7f4127407a08, silent=1, __zend_filename=0xf3c1f8 "/home/root/src/php-5.5.16/Zend/zend_hash.c", __zend_lineno=565, __zend_orig_filename=0x0, __zend_orig_lineno=0)
    at /home/root/src/php-5.5.16/Zend/zend_alloc.c:1384
#1  0x0000000000993587 in _zend_mm_free_int (heap=0x2edf9d0, p=0x7f4127407a08, __zend_filename=0xf3c1f8 "/home/root/src/php-5.5.16/Zend/zend_hash.c", __zend_lineno=565, __zend_orig_filename=0x0, __zend_orig_lineno=0) at /home/root/src/php-5.5.16/Zend/zend_alloc.c:2068
#2  0x0000000000994b92 in _efree (ptr=0x7f4127407a08, __zend_filename=0xf3c1f8 "/home/root/src/php-5.5.16/Zend/zend_hash.c", __zend_lineno=565, __zend_orig_filename=0x0, __zend_orig_lineno=0) at /home/root/src/php-5.5.16/Zend/zend_alloc.c:2440
#3  0x00000000009dfa6e in zend_hash_destroy (ht=0xd321bd0) at /home/root/src/php-5.5.16/Zend/zend_hash.c:565
#4  0x00000000009c9feb in _zval_dtor_func (zvalue=0x7f4127407ab0, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.c:45
#5  0x00000000009b6735 in _zval_dtor (zvalue=0x7f4127407ab0, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.h:35
#6  0x00000000009b6800 in i_zval_ptr_dtor (zval_ptr=0x7f4127407ab0, __zend_filename=0xf3e5c8 "/home/root/src/php-5.5.16/Zend/zend_objects.c", __zend_lineno=54) at /home/root/src/php-5.5.16/Zend/zend_execute.h:81
#7  0x00000000009b7a2c in _zval_ptr_dtor (zval_ptr=0xd2f5b00, __zend_filename=0xf3e5c8 "/home/root/src/php-5.5.16/Zend/zend_objects.c", __zend_lineno=54) at /home/root/src/php-5.5.16/Zend/zend_execute_API.c:426
#8  0x00000000009fe932 in zend_object_std_dtor (object=0xd321b58) at /home/root/src/php-5.5.16/Zend/zend_objects.c:54
#9  0x00000000009fed5c in zend_objects_free_object_storage (object=0xd321b58) at /home/root/src/php-5.5.16/Zend/zend_objects.c:137
#10 0x0000000000a05ee7 in zend_objects_store_del_ref_by_handle_ex (handle=1025, handlers=0x129cec0) at /home/root/src/php-5.5.16/Zend/zend_objects_API.c:226
#11 0x0000000000a05c30 in zend_objects_store_del_ref (zobject=0xd321ae0) at /home/root/src/php-5.5.16/Zend/zend_objects_API.c:178
#12 0x00000000009ca028 in _zval_dtor_func (zvalue=0xd321ae0, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.c:54
#13 0x00000000009b6735 in _zval_dtor (zvalue=0xd321ae0, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.h:35
#14 0x00000000009b6800 in i_zval_ptr_dtor (zval_ptr=0xd321ae0, __zend_filename=0xf3aaa0 "/home/root/src/php-5.5.16/Zend/zend_variables.c", __zend_lineno=182) at /home/root/src/php-5.5.16/Zend/zend_execute.h:81
#15 0x00000000009b7a2c in _zval_ptr_dtor (zval_ptr=0xd3219e0, __zend_filename=0xf3aaa0 "/home/root/src/php-5.5.16/Zend/zend_variables.c", __zend_lineno=182) at /home/root/src/php-5.5.16/Zend/zend_execute_API.c:426
#16 0x00000000009ca43a in _zval_ptr_dtor_wrapper (zval_ptr=0xd3219e0) at /home/root/src/php-5.5.16/Zend/zend_variables.c:182
#17 0x00000000009df9d7 in zend_hash_destroy (ht=0xd3179c8) at /home/root/src/php-5.5.16/Zend/zend_hash.c:560
#18 0x00000000009c9feb in _zval_dtor_func (zvalue=0xd28fbc8, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.c:45
#19 0x00000000009b6735 in _zval_dtor (zvalue=0xd28fbc8, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.h:35
#20 0x00000000009b6800 in i_zval_ptr_dtor (zval_ptr=0xd28fbc8, __zend_filename=0xf3aaa0 "/home/root/src/php-5.5.16/Zend/zend_variables.c", __zend_lineno=182) at /home/root/src/php-5.5.16/Zend/zend_execute.h:81
#21 0x00000000009b7a2c in _zval_ptr_dtor (zval_ptr=0xd28f5d8, __zend_filename=0xf3aaa0 "/home/root/src/php-5.5.16/Zend/zend_variables.c", __zend_lineno=182) at /home/root/src/php-5.5.16/Zend/zend_execute_API.c:426
#22 0x00000000009ca43a in _zval_ptr_dtor_wrapper (zval_ptr=0xd28f5d8) at /home/root/src/php-5.5.16/Zend/zend_variables.c:182
#23 0x00000000009df9d7 in zend_hash_destroy (ht=0xd299468) at /home/root/src/php-5.5.16/Zend/zend_hash.c:560
#24 0x00000000009c9feb in _zval_dtor_func (zvalue=0xd281af8, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.c:45
#25 0x00000000009b6735 in _zval_dtor (zvalue=0xd281af8, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.h:35
#26 0x00000000009b6800 in i_zval_ptr_dtor (zval_ptr=0xd281af8, __zend_filename=0xf3e5c8 "/home/root/src/php-5.5.16/Zend/zend_objects.c", __zend_lineno=54) at /home/root/src/php-5.5.16/Zend/zend_execute.h:81
#27 0x00000000009b7a2c in _zval_ptr_dtor (zval_ptr=0xd29ba20, __zend_filename=0xf3e5c8 "/home/root/src/php-5.5.16/Zend/zend_objects.c", __zend_lineno=54) at /home/root/src/php-5.5.16/Zend/zend_execute_API.c:426
#28 0x00000000009fe932 in zend_object_std_dtor (object=0xd294040) at /home/root/src/php-5.5.16/Zend/zend_objects.c:54
#29 0x00000000009fed5c in zend_objects_free_object_storage (object=0xd294040) at /home/root/src/php-5.5.16/Zend/zend_objects.c:137
#30 0x0000000000a05ee7 in zend_objects_store_del_ref_by_handle_ex (handle=1009, handlers=0x129cec0) at /home/root/src/php-5.5.16/Zend/zend_objects_API.c:226
#31 0x0000000000a05c30 in zend_objects_store_del_ref (zobject=0xd2946b0) at /home/root/src/php-5.5.16/Zend/zend_objects_API.c:178
#32 0x00000000009ca028 in _zval_dtor_func (zvalue=0xd2946b0, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.c:54
#33 0x00000000009b6735 in _zval_dtor (zvalue=0xd2946b0, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.h:35
#34 0x00000000009b6800 in i_zval_ptr_dtor (zval_ptr=0xd2946b0, __zend_filename=0xf3aaa0 "/home/root/src/php-5.5.16/Zend/zend_variables.c", __zend_lineno=182) at /home/root/src/php-5.5.16/Zend/zend_execute.h:81
#35 0x00000000009b7a2c in _zval_ptr_dtor (zval_ptr=0xd24faf8, __zend_filename=0xf3aaa0 "/home/root/src/php-5.5.16/Zend/zend_variables.c", __zend_lineno=182) at /home/root/src/php-5.5.16/Zend/zend_execute_API.c:426
#36 0x00000000009ca43a in _zval_ptr_dtor_wrapper (zval_ptr=0xd24faf8) at /home/root/src/php-5.5.16/Zend/zend_variables.c:182
#37 0x00000000009df9d7 in zend_hash_destroy (ht=0xc8d6f50) at /home/root/src/php-5.5.16/Zend/zend_hash.c:560
#38 0x00000000009c9feb in _zval_dtor_func (zvalue=0xc8ab508, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.c:45
#39 0x00000000009b6735 in _zval_dtor (zvalue=0xc8ab508, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.h:35
#40 0x00000000009b6800 in i_zval_ptr_dtor (zval_ptr=0xc8ab508, __zend_filename=0xf3e5c8 "/home/root/src/php-5.5.16/Zend/zend_objects.c", __zend_lineno=54) at /home/root/src/php-5.5.16/Zend/zend_execute.h:81
#41 0x00000000009b7a2c in _zval_ptr_dtor (zval_ptr=0xc2d3a80, __zend_filename=0xf3e5c8 "/home/root/src/php-5.5.16/Zend/zend_objects.c", __zend_lineno=54) at /home/root/src/php-5.5.16/Zend/zend_execute_API.c:426
#42 0x00000000009fe932 in zend_object_std_dtor (object=0xc2884a8) at /home/root/src/php-5.5.16/Zend/zend_objects.c:54
#43 0x00000000009fed5c in zend_objects_free_object_storage (object=0xc2884a8) at /home/root/src/php-5.5.16/Zend/zend_objects.c:137
#44 0x0000000000a05ee7 in zend_objects_store_del_ref_by_handle_ex (handle=188, handlers=0x129cec0) at /home/root/src/php-5.5.16/Zend/zend_objects_API.c:226
#45 0x0000000000a05c30 in zend_objects_store_del_ref (zobject=0xc284410) at /home/root/src/php-5.5.16/Zend/zend_objects_API.c:178
#46 0x00000000009ca028 in _zval_dtor_func (zvalue=0xc284410, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.c:54
#47 0x00000000009b6735 in _zval_dtor (zvalue=0xc284410, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.h:35
#48 0x00000000009b6800 in i_zval_ptr_dtor (zval_ptr=0xc284410, __zend_filename=0xf3e5c8 "/home/root/src/php-5.5.16/Zend/zend_objects.c", __zend_lineno=54) at /home/root/src/php-5.5.16/Zend/zend_execute.h:81
#49 0x00000000009b7a2c in _zval_ptr_dtor (zval_ptr=0xbfc4ee0, __zend_filename=0xf3e5c8 "/home/root/src/php-5.5.16/Zend/zend_objects.c", __zend_lineno=54) at /home/root/src/php-5.5.16/Zend/zend_execute_API.c:426
#50 0x00000000009fe932 in zend_object_std_dtor (object=0xc280918) at /home/root/src/php-5.5.16/Zend/zend_objects.c:54
#51 0x00000000009fed5c in zend_objects_free_object_storage (object=0xc280918) at /home/root/src/php-5.5.16/Zend/zend_objects.c:137
#52 0x0000000000a05ee7 in zend_objects_store_del_ref_by_handle_ex (handle=177, handlers=0x129cec0) at /home/root/src/php-5.5.16/Zend/zend_objects_API.c:226
#53 0x0000000000a05c30 in zend_objects_store_del_ref (zobject=0xc2800e8) at /home/root/src/php-5.5.16/Zend/zend_objects_API.c:178
#54 0x00000000009ca028 in _zval_dtor_func (zvalue=0xc2800e8, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.c:54
#55 0x00000000009b6735 in _zval_dtor (zvalue=0xc2800e8, __zend_filename=0xf38c18 "/home/root/src/php-5.5.16/Zend/zend_execute.h", __zend_lineno=81) at /home/root/src/php-5.5.16/Zend/zend_variables.h:35
#56 0x00000000009b6800 in i_zval_ptr_dtor (zval_ptr=0xc2800e8, __zend_filename=0xf3e5c8 "/home/root/src/php-5.5.16/Zend/zend_objects.c", __zend_lineno=54) at /home/root/src/php-5.5.16/Zend/zend_execute.h:81
#57 0x00000000009b7a2c in _zval_ptr_dtor (zval_ptr=0xc26cf88, __zend_filename=0xf3e5c8 "/home/root/src/php-5.5.16/Zend/zend_objects.c", __zend_lineno=54) at /home/root/src/php-5.5.16/Zend/zend_execute_API.c:426
#58 0x00000000009fe932 in zend_object_std_dtor (object=0xc26cee0) at /home/root/src/php-5.5.16/Zend/zend_objects.c:54
#59 0x00000000009fed5c in zend_objects_free_object_storage (object=0xc26cee0) at /home/root/src/php-5.5.16/Zend/zend_objects.c:137
#60 0x0000000000a05963 in zend_objects_store_free_object_storage (objects=0x12c1120) at /home/root/src/php-5.5.16/Zend/zend_objects_API.c:97
---Type <return> to continue, or q <return> to quit---
#61 0x00000000009b7514 in shutdown_executor () at /home/root/src/php-5.5.16/Zend/zend_execute_API.c:293
#62 0x00000000009cc5d0 in zend_deactivate () at /home/root/src/php-5.5.16/Zend/zend.c:935
#63 0x000000000093419b in php_request_shutdown (dummy=0x0) at /home/root/src/php-5.5.16/main/main.c:1808
#64 0x0000000000a88fa7 in main (argc=6, argv=0x7fff143861e8) at /home/root/src/php-5.5.16/sapi/fpm/fpm/fpm_main.c:1961

“/ home / root / src ....”是我已经提取PHP源代码的路径。

这个转储看起来不像我在一些教程中看到的那些。我没有得到请求导致此错误或PHP被杀的真正原因:

  • 是因为用过的内存被释放了,一些奇怪的内存地址,PHP bug?
  • 哈希函数中的
  • 错误?
  • ...

这些警告意味着什么?特别是mongo.so警告? Mongo是通过PECL安装/更新的。那么为什么版本应该是错误的,或者为什么不将它放在PHP的正确扩展文件夹中。

感谢您提供任何帮助和建议。

编辑: 如果启用了OPcache v7.0.4-dev扩展,则不会发生错误。

0 个答案:

没有答案