Я пытаюсь решить проблему сегментации. Это сообщение появляется в моем apache-error.log:
[уведомление] child pid 3979 сигнал выхода Ошибка сегментации (11)
- Настройка машины Ubuntu / Apache / PHP для отправки электронной почты
- Установка PDO_MYSQL на PHP 5.1.6 с использованием ОС PECL: UBUNTU
- Как я могу заставить PHP скомпилировать документ LaTeX, если он (www-data) не может получить доступ к требуемым пакетам?
- Модуль «PDO» уже загружен в Неизвестную строку 0
- Команда phpize не найдена при запуске в терминале
Я попытался отключить некоторые модули apache и php, но я все равно получаю ту же ошибку.
Я также попытался поместить это в apache2.conf:
CoreDumpDirectory / tmp / apache2-gdb-dump
а затем chmod 777, chown www-data … чтобы сервер мог писать.
Я не вижу файлов дампа ядра, чтобы дать мне подсказку об ошибке.
У кого-нибудь есть идея, почему CoreDumpDirectory не работает на Ubuntu?
ответов: $ ulimit -a основной размер файла
(блоки, -c) неограниченный размер данных seg
(kbytes, -d) неограниченный приоритет планирования (-e) 0 размер файла (блоки, -f) неограниченные ожидающие сигналы (-i) 15863 максимальная заблокированная память
(kbytes, -l) Максимальный объем памяти 32
(kbytes, -m) неограниченные открытые файлы
(-n) 1024 размер трубы (512 байт, -p) 8 очереди сообщений POSIX
(байты, -q) 819200 приоритет в реальном времени (-r) 0 размер стека
(кбайт, с) 8192 процессорного времени
(секунды, -t) неограниченные максимальные пользовательские процессы (-u) 15863 виртуальная память (кбайты, -v) неограниченные блокировки файлов
(-x) неограниченно
Наконец, я смог увидеть основной дамп Apache в Ubuntu:
/etc/default/apport
edit apache2.conf:
CoreDumpDirectory /tmp/apache2-gdb-dump
убедитесь, что Apache может написать:
# chmod 777 /tmp/apache2-gdb-dump
удалить ограничение размера дампа ядра:
# ulimit -c unlimited
При желании измените шаблон имени основных дампов:
# echo 'coredump-%e.%p' > /proc/sys/kernel/core_pattern
Для анализа использования дампа используйте gdb
:
$ gdb apache2 /tmp/apache2-gdb-dump/coredump-xx
Чтобы увидеть детали stacktrace, в gdb:
gdb> where
Это я сделал, и я получил ядро-дамп. Однако моя проблема не была решена, посмотрев на coredump; это, по-видимому, проблема в моем php-скрипте.
Дополнительная информация: http://matrafox.info/apache-child-pid-exit-signal-segmentation-fault.html
По умолчанию дампы ядра отключены по Ubuntu
Попробуй это:
ulimit -c unlimited
«ulimit -a» сообщает вам, что текущий предел (0 означает «отключено»)
Обратите внимание, что подкаталог в / tmp будет удален после перезагрузки, заставив apache не запускаться из-за ошибок конфигурации.
На второй ноте, chowning не нужно. / tmp chmodded 777, так что каждый может читать / писать там.
@arod sudo ulimit -c не работает, потому что -c также является аргументом sudo. Вам нужно sudo -s, затем ulimit -c