On Wed, Sep 28, 2016 at 10:35 AM, Abhijit Dasgupta <[email protected]>
wrote:
> Configuration Information [Automatically generated, do not change]:
> Machine: x86_64
> OS: linux-gnu
> Compiler: gcc
> Compilation CFLAGS: -DPROGRAM='bash' -DCONF_HOSTTYPE='x86_64'
> -DCONF_OSTYPE='linux-gnu' -DCONF_MACHTYPE='x86_64-pc-linux-gnu'
> -DCONF_VENDOR='pc' -DLOCALEDIR='/usr/share/locale' -DPACKAGE='bash'
> -DSHELL -DHAVE_CONFIG_H -I. -I../. -I.././include -I.././lib
> -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4
> -Wformat -Werror=format-security -Wall
> uname output: Linux rho 3.16.0-38-generic #52~14.04.1-Ubuntu SMP Fri May 8
> 09:43:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
> Machine Type: x86_64-pc-linux-gnu
>
> Bash Version: 4.3
> Patch Level: 11
> Release Status: release
>
> Description:
>
> The following stopping issue is seen in recent bash versions:
>
> $ { cmd_a; cmd_b | cmd_c; } | pager_prog
>
> [1]+ Stopped { cmd_a; cmd_b | cmd_c; } | pager_prog
>
> What is seen: If a group of commands (in the above form) has its output
> piped to a pager program (e.g. more, less, etc), then they get stopped
> (by a SIGTTIN/SIGTTOU signal, while pager_prog accesses the tty). This
> happens if the first command of the group (cmd_a) is not a bash builtin
> AND a pipeline occurs later in the group (cmd_b | cmd_c).
>
> Puzzlingly, the issue does not arise if in the command group either the
> first command (cmd_a) is a bash builtin or if none of the later commands
> contains a pipe.
>
> Repeat-by:
>
> Specific examples to reproduce/illustrate the issue:
>
> { /bin/echo "Users"; who | sort; } | more # Gets stopped
> { builtin echo "Users"; who | sort; } | more # Works fine
>
> { date; who | sort; } | more # Gets stopped
> { who | sort; date; } | more # Works fine
>
> Workaround:
>
> The problem goes away if we enclose the individual pipelines
> within the group (or the entire group) with a sh -c '...'.
>
> Additional notes:
>
> - The problem is still seen if the commands are grouped using parentheses
> (subshell) instead of braces, and also when pipelined commands are
> repeated in a loop, e.g.:
>
> for n in 1 2 ; do cmd_a | cmd_b ; done | pager_prog
>
> [1]+ Stopped for n in 1 2;
> do
> cmd_a | cmd_b;
> done | pager_prog
>
> - The problem is seen in all terminal types (xterm, linux console VT, etc)
>
> - The problem is seen in bash versions 4.3.46 and 4.3.11, but not in 4.1.5.
>
>
> Thanks,
>
> Abhijit Dasgupta
>
> I cannot reproduce with either 4.3.46 or 4.3.11, but my system is 32bits
and not 64bits.