Отладка ошибок сегментации hhvm

Как я могу отладить ошибку сегментации при запуске php-скрипта с hhvm? Когда я запускаю его, я получаю:

Core dumped: Segmentation fault
Segmentation fault

В stacktrace я получаю ошибку, когда вызываю метод того же объекта.

Есть ли какой-нибудь анализатор кода, который может сказать мне неправильный php-код или каким-то образом получить более подробную информацию об ошибках или трассировке стека?

Когда я использую

    $r = mysql_query($sql, $link); //crashes
    $r = mysql_query($sql); //does not crash

person catalinux    schedule 01.04.2014    source источник


Ответы (1)


Отладка сборки

Чтобы лучше понять сбой, вам нужно собрать HHVM для отладки.

Это можно сделать, добавив -DCMAKE_BUILD_TYPE=Debug к вашему cmake.

Дополнительную информацию можно найти здесь: https://github.com/facebook/hhvm/wiki/Reporting-Crashes


Трассировки стека

Вы также можете найти трассировку с именем stacktrace.[number].log в каталоге /tmp.

Если после проверки трассировки стека вы понимаете, что ошибка не на вашей стороне, лучше всего отправить новую проблему здесь: https://github.com/facebook/hhvm/issues


Лучшее ведение журнала

Как только проблема не связана с ошибкой сегмента, вы можете извлечь больше пользы из ведения журнала.

Вот как выглядит мой раздел журнала hhvm.hdf.

person Sina    schedule 02.04.2014
comment
Я проанализировал трассировку стека. К сожалению, я не знаю, как интерпретировать эту информацию, а также не знаю, как я могу решить, на моей ли стороне ошибка. - person catalinux; 02.04.2014
comment
Можете ли вы поделиться трассировкой стека? Также будет полезен фрагмент кода. Я не думаю, что существует какой-либо автоматизированный инструмент, который решает, на вашей стороне ошибка или нет. Если код кажется довольно тривиальным и отлично работает на php 5.5, то, возможно, это связано с ошибкой в ​​hhvm. - person Sina; 02.04.2014
comment
А пока я могу поделиться трассировкой стека: pastebin.com/UHT6cLFp. Я попытаюсь создать код, который воспроизводит ту же ошибку - person catalinux; 02.04.2014
comment
Хорошо, у вас также установлена ​​последняя версия hhvm? (3.0.1) Недавняя проблема с mysqli_fetch_assoc в версии 3 (но это не привело к ошибке сегмента). github.com/facebook/hhvm/issues/2218 - person Sina; 02.04.2014
comment
Я использую HipHop VM 3.0.0-dev (отн.). Кроме того, я использую mysql_, а не mysqli_. На самом деле мои проблемы решаются с помощью $link, возвращаемого mysql_connect(). я обновил свой вопрос - person catalinux; 02.04.2014
comment
В качестве предупреждения, mysql_query устарел с версии php 5.5. Вы должны использовать mysqli или PDO. Кроме того, link, насколько мне известно, не является обязательным (если ссылка уже установлена, она будет использоваться). - person Sina; 02.04.2014
comment
Правда, не обязательно, но я использую 2 разных подключения в своем коде, так что мне это нужно. Как любопытство, строка, которая вылетает, дает уведомление: преобразование массива в строку. Я попытаюсь изменить mysqli - person catalinux; 02.04.2014
comment
Практически невозможно предоставить дальнейшую помощь без более крупного фрагмента кода и сообщений об ошибках. Возможно, mysql_query использует ссылку string $, и из-за несоответствия типов происходит сбой. но я не уверен, как это может происходить без остальной части кода. - person Sina; 02.04.2014
comment
Я знаю. Я поработаю над этим и вернулся с отзывом. Другая проблема может заключаться в том, что mysqli_query имеет обратный порядок параметров. Спасибо за помощь. - person catalinux; 02.04.2014