status=11/SEGV code=dumped — Падение процесса Segmentation Fault в systemd
Архитектура ошибки и симптомы сбоя
Критический сбой службы «Unit service has failed: Main process exited, code=dumped, status=11/SEGV» регистрируется диспетчером systemd. Ошибка означает, что главный процесс службы был аварийно уничтожен ядром Linux сигналом SIGSEGV (Signal 11 — Segmentation Fault) из-за попытки обращения к недопустимому участку памяти (разыменование NULL-указателя, переполнение буфера в стеке, повреждение кучи / heap corruption). Ядро сгенерировало аварийный дамп памяти (Core Dump) и передало его службе systemd-coredump.
Диагностическая таблица параметров сбоя
| Параметр | Значение | Инженерный смысл сбоя |
|---|---|---|
| code=dumped | Core Dump Generated | Процесс аварийно упал с сохранением полного снимка памяти на диск. |
| status=11/SEGV | SIGSEGV (Signal 11) | Аппаратное исключение процессора Page Fault в адресном пространстве процесса. |
| coredumpctl | Dump Analyzer | Встроенная утилита systemd для извлечения и отладки дампов сбоя. |
Пошаговое дерево решений и сценарии траблшутинга
Сценарий 1: Просмотр списка и метаданных дампов через coredumpctl
# Просмотр последних аварийных дампов памяти:
sudo coredumpctl list
# Просмотр подробной информации о последнем падении процесса:
sudo coredumpctl info service_nameСценарий 2: Извлечение стектрейса падения через GDB
Запустите встроенный отладчик GDB прямо из журнала coredump:
# Установка отладчика GDB (если не установлен):
sudo apt-get install gdb || sudo dnf install gdb
# Открытие дампа в GDB:
sudo coredumpctl debug service_name
# Внутри консоли (gdb) введите команду для получения трассировки вызовов:
(gdb) bt fullСтектрейс покажет точную функцию и библиотеку (.so), вызвавшую нарушение защиты памяти.
Сценарий 3: Проверка целостности установленных библиотек пакета
Часто Segmentation Fault вызван повреждением системных dynamic libraries (.so):
# Проверка целостности файлов пакета на Debian/Ubuntu:
sudo debsums -s package_name
# На RHEL/CentOS/AlmaLinux:
sudo rpm -V package_name
# Проверка битых зависимостей библиотек:
ldd /usr/sbin/service_binaryСценарий 4: Настройка автоматического перезапуска службы в systemd
Для минимизации простоя сервиса до выпуска патча разработчиками настройте авторестарт:
# Редактирование сервиса:
sudo systemctl edit service_name.service
# Добавьте директивы автоперезапуска при аварии (SIGSEGV):
[Service]
Restart=on-abort
RestartSec=5sITSTM выполнит профессиональный реверс-инжиниринг дампов памяти, локализацию багов в shared libraries и стабилизацию рантайма.
Частые вопросы (FAQ)
Почему возникает ошибка SIGSEGV (Signal 11)?
Она возникает, когда скомпилированная программа на C/C++/Go/Rust пытается прочитать или записать данные по виртуальному адресу памяти, который не принадлежит ее адресному пространству, либо пытается записать данные в сегмент кода, доступный только для чтения.
Где физически сохраняются файлы coredump в systemd?
Сжатые файлы дампов хранятся в каталоге /var/lib/systemd/coredump/. Управлять их хранением и очисткой можно через файл конфигурации /etc/systemd/coredump.conf.
Как экспортировать дамп памяти в файл для передачи разработчикам?
Используйте команду: sudo coredumpctl dump service_name --output /tmp/service_crash.dump.
Может ли аппаратный сбой оперативной памяти вызывать SIGSEGV?
Да. Если сбойные ячейки RAM искажают адреса указателей в стеке или куче, программа гарантированно падает с ошибкой Segmentation Fault при попытке обращения по искаженному адресу.