2010-02-17 3 views
0

Я столкнулся с тем, что, по-видимому, является проблемой с коррупцией в памяти с PHP. У меня есть большая база кода, которую я переношу в среду выполнения 5.3. Я получаю segfaults и «zend_mm_heap поврежденные» ошибки, но обратные трассировки из этих точек не являются полезными. Обратные линии всегда возвращаются к различным основным функциям PHP, таким как назначение переменных или конкатенация.Отладка коррупции PHP с Valgrind

Насколько я знаю, память PHP становится поврежденной в какой-то момент до того, как произойдут ошибки segfaults/heap.

Я выполнил инструкции по адресу bugs.php.net/bugs-getting-valgrind-log.php и создал довольно большой журнал valgrind. Он заполнен многими ошибками, такими как «Условный переход или перемещение зависит от неинициализированного значения». Поскольку в этом журнале valgrind так много информации, я не уверен, что такое истинный дефект и что такое нормальное поведение.

Вот часть вывода VALGRIND: http://pastie.org/private/exngtften3jeppqyjn4hw

ответ

0

Все ошибки, которые вы вывешенные являются использование неинициализированных значений. Используйте опцию valgrind --track-origins=yes (добавлено в valgrind 3.4.0), чтобы показать начало значения, которое в конечном итоге используется неинициализированным. Он будет работать медленнее и использовать больше памяти, но может отображать гораздо более полезную информацию для использования неинициализированных значений.

+0

Спасибо за отзыв. Мы смогли изолировать проблему как проблему с расширением mbstring. Мы не определили проблему, но теперь мы можем обойтись без mbstring. – achristi

Смежные вопросы