Ошибка сегментации с помощью mod_include
Я использую довольно сложную структуру с несколькими ssi-include, set- и echo-командами.
Первый документ содержит множество команд set, включает другой документ, который затем включает третий документ. В последнем включенном документе значения переменных выводятся с помощью команды echo.
Я заметил, что с увеличением числа переменных вероятность возникновения ошибки сегментации возрастает.
Кто-нибудь испытывал нечто подобное? Как мне отладить такую проблему?
Я использую IBM_HTTP_Server/2.0.47.1-PK65782 Apache/2.0.47
2 ответа
Вообще говоря, Apache никогда не должен ошибаться в сегментации. Я бы использовал тестовый сервер и включил бы все логи, а также заглянул в процесс с помощью strace, чтобы увидеть, где он находится.
Если вы уверены, что это mod_include, убедитесь, что он скомпилирован с той же версией apache, которую вы используете - если он был скомпилирован для другой версии, которая может объяснить ошибки segfaults.
Если это происходит с ошибками, вы сможете получить дамп ядра, который поможет понять, что произошло на уровне кода. Обратитесь к документации вашей операционной системы, чтобы выяснить, как собрать дамп. Получив его, вы можете проверить полное внутреннее состояние процесса во время сбоя, используя ваш любимый отладчик.
Strace не сильно помогает с segfaults, поскольку он только скажет вам, что происходит между пользовательским пространством и ядром, в то время как segfault обычно указывает на чисто пользовательскую проблему. Если вы работаете в Linux, в этом случае больше подходят valgrind и ltrace. Но сначала вытащите след из ядра.