SystemdDoctor
служба не работает сигналы падение редкое

signal=FPE (status=8/FPE) в systemd

FPE — арифметическое исключение. Несмотря на название, речь обычно не о дробных числах, а о делении целого на ноль. Это дефект программы, который проявляется на определённых данных, поэтому важно понять, какие данные его вызвали.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Деление на ноль на неожидаемых данных

    Программа не проверяет делитель, а данные пришли пустыми: нулевое число записей, пустой интервал, отсутствующая метрика.

  2. Ошибка в настройке с нулевым значением

    Параметр вида «частота» или «делитель» со значением 0 доходит до арифметики без проверки. Служба падает сразу после старта.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Последние обработанные данные перед падением.

journalctl -u myapp.service -n 40 --no-pager

Трассировка укажет функцию, в которой произошло деление.

coredumpctl info myapp | head -30

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Деление на ноль на неожидаемых данных
Почему происходит
Программа не проверяет делитель, а данные пришли пустыми: нулевое число записей, пустой интервал, отсутствующая метрика.
Как проверить
Посмотрите, что служба обрабатывала перед падением.
journalctl -u myapp.service -n 40 --no-pager
Как исправить
Исправлять нужно программу. Как обход — уберите вырожденные входные данные: пустой файл, нулевой период в настройке, отсутствующий раздел статистики.
2. Ошибка в настройке с нулевым значением
Почему происходит
Параметр вида «частота» или «делитель» со значением 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
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено на программе с делением на число записей при пустом наборе.
    собственная проверка, systemd 255
    сверено 15 сентября 2026