1

我遇到了似乎是 PHP 的内存损坏问题。我有一个大型代码库,我正在移植到 5.3 运行时。我收到段错误和“zend_mm_heap 损坏”错误,但这些点的回溯没有用。回溯总是返回到各种核心 PHP 函数,例如变量赋值或连接。

据我所知,PHP 的内存在段错误/堆损坏错误发生之前的某个时间点已经损坏。

我已经按照 bugs.php.net/bugs-getting-valgrind-log.php 上的说明进行操作,并生成了一个相当大的 valgrind 日志。它充满了许多错误,例如“条件跳转或移动取决于未初始化的值”。因为该 valgrind 日志中有太多信息,所以我不确定什么是真正的缺陷以及什么是正常行为。

这是 valgrind 输出的一部分:http: //pastie.org/private/exngtften3jeppqyjn4hw

4

1 回答 1

1

您发布的所有错误都是使用未初始化的值。使用 valgrind 选项--track-origins=yes(在 valgrind 3.4.0 中添加)显示最终未初始化使用的值的来源。它将运行更慢并使用更多内存,但可以显示更多有用的信息来使用未初始化的值。

于 2010-02-17T15:24:57.080 回答