bug-bash
[Top][All Lists]
Advanced

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

fg via keybind modifies tty settings


From: David Moberg
Subject: fg via keybind modifies tty settings
Date: Sat, 21 Sep 2024 01:23:23 +0200

Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -g -O2 -fno-omit-frame-pointer
-mno-omit-leaf-frame-pointer -flto=auto -ffat-lto-objects
-fstack-protector-strong -fstack-clash-protection -Wformat
-Werror=format-security -fcf-protection -Wall
uname output: Linux Tugge 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC
Fri Aug 30 12:02:04 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Machine Type: x86_64-pc-linux-gnu

Bash Version: 5.2
Patch Level: 21
Release Status: release

Description:
        When a process/job is suspended, foregrounded via ctrl-a as a
keybinding for fg, and then
        suspended again, the tty will be in a surprising state where no
input is seen (-echo)

Repeat-By:
|       bind -x '"\C-a":"fg"'   # bind C-A to perform fg
        vim                     #
        <ctrl-z>                # Terminal still works
        stty -a > working.txt   # store tty settings
        <ctrl-a>                # Put vim in foreground again
        :q                      # Quit vim
        vim                     # Start a new vim session (*)
        <ctrl-z>                # Terminal is broken
        stty -a > broken.txt    # store tty settings
        #type text and no echo

        Dumping the tty configuration before and after the broken state
reveals this diff after the
        second vim command above (*) has been executed:

        ```console
        $ diff working.txt broken.txt
        4c4
        < werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
        ---
        > werase = ^W; lnext = <undef>; discard = <undef>; min = 1; time =
0;
        6c6
        < -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl
ixon -ixoff
        ---
        > -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr
-icrnl ixon -ixoff
        9c9
        < isig icanon iexten echo echoe echok -echonl -noflsh -xcase
-tostop -echoprt
        ---
        > isig -icanon iexten -echo echoe echok -echonl -noflsh -xcase
-tostop -echoprt
        ```

        The tty can get back into working state by running `stty sane`.

        By redoing the <start vim> <ctrl-z> <ctrl-a> <quit vim> <stty sane>
it can be seen that the
        terminal will only be broken after every second invocation.

        Similar issue(?) in fish that has been resolved:
                https://github.com/fish-shell/fish-shell/issues/2114

        I have experienced the same weirdness with other applications than
vim, for example python3.
        I have experienced the issue several terminals: Wezterm, xfce-4
terminal.


reply via email to

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