Ошибка сегментации Apache: как получить больше информации с помощью gdb?
Я вижу следующую ошибку в apache error_log. Это совершенно случайно, но когда это происходит, он выводит 10-20 строк в error_log.
Apache: [core:notice] [pid ***] AH00052: child pid *** exit signal Segmentation fault (11)
Я использую Apache 2.4.12 и PHP 5.4.36.
Я пытался использовать GDB 7,8 для сбора дополнительной информации. После подключения к процессу apache я подождал и, наконец, получил ошибку сегментации:
(gdb) attach 205907
Attaching to process 205907
Reading symbols from /usr/local/apache2/bin/httpd...done.
Reading symbols from /lib64/libpcre.so.0...(no debugging symbols found)...done.
... lots of reading symbols ...
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x00007f7508acc4fe in __longjmp () from /lib64/libc.so.6
(gdb) backtrace
#0 0x00007f7508acc4fe in __longjmp () from /lib64/libc.so.6
#1 0xb7e28fbf1b781194 in ?? ()
Backtrace stopped: Cannot access memory at address 0xdf5a8fbf24c295cc
(gdb) backtrace full
#0 0x00007f7508acc4fe in __longjmp () from /lib64/libc.so.6
No symbol table info available.
#1 0xb7e28fbf1b781194 in ?? ()
No symbol table info available.
Backtrace stopped: Cannot access memory at address 0xdf5a8fbf24c295cc
К сожалению, результат не соответствует ожиданиям. Что я должен сделать, чтобы получить больше информации от ошибки сегментации?
2 ответа
Так как у вас есть sig11 внутри libc, и, скорее всего, у него не будет такой простой ошибки запуска, я бы предложил вам использовать memtest86+ для проверки памяти вашего сервера.
Вам нужна отладочная версия libc и, вероятно, для /lib64/libpcre.so.0... От вас вывод:
/lib64/libpcre.so.0...(no debugging symbols found)
Я надеюсь, что этот пост может быть полезен для вас:
Как использовать отладочную версию libc
[ https://stackoverflow.com/questions/10000335/how-to-use-debug-version-of-libc]