Apache Error AH00491: caught SIGSEGV attempting to dump core — Анализ
Мастер-процесс веб-сервера Apache сталкивается с неустранимым нарушением защиты памяти и пытается аварийно сохранить снимок адресного пространства на диск. В журнале error.log регистрируется критическое системное событие: [core:emerg] [pid 1234] AH00491: caught SIGSEGV, attempting to dump core in /tmp.
| Компонент падения | Область памяти | Следствие для сервера |
|---|---|---|
| Apache Core Engine | Куча (Heap) / Стек вызовов | Мгновенное падение процесса и сброс сессий |
| Сторонний модуль C | Невыделенная память (Null pointer) | Попытка записи снимка в CoreDumpDirectory |
Директория /tmp | Файловая система | Создание объемного файла core.<pid> (от сотен МБ до ГБ) |
- Служба полностью падает или циклически перезапускается, генерируя тяжелые файлы дампов памяти в каталоге
/tmp. - Пользователи сталкиваются с обрывами HTTPS сессий и ошибками 502 Bad Gateway / Connection reset.
- Проверьте наличие сгенерированных дампов ядра в директории
/tmpили каталоге дампов systemd:ls -la /tmp/core* 2>/dev/null || sudo coredumpctl list - Установите отладочные символы (debug symbols) для Apache и установленных библиотек:
# Для Debian/Ubuntu: sudo apt install gdb apache2-dbg # Для RHEL/CentOS: sudo dnf install gdb httpd-debuginfo - Запустите отладчик GDB для анализа сбойного файла дампа памяти:
sudo gdb /usr/sbin/apache2 /tmp/core.<PID> # Внутри консоли GDB выполните команды: (gdb) bt full (gdb) info sharedlibrary (gdb) quit - Изучите верхние строки вывода
bt full(backtrace): они укажут конкретную функцию библиотеки (например,libssl.so,libphp.so,mod_auth_gssapi.so), вызвавшую исключениеSIGSEGV. - Если сбой происходит в модуле PHP, проверьте совместимость скомпилированных PECL-расширений (например, grpc, protobuf, redis) с текущей версией PHP.
- Отключите директиву
CoreDumpDirectoryпосле завершения отладки, чтобы избежать переполнения диска/tmp:# Закомментируйте строку в apache2.conf: # CoreDumpDirectory /tmp - Перезапустите Apache:
sudo systemctl restart apache2.
/, что приведет к отказу базы данных и других сервисов ОС.Частые вопросы (FAQ)
В чем разница между ошибками AH00052 и AH00491?
AH00052 фиксирует падение отдельного дочернего воркера (child worker), тогда как AH00491 выводится при аварии процесса с явной попыткой сохранить дамп памяти ядра через системную директиву CoreDumpDirectory.
Почему core dump файл не создается в /tmp?
Создание дампа может блокироваться системным лимитом ulimit -c 0, параметром ядра fs.suid_dumpable=0 или отсутствием прав на запись у пользователя веб-сервера в целевую директорию.
Может ли аппаратный сбой RAM (битая память) вызывать AH00491?
Да, ошибки ECC/Non-ECC оперативной памяти могут приводить к случайным повреждениям указателей и сегфолтам под высокой вычислительной нагрузкой.
Как очистить накопленные дампы памяти?
Удалите их командой sudo rm -f /tmp/core.* или через утилиту sudo coredumpctl vacuum.