emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master e5348f1 2/2: * etc/emacs.service:


From: Lars Ingebrigtsen
Subject: master e5348f1 2/2: * etc/emacs.service:
Date: Mon, 14 Dec 2020 12:00:55 -0500 (EST)

branch: master
commit e5348f125ff03ac70713e5b227f9e51f759a587b
Author: Tim Ruffing <crypto@timruffing.de>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    * etc/emacs.service:
    
    * 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 | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/etc/emacs.service b/etc/emacs.service
index c99c677..809c49c 100644
--- a/etc/emacs.service
+++ b/etc/emacs.service
@@ -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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]