> I suspect that your process has a controlling tty based on this comment > in the killall() function at src/shared/killall.c: > > if (send_sighup) { > /* Optionally, also send a SIGHUP signal, but only if the process > has a controlling > * tty. This is useful to allow handling of shells which ignore > SIGTERM but react to > * SIGHUP. We do not send this to processes that have no > controlling TTY since we > * don't want to trigger reloads of daemon processes. Also we make > sure to only send > * this after SIGTERM so that SIGTERM is always first in the > queue. */ > ... > } > > Also systemd >= v255 (Fedora 41 has v256) has the directive > SurviveFinalKillSignal=yes that can be used instead of setting > argv[0][0] = '@'.
Hi Brian. Thanks very much for your reply. When I grepped for sighup in the systemd source, I did find the function killall(). The sighup should not be coming from there because my process has argv[0][0] == ‘@’ and there is a check for that in the killall() for-loop (it is done in the static function ignore_proc()). Also, my process does not have a controlling tty (it is being invoked using the “init” kernel param). There is no tty shown when I view its details using ps, and I also don’t see any ttys when I do “ls -l /proc/<pid>/fd”. Any other suggestions? Maybe I should open a github issue for this. -James M