If I call systemctl to shutdown or reboot, the effect is that it does
not honor kodi-x11.service's ExecStop= line which results in an
unclean exit of kodi and of data loss since kodi writes out some data
when it exits. By contrast, calling systemctl to stop the service
works as expected.
It seems systemd treats processes in user.slice differently that those
in system.slice and that removing PAMName=login was to blame for kodi's
processes running in user.slice.
Discussion:
https://lists.freedesktop.org/archives/systemd-devel/2020-December/045713.htmlhttps://bbs.archlinux.org/viewtopic.php?id=261684
Calling the kodi-xxx target in ExecStart= was not actually the key to
fixing the shutdown bugs in 847b6ec65. Adding the ExecStop= calling
killall to the exact target was needed.
This commit restores the call to kodi-standalone to allow the
"RestartApp" built in to work again and adds the key ExecStop= with
killall.
Direct call to kodi-xxx in ExecStart= allows direction of kill signal to that
rather than to kodi-standalone wrapper. This allows the kill signal to hit
the indented executable. As well, using killall in the ExecStop= allows for
synchronous stopping and for kodi to do shutdown housekeeping tasks such as
saving settings, stopping services (web, zeroconf, etc.) and unloading things.