PHP 5.3.6 SEGFULT(在apache w/mod_PHP和nginx w/fpm中)

PHP 5.3.6 SEGFULT(在apache w/mod_PHP和nginx w/fpm中),php,segmentation-fault,Php,Segmentation Fault,我在PHP5.3.6(源代码Slackware 13.1 x86,Linode中的VPS)中遇到了一个令人讨厌的segfault。这在apache和nginx(fpm)中都有发生。最终获得了一个内核转储: 0 0x083db383 in _zval_ptr_dtor () 1 0x083f3c45 in zend_hash_destroy () 2 0x083e6fba in _zval_dtor_func () 3 0x083da69a in _zval_dtor () 4 0x08

我在PHP5.3.6(源代码Slackware 13.1 x86,Linode中的VPS)中遇到了一个令人讨厌的segfault。这在apache和nginx(fpm)中都有发生。最终获得了一个内核转储:

0  0x083db383 in _zval_ptr_dtor ()
1  0x083f3c45 in zend_hash_destroy ()
2  0x083e6fba in _zval_dtor_func ()
3  0x083da69a in _zval_dtor ()
4  0x083db3df in _zval_ptr_dtor ()
5  0x083f3c45 in zend_hash_destroy ()
6  0x083e6fba in _zval_dtor_func ()
7  0x083da69a in _zval_dtor ()
8  0x083db3df in _zval_ptr_dtor ()
9  0x083f3c45 in zend_hash_destroy ()
10 0x08406091 in zend_object_std_dtor ()
11 0x0840632e in zend_objects_free_object_storage ()
12 0x0840a44c in zend_objects_store_del_ref_by_handle_ex ()
13 0x0840a23b in zend_objects_store_del_ref ()
14 0x083e6fe1 in _zval_dtor_func ()
15 0x083da69a in _zval_dtor ()
16 0x083db3df in _zval_ptr_dtor ()
17 0x083f3c45 in zend_hash_destroy ()
18 0x08406091 in zend_object_std_dtor ()
19 0x0840632e in zend_objects_free_object_storage ()
20 0x0840a44c in zend_objects_store_del_ref_by_handle_ex ()
21 0x0840a23b in zend_objects_store_del_ref ()
22 0x083e6fe1 in _zval_dtor_func ()
23 0x083da69a in _zval_dtor ()
24 0x083db3df in _zval_ptr_dtor ()
25 0x083f3c45 in zend_hash_destroy ()
26 0x083e6fba in _zval_dtor_func ()
27 0x083da69a in _zval_dtor ()
28 0x083daed6 in shutdown_executor ()
29 0x083e86c8 in zend_deactivate ()
30 0x0838ebad in php_request_shutdown ()
31 0x084a3f26 in main ()
我正在使用memcache、apc和mongo扩展(从源代码编译)。我试过禁用apc,但没有成功。我的PHP配置:

./configure \
    --prefix=/usr/local/php \
    --enable-fpm \
    --enable-inline-optimization \
    --disable-magic-quotes \
    --enable-mbstring \
    --enable-mbregex \
    --enable-safe-mode \
    --enable-wddx=shared \
    --enable-xml \
    --with-gd \
    --enable-gd-native-ttf \
    --with-png-dir=/usr \
    --with-jpeg-dir=/usr \
    --with-freetype-dir=/usr \
    --with-gettext \
    --with-curl \
    --with-mysql=/usr \
    --with-mysqli=/usr/bin/mysql_config \
    --with-regex=system \
    --with-zlib-dir=/usr/lib \
    --with-openssl \
    --with-snmp \
    --enable-ucd-snmp-hack
这只发生在应用程序的某个页面上(代码太大,无法共享)。看起来它在关机时失败了。大约6、7年前,我在PHP跟踪器上看到了这个bug报告,但此后再也没有听说有人看到过它

奇怪的是,几天前一切都很正常,直到我对应用程序进行了一些更改。它不是一个整体,我希望我能精确地指出确切的提交,但在它工作时和下一次我意识到它不工作时之间大约有5次提交

任何人都能理解这一点吗?或者我应该提交一份bug报告,并期待最好的结果吗

算出了(某种程度上)。从中获取最新的开发版本(5.3-201105190430),并对其进行编译和安装。这解决了问题(因此他们显然知道并让它排队等待包含)


谢谢

我有一个客户经历了几乎相同的coredump。他们使用的是PHP5.2.17,所以这是一个长期存在的错误。感谢您指出这张快照是有效的。我刚刚从PHP的svn中提取了截至该日期和时间的数据,并与股票5.3.6进行了比较。我怀疑是其中一个原因修复了它:

。修复了错误54585(跟踪错误导致SEGFAUT)

。修复了错误#54372(崩溃访问从其#get()句柄返回的全局对象本身)

。修复了错误#54262(为非数组中的维度赋值时崩溃)

。修复了dtor内部错误处理的崩溃

。修复了错误54580(当通过php#u admin_值设置browscap ini指令时,get#u browser()分段错误)

您说过这个问题出现在大约5次提交之间。您是否有可能向我提供您的应用程序的差异,其中仅包含这5个提交,以便我们能够准确地确定上述哪些修复是相关的?这可能有助于确定绕过该错误的方法

请随时通过gmail.com向Release3发送电子邮件。不是我真正的电子邮件,但我会回复我真正的电子邮件(避免垃圾邮件-我不在乎垃圾邮件是否会发到那个地址)。希望我们能一起找出确切的原因,并为无法升级PHP的用户提供解决方案。

您可能会遇到“zend_gc与SF2 testsuite中的Segfault”,这显然是由“任何使用zval_dtor的递归数组都可能触发此Segfault”引起的