]> git.eshelyaron.com Git - emacs.git/commitdiff
* etc/emacs.service:
authorTim Ruffing <crypto@timruffing.de>
Mon, 14 Dec 2020 16:59:58 +0000 (17:59 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 14 Dec 2020 16:59:58 +0000 (17:59 +0100)
* etc/emacs.service (ExecStart): Make Emacs exit from systemd work
better (bug#45181).

The problem here is the exit code 15, which emacs will return *only* if
it has received SIGTERM. I believe what's happening here is that
emacsclient will call kill-emacs but not wait until the emacs server
has properly shut down. However, it's supposed to wait for the shutdown
as an "ExecStop" command according to "man systemd.service". So since
the process is still alive when emacsclient comes back, systemd will
still issue SIGTERM, making emacs return 15 (maybe after calling kill-
emacs again?!).

Copyright-paperwork-exempt: yes

etc/emacs.service

index c99c6779f58e7c30ff1fae7c44e4e34c1ebc367c..809c49cdbc5c1fb3b611b3fbfa2f543433e552b5 100644 (file)
@@ -9,7 +9,11 @@ Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/
 [Service]
 Type=notify
 ExecStart=emacs --fg-daemon
-ExecStop=emacsclient --eval "(kill-emacs)"
+
+# Emacs will exit with status 15 after having received SIGTERM, which
+# is the default "KillSignal" value systemd uses to stop services.
+SuccessExitStatus=15
+
 # The location of the SSH auth socket varies by distribution, and some
 # set it from PAM, so don't override by default.
 # Environment=SSH_AUTH_SOCK=%t/keyring/ssh