signal=FPE (status=8/FPE) в systemd
FPE — арифметическое исключение. Несмотря на название, речь обычно не о дробных числах, а о делении целого на ноль. Это дефект программы, который проявляется на определённых данных, поэтому важно понять, какие данные его вызвали.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Деление на ноль на неожидаемых данных
Программа не проверяет делитель, а данные пришли пустыми: нулевое число записей, пустой интервал, отсутствующая метрика.
-
Ошибка в настройке с нулевым значением
Параметр вида «частота» или «делитель» со значением 0 доходит до арифметики без проверки. Служба падает сразу после старта.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Последние обработанные данные перед падением.
journalctl -u myapp.service -n 40 --no-pagerТрассировка укажет функцию, в которой произошло деление.
coredumpctl info myapp | head -30Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Программа не проверяет делитель, а данные пришли пустыми: нулевое число записей, пустой интервал, отсутствующая метрика.
- Как проверить
-
Посмотрите, что служба обрабатывала перед падением.
journalctl -u myapp.service -n 40 --no-pager
- Как исправить
- Исправлять нужно программу. Как обход — уберите вырожденные входные данные: пустой файл, нулевой период в настройке, отсутствующий раздел статистики.
- Почему происходит
- Параметр вида «частота» или «делитель» со значением 0 доходит до арифметики без проверки. Служба падает сразу после старта.
- Как проверить
-
Поищите нули в настройках службы.
sudo grep -nE "=\s*0$|: 0$" /etc/myapp/config.yml | head
- Как исправить
- Замените нулевые значения осмысленными и перезапустите службу.
Пример вывода
Служба падает при обработке пустого набора данных. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
× stats.service - Statistics collector
Active: failed (Result: core-dump) since Mon 2026-09-15 16:05:41 MSK; 2s ago
Main PID: 16100 (code=dumped, signal=FPE)
stats[16100]: computing averages for 0 samples
systemd[1]: stats.service: Main process exited, code=dumped, signal=FPE
Связанные ошибки
- signal=SEGV (status=11/SEGV) в systemd Процесс службы завершён сигналом SEGV: обращение к недопустимой памяти. Как собрать дамп и что смотреть.
- signal=ABRT (status=6/ABRT) в systemd Процесс службы завершён сигналом ABRT: программа сама прервала работу после внутренней проверки. Где искать причину.
- Failed with result 'core-dump' Состояние core-dump: процесс службы аварийно завершился и сохранил дамп памяти. Как открыть дамп и прочитать трассировку.
- signal=BUS (status=7/BUS) в systemd Процесс службы завершён сигналом BUS: ошибка доступа к памяти, часто из-за усечённого файла в отображении или заполненного диска.
- signal=ILL (status=4/ILL) в systemd Процесс службы завершён сигналом ILL: недопустимая инструкция процессора. Обычно сборка не под этот процессор.
- status=207/SIGNAL_MASK в systemd Код 207/SIGNAL_MASK: systemd не смог установить маску сигналов для нового процесса. Редкий код, признак проблем в окружении.
- Failed with result 'signal' Состояние signal: процесс службы завершён сигналом без сохранения дампа. Как узнать, каким сигналом и от кого.
- nginx: worker process exited on signal Рабочий процесс nginx падает: сторонний модуль, нехватка памяти, ошибка в обработке запроса.
Источники
-
coredumpctl(1)
Дампы и трассировки для разбора падений. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено на программе с делением на число записей при пустом наборе.