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

From: Eli Zaretskii <[email-masked]>
Date: Wed, 24 May 2023 13:52:31 +0300

> From: Adam Ibrahim <[email-masked]>
> Date: Tue, 23 May 2023 16:30:14 -0400
> Cc: [email-masked]
> 
> 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.

If the only problem you see after the change is that you don't always
see the error message, then it's expected.  emacsclient outputs the
error message to stderr, and when there's a client frame on that
display, it is impossible to make sure the error message will always
be shown, before it is erased when the terminal is closed by the
server Emacs process.  So the only thing the fix tries to guarantee is
that you will be able to use the terminal after emacsclient exits.  If
this happens in all the configurations you tried, then the goal of the
change is achieved, and I don't think we can do much more.