Sunday, October 17, 2021

Re: upgrading past 8.2.2918 loses access to /dev/tty from athena gvim

> On Thu, Oct 14, 2021 at 04:28:14PM +0100, Bram Moolenaar <Bram@moolenaar.net> wrote:
>
> > > > Since more than one person complained about this, and it still doesn't
> > > > fully work with zsh, I'll revert 8.2.2919. For zsh we need to find a
> > > > different solution.
> > >
> > > Thanks. Maybe blocking SIGHUP would fix the original problem with
> > > background processes?
> >
> > Hopefully someone can find out what the actualy problem is and find a
> > solution that works and does not cause new problems.
>
> Hmm, SIGHUP is already ignored in the gui.

Thanks for taking time to look into this.

> My guess is that the original problem is that most
> shells inherit gvim's ignoring of SIGHUP, but zsh
> doesn't. So the command being executed doesn't ignore
> SIGHUP either, and it dies when zsh terminates, rather
> than when it's finished. But that is just a guess.
>
> It's strange. The original bug report was for Arch Linux.
> But it works fine on Debian Linux. It doesn't work on macOS.

Thus we don't fully understand the cause of the problem. Perhaps it's a
specific zsh version or how it was configured?

> I tried the following things on macOS:
>
> - Append "; wait" to the command
> - Prepend "setopt NO_HUP; " to the command
> - Prepend "trap '' HUP; " to the command
> - Prepend "setopt NO_HUP; trap '' HUP; " to the command
> - set shellcmdflag=-o\ nohup\ -c
>
> The only thing that "fixed" it was appending "; wait"
> to the command. Below is a patch that does that,
> only when the gui is running and the shell is zsh and
> there's an ampersand in the command (so "&&" will be a
> false positive).
>
> diff --git a/src/misc2.c b/src/misc2.c
> index 8e01434ea..20c56edde 100644
> --- a/src/misc2.c
> +++ b/src/misc2.c
> @@ -1766,6 +1766,29 @@ call_shell(char_u *cmd, int opt)
> proftime_T wait_time;
>

No comments: