From: jhclark
To: bug-bash@gnu.org,b...@packages.debian.org
Subject: [50 character or so descriptive subject here (for reference)]

Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS:  -DPROGRAM='bash' -DCONF_HOSTTYPE='x86_64' -DCONF_OS\
TYPE='linux-gnu' -DCONF_MACHTYPE='x86_64-pc-linux-gnu' -DCONF_VENDOR='pc\
' -DLOCALEDIR='/usr/share/locale' -DPACKAGE='bash' -DSHELL -DHAVE_CONFIG\
_H   -I.  -I../bash -I../bash/include -I../bash/lib   -g -O2 -Wall
uname output: Linux barrow 2.6.32-24-server #39-Ubuntu SMP Wed Jul 28 06\
:21:40 UTC 2010 x86_64 GNU/Linux
Machine Type: x86_64-pc-linux-gnu

Bash Version: 4.1
Patch Level: 5
Release Status: release

Description:
        Error codes from process substitution subshells go undetected,
even with current most-paranoid flags set. I propose "set -o
procsubfail" to fix this, though I'm unsure what changes to the
codebase this will entail. I'm willing to hack some code if you agree
and can point me in the right direction.

Repeat-By:

#!/usr/bin/env bash
set -e
set -o pipefail
cat <(echo hi; exit 1)
echo 'There should be a way of making this not print'

Fix (Workaround):

#!/usr/bin/env bash
set -e
set -o pipefail
cat <( (echo hi; exit 1) || kill $$)
echo 'This probably doesn't print now, but this is messy'

Fix (Preferred):

#!/usr/bin/env bash
set -e
set -o pipefail
set -o procsubfail

cat <(echo hi; exit 1)
echo 'This doesn't print now and code isn't messy'


Thanks for the wonderful shell,
Jon

jhcl...@cs.cmu.edu
http://www.cs.cmu.edu/~jhclark
PhD Student
School of Computer Science
Carnegie-Mellon University

Reply via email to