我遇到了似乎是PHP的内存损坏问题。我有一个很大的代码库,我移植到5.3运行时。我得到段错误和“zend_mm_heap损坏”错误,但这些点的回溯是没用的。回溯总是导致各种核心PHP函数,例如变量赋值或连接。
据我所知,在发生段错误/堆损坏错误之前,PHP的内存在某些时候会被破坏。
我已按照bugs.php.net/bugs-getting-valgrind-log.php中的说明操作,并生成了一个非常大的valgrind日志。它充满了许多错误,如“条件跳转或移动取决于未初始化的值”。因为valgrind日志中有太多信息,我不确定什么是真正的缺陷,什么是正常行为。
这是valgrind输出的一部分:http://pastie.org/private/exngtften3jeppqyjn4hw
答案 0 :(得分:1)
您发布的所有错误都是使用未初始化的值。使用valgrind选项--track-origins=yes
(在valgrind 3.4.0中添加)来显示最终未使用的值的原点。它将运行得更慢并使用更多内存,但可以显示更多有用信息,以便使用未初始化的值。