Провел кучу экспериментов над умирающим systemd юнитом
1. Падающий без правки лимитов на создание корок
Apr 13 00:18:40 NAS-U1 systemd[1]: Starting Aservice-crush...
Apr 13 00:18:45 NAS-U1 kernel: a.out[3407]: segfault at 0...
Apr 13 00:18:45 NAS-U1 systemd[1]: aservice.service: Control process exited, code=killed status=11
Apr 13 00:18:45 NAS-U1 systemd[1]: aservice.service: Failed with result 'signal'.
2. Падающий с разрешенной коркой
Apr 13 00:17:58 NAS-U1 systemd[1]: Starting Aservice-crush...
Apr 13 00:18:03 NAS-U1 systemd[1]: aservice.service: Control process exited, code=dumped status=11
Apr 13 00:18:03 NAS-U1 kernel: a.out[3007]: segfault at 0...
Apr 13 00:18:03 NAS-U1 systemd[1]: aservice.service: Failed with result 'core-dump'.
3. Завершается нормально через exit(0) - никаких сообщений
4. Завершается нормально через exit(1)
Apr 13 00:08:12 NAS-U1 systemd[1]: Starting Aservice-crush...
Apr 13 00:08:17 NAS-U1 systemd[1]: aservice.service: Control process exited, code=exited status=1
Apr 13 00:08:17 NAS-U1 systemd[1]: aservice.service: Failed with result 'exit-code'.
4. Завершается нормально через exit(-1)
Apr 13 00:09:58 NAS-U1 systemd[1]: Starting Aservice-crush...
Apr 13 00:10:03 NAS-U1 systemd[1]: aservice.service: Control process exited, code=exited status=255
Apr 13 00:10:03 NAS-U1 systemd[1]: aservice.service: Failed with result 'exit-code'.
Таки нет в systemd никаких заморочек с обработкой крашей и кодами возврата, все стандартно и прозрачно.
Если упал то результат будет code=killed или dumped и exit-code системный
Если просто завершился code=exited и код возврата с которым приложение завершилось
В нашем случае имеем
accel-ppp.service: Main process exited, code=exited, status=255
accel-ppp.service: Failed with result 'exit-code'.
Значит 100% accel завершается по exit(-1), и такие коды есть только в тритоне
root@NAS-U1:/opt/accel-ppp-code-test# grep "exit(-1)" * -R
accel-pppd/triton/md.c: _exit(-1);
accel-pppd/triton/md.c: _exit(-1);
accel-pppd/triton/timer.c: _exit(-1);
accel-pppd/triton/timer.c: _exit(-1);
accel-pppd/triton/triton.c: _exit(-1);
Там же есть сообщения об ошибке triton_log_error, но они не срабатывают, в логе всегда чисто.