It seems to me systemd should be able to know the difference between
a program that's zombie or unresponsive but isn't doing anything or is
unresponsive but is doing something; and if not then some way for
programs to say "hey wait just a minute, I need to clean things up" or
whatever, rather than just abruptly killing them.
I think our technical debt is catching up with us, because there's
no consistent way to treat some processes as persistent, and others
as disposable: we just did this type of process management by hand.
Solving this systematically may be tricky because there's many
different scenarios. Processes can be: