touch-packages team mailing list archive
-
touch-packages team
-
Mailing list archive
-
Message #34872
[Bug 1394136] [NEW] if statement with pipe to grep randomly fails if pipefail is set
Public bug reported:
The following bash script will fail randomly on trusty but when tested
on saucy it worked all the time. On the system we test we have kvm
installed and the if statement should evaluate to false and we should
see ten PASS lines and no Error. And this should happen all the time.
======
#!/bin/bash
set -eu
set -o pipefail
if ! lsmod | grep -q -e ^kvm_intel -e ^kvm_amd ; then
echo 'Error: check that virtualisation is enabled in your BIOS'
else
echo "PASS"
fi
=======
As can be seen if I run it 10 times I get 2 PASS and 8 failures
=======
kerrin@kerrin-HP-Z620-Workstation:~/ce_build$ for i in $(seq 0 9) ; do bash test-simple.bash ; done
PASS
PASS
Error: check that virtualisation is enabled in your BIOS
Error: check that virtualisation is enabled in your BIOS
Error: check that virtualisation is enabled in your BIOS
Error: check that virtualisation is enabled in your BIOS
Error: check that virtualisation is enabled in your BIOS
Error: check that virtualisation is enabled in your BIOS
Error: check that virtualisation is enabled in your BIOS
Error: check that virtualisation is enabled in your BIOS
=======
Now if I turn off the pipefail then the script passes all the time and
just prints out 10 PASS lines.
The script uses bash, grep and lsmod and I have the following versions
on trusty of them
kerrin@kerrin-HP-Z620-Workstation:~/ce_build$ dpkg -l | grep bash
ii bash 4.3-7ubuntu1.5 amd64 GNU Bourne Again SHell
ii bash-completion 1:2.1-4 all programmable completion for the bash shell
ii command-not-found 0.3ubuntu12 all Suggest installation of packages in interactive bash sessions
kerrin@kerrin-HP-Z620-Workstation:~/ce_build$ dpkg -l | grep grep
ii grep 2.16-1 amd64 GNU grep, egrep and fgrep
kerrin@kerrin-HP-Z620-Workstation:~/ce_build$ dpkg -l | grep kmod
ii kmod 15-0ubuntu6 amd64 tools for managing Linux kernel modules
ii libkmod2:amd64 15-0ubuntu6 amd64 libkmod shared library
ii module-init-tools 15-0ubuntu6 all transitional dummy package (module-init-tools to kmod)
** Affects: bash (Ubuntu)
Importance: Undecided
Status: Confirmed
--
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to bash in Ubuntu.
https://bugs.launchpad.net/bugs/1394136
Title:
if statement with pipe to grep randomly fails if pipefail is set
Status in “bash” package in Ubuntu:
Confirmed
Bug description:
The following bash script will fail randomly on trusty but when tested
on saucy it worked all the time. On the system we test we have kvm
installed and the if statement should evaluate to false and we should
see ten PASS lines and no Error. And this should happen all the time.
======
#!/bin/bash
set -eu
set -o pipefail
if ! lsmod | grep -q -e ^kvm_intel -e ^kvm_amd ; then
echo 'Error: check that virtualisation is enabled in your BIOS'
else
echo "PASS"
fi
=======
As can be seen if I run it 10 times I get 2 PASS and 8 failures
=======
kerrin@kerrin-HP-Z620-Workstation:~/ce_build$ for i in $(seq 0 9) ; do bash test-simple.bash ; done
PASS
PASS
Error: check that virtualisation is enabled in your BIOS
Error: check that virtualisation is enabled in your BIOS
Error: check that virtualisation is enabled in your BIOS
Error: check that virtualisation is enabled in your BIOS
Error: check that virtualisation is enabled in your BIOS
Error: check that virtualisation is enabled in your BIOS
Error: check that virtualisation is enabled in your BIOS
Error: check that virtualisation is enabled in your BIOS
=======
Now if I turn off the pipefail then the script passes all the time and
just prints out 10 PASS lines.
The script uses bash, grep and lsmod and I have the following versions
on trusty of them
kerrin@kerrin-HP-Z620-Workstation:~/ce_build$ dpkg -l | grep bash
ii bash 4.3-7ubuntu1.5 amd64 GNU Bourne Again SHell
ii bash-completion 1:2.1-4 all programmable completion for the bash shell
ii command-not-found 0.3ubuntu12 all Suggest installation of packages in interactive bash sessions
kerrin@kerrin-HP-Z620-Workstation:~/ce_build$ dpkg -l | grep grep
ii grep 2.16-1 amd64 GNU grep, egrep and fgrep
kerrin@kerrin-HP-Z620-Workstation:~/ce_build$ dpkg -l | grep kmod
ii kmod 15-0ubuntu6 amd64 tools for managing Linux kernel modules
ii libkmod2:amd64 15-0ubuntu6 amd64 libkmod shared library
ii module-init-tools 15-0ubuntu6 all transitional dummy package (module-init-tools to kmod)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1394136/+subscriptions
Follow ups
References