Subject: bug#29067: 26.0.90; "Invalid client frame" when doing save-buffers-kill-terminal

From: martin rudalics <[email-masked]>
Date: Tue, 31 Oct 2017 09:41:57 +0100

> Today I happened to run it with just emacs&. But then when I tried to quit
 > via save-buffers-kill-terminal, I got "Invalid client frame".
 >
 > In files.el, we have:
 >
 > (defun save-buffers-kill-terminal (&optional arg)
 >    "Offer to save each buffer, then kill the current connection.
 > If the current frame has no client, kill Emacs itself using
 > `save-buffers-kill-emacs'.
 >
 > With prefix ARG, silently save all file-visiting buffers, then kill.
 >
 > If emacsclient was started with a list of filenames to edit, then
 > only these files will be asked to be saved."
 >    (interactive "P")
 >    (if (frame-parameter nil 'client)
 >        (server-save-buffers-kill-terminal arg)
 >      (save-buffers-kill-emacs arg)))
 >
 > When I eval'ed (frame-parameter nil 'client), I got "Unprintable entity"!
 >
 > So server-save-buffers-kill-terminal gets called incorrectly instead of
 > save-buffers-kill-emacs when I actually do not have the emacsclient or
 > daemon running.
 >
 > I do not see this issue on emacs 25.3 using my same emacs config.

Evaluate (frame-parameter nil 'client) first after starting emacs with
the -Q option and then with your customizations and tell us what you
get.  In a non-client session this parameter should be always nil.

Thanks, martin