6

我正在从drupal.stackexchange.com手动迁移此问题(已被删除)。

我最近将本地开发环境(Vagrant,Ubuntu 12.04)从 PHP 5.3.X 升级到 5.5.14,将 Apache 2.2.X 升级到 2.4.9。升级后,每当我调用调试函数dpm()时,都会导致分段错误。来自 Apache 日志的片段:

[2014 年 7 月 9 日星期三 14:33:11.474063] [核心:通知] [pid 6513] AH00051:子 pid 6644 退出信号分段错误 (11),/etc/apache2 中可能存在核心转储
[2014 年 7 月 9 日星期三 14:33:18.483516 ] [core:notice] [pid 6513] AH00051: child pid 6640 exit signal Segmentation fault (11), /etc/apache2 中可能的 coredump
[Wed Jul 09 14:33:25.494786 2014] [core:notice] [pid 6513] AH00051:子 pid 6619 退出信号分段错误 (11),/etc/apache2 中可能存在核心转储

请注意,在升级 PHP 和 Apache 之后,我后来决定将 Ubuntu 升级到 14.04。问题仍然相同。

Drupal 7.30
Devel 7.x-1.5(Drupal 模块)

禁用 OpCache 并没有解决问题。

我安装gdb并获得了核心转储。结果如下:

/vagrant/web [git::goomba *] [vagrant@dev] [9:04]
> gdb apache2 -core core
GNU gdb (Ubuntu 7.7-0ubuntu3.1) 7.7
Copyright (C) 2014 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".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from apache2...(no debugging symbols found)...done.
[New LWP 8265]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/sbin/apache2 -k start'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007fd091fda437 in ?? () from /usr/lib/apache2/modules/libphp5.so

当我运行时(gdb) backtrace full

#0  0x00007fd091fda437 in ?? () from /usr/lib/apache2/modules/libphp5.so
No symbol table info available.
#1  0x00007fd091fdb044 in vspprintf () from /usr/lib/apache2/modules/libphp5.so
No symbol table info available.
#2  0x00007fd092038537 in zend_error_noreturn ()
   from /usr/lib/apache2/modules/libphp5.so
No symbol table info available.
#3  0x00007fd09205d7ff in zend_std_read_property ()
   from /usr/lib/apache2/modules/libphp5.so
No symbol table info available.
#4  0x00007fd0920633c7 in ?? () from /usr/lib/apache2/modules/libphp5.so
No symbol table info available.
#5  0x00007fd0920a7178 in execute_ex () from /usr/lib/apache2/modules/libphp5.so
No symbol table info available.
#6  0x00007fd092027e86 in dtrace_execute_ex ()
   from /usr/lib/apache2/modules/libphp5.so
No symbol table info available.
#7  0x00007fd0920e2f27 in ?? () from /usr/lib/apache2/modules/libphp5.so
No symbol table info available.
#8  0x00007fd0920a7178 in execute_ex () from /usr/lib/apache2/modules/libphp5.so
No symbol table info available.
#9  0x00007fd092027e86 in dtrace_execute_ex ()
   from /usr/lib/apache2/modules/libphp5.so
No symbol table info available.
#10 0x00007fd0920e2f27 in ?? () from /usr/lib/apache2/modules/libphp5.so
No symbol table info available.
#11 0x00007fd0920a7178 in execute_ex () from /usr/lib/apache2/modules/libphp5.so
No symbol table info available.
#12 0x00007fd092027e86 in dtrace_execute_ex ()

dpm()细节

这是一个漂亮地打印 PHP 变量的调试函数。在引擎盖下,它使用Krumo,具体来说,它调用krumo::dump().

4

2 回答 2

7

我在这里遇到了一个非常相似的问题错误(很多):

[core:notice] [pid 1550] AH00051: child pid 2226 exit signal Segmentation fault (11), /etc/apache2 中可能的 coredump

罪魁祸首是 xcache 通过以下方式删除:

apt-get --purge remove php5-xcache

使用 Apache 2.4.7

php -v 输出:

PHP 5.5.9-1ubuntu4.5 (cli)(内置:2014 年 10 月 29 日 11:59:10)

于 2014-11-24T17:17:01.063 回答
0

我停止了一段时间的这个问题,因此停止使用dpm()触发问题的功能。在某些时候,这个问题对我来说消失了。我不确定是什么修复了它。我的猜测是 PHP/Apache/Drupal 的更新,但我不能肯定地说。

于 2015-12-19T01:22:37.387 回答