Subject: bug#63629: Fwd: bug#63629: 28.3; Emacsclient exits with no error message and breaks terminal when opening a file without permissions

From: Adam Ibrahim <[email-masked]>
Date: Tue, 23 May 2023 16:30:14 -0400

I ran the following commands on my phone in termux and in Kitty on my PC 10
times each and record the results. I did it multiple times because the
results seem random.

 ./src/emacs --fg-daemon -Q
 ./lib-src/emacsclient path/to/no-perms # in a separate terminal, 10 times

Phone + Termux: 9 out of 10 times, I got the expected results where the
terminal was not broken and I saw an error message. on the 10th time there
was some weird behavior, but I haven't been able to reproduce it and I
don't remember what happened.

PC + Kitty: there were no crashes meaning the terminal wasn't broken
anymore. but 6 out of 10 times the error message didn't print. sometimes
all I saw was "waiting for emacs..." and some other times all I saw was
"...". the other four times was expected behavior colon the error message
printed and the terminal wasn't broken.

Note: I have a slightly different environment on my phone compared to the
first time. when I first reported the bug I was using the emacs and
emacsclient programs located on my phone. this time I used the modified
emacs and emacsclient from my desktop over SSH. I don't know if that
changed the results. But the bug with unmodified emacs happens just the
same over SSH as with emacs on my phone.

On Mon, May 22, 2023, 09:30 Eli Zaretskii <[email-masked]> wrote:

> > From: Adam Ibrahim <[email-masked]>
> > Date: Sun, 21 May 2023 14:57:03 -0400
> >
> > output of `ls -l`:
> >
> >  ls -l no-perms
> >  ---------- 1 u0_a331 u0_a331 0 May 21 14:27 no-perms
> >
> > commands used:
> >
> >  emacs --fg-daemon -Q
> >  emacsclient no-perms # in a separate terminal
> >
> > what stops working: when I type, the letters I type don't appear in the
> terminal anymore. nothing is
> > echoed back to me. stuff still happens, and I can enter commands, but I
> can't see anything. And the
> > terminal width seems screwed up. like things that should get indented,
> they don't look right.
>
> Thanks.  Please try the patch below and see if it solves the problem
> without adding any new ones.
>
> diff --git a/lisp/server.el b/lisp/server.el
> index eaf24a770e4..7e35eaa6176 100644
> --- a/lisp/server.el
> +++ b/lisp/server.el
> @@ -1138,6 +1138,11 @@ server-process-filter
>        (server-log "Authentication failed" proc)
>        (server-send-string
>         proc (concat "-error " (server-quote-arg "Authentication failed")))
> +      (unless (eq system-type 'windows-nt)
> +        (let ((terminal (process-get proc 'terminal)))
> +          ;; Only delete the terminal if it is non-nil.
> +          (when (and terminal (eq (terminal-live-p terminal) t))
> +           (delete-terminal terminal))))
>        ;; Before calling `delete-process', give emacsclient time to
>        ;; receive the error string and shut down on its own.
>        (sit-for 1)
> @@ -1459,6 +1464,11 @@ server-return-error
>       proc (concat "-error " (server-quote-arg
>                               (error-message-string err))))
>      (server-log (error-message-string err) proc)
> +    (unless (eq system-type 'windows-nt)
> +      (let ((terminal (process-get proc 'terminal)))
> +        ;; Only delete the terminal if it is non-nil.
> +        (when (and terminal (eq (terminal-live-p terminal) t))
> +         (delete-terminal terminal))))
>      ;; Before calling `delete-process', give emacsclient time to
>      ;; receive the error string and shut down on its own.
>      (sit-for 5)
>