[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bash-5.0: case command bug
From: |
Drab Martin |
Subject: |
Re: bash-5.0: case command bug |
Date: |
Fri, 18 Jan 2019 19:46:43 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 |
On 1/18/19 1:44 PM, Chet Ramey wrote:
On 1/17/19 6:21 PM, Drab Martin wrote:
Hi,
I have a problem with bash 5.0:
-----
machine1 ~ # bash --version
GNU bash, version 5.0.0(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
machine1 ~ # case "a-b" in *-*-*) echo "This is a BUG" ;; *) echo "This is
not a BUG" ;; esac
This is a BUG
I tried this on Gentoo.
ec2-user@ip-172-31-8-83 ~/build/bash-5.0 $ cat x1
case "a-b" in *-*-*) echo "This is a BUG" ;; *) echo "This is not a BUG" ;;
esac
ec2-user@ip-172-31-8-83 ~/build/bash-5.0 $ ./bash ./x1
This is not a BUG
ec2-user@ip-172-31-8-83 ~/build/bash-5.0 $ uname -a
Linux ip-172-31-8-83.ec2.internal 4.9.76-gentoo-r1 #1 SMP Mon Mar 5
06:42:49 UTC 2018 x86_64 Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
GenuineIntel GNU/Linux
ec2-user@ip-172-31-8-83 ~/build/bash-5.0 $ ./bash --version
GNU bash, version 5.0.0(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
ec2-user@ip-172-31-8-83 ~/build/bash-5.0 $ ./bash
bash-5.0$ case "a-b" in *-*-*) echo "This is a BUG" ;; *) echo "This is not
a BUG" ;; esac
This is not a BUG
bash-5.0$ exit
exit
So you installed bash-5.0 as /bin/bash? And kept the /bin/sh symlink?
And still got these results?
ec2-user@ip-172-31-8-83 ~/build/bash-5.0 $ sed 2q
/usr/share/gnuconfig/config.sub
#! /bin/sh
# Configuration validation subroutine script.
ec2-user@ip-172-31-8-83 ~/build/bash-5.0 $ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 1 2018 /bin/sh -> bash
Because when I run bash-5.0 against that configure script, I get:
ec2-user@ip-172-31-8-83 ~/build/bash-5.0 $ ./bash
/usr/share/gnuconfig/config.sub x86_64-pc-linux-gnu
x86_64-pc-linux-gnu
Hi Chet,
well, this is odd, because I tried again (manually patched the config.sub, so that it worked even if the bug is there)
and tried re-compiling bash-5.0 the standard way in Gentoo and the bug is still there.
--------
machine1 ~ # emerge -av1 bash
...
Calculating dependencies ... done!
[ebuild R ] app-shells/bash-5.0::gentoo USE="net nls plugins (readline) -afs -bashlogger -examples -mem-scramble"
0 KiB
...
machine1 ~ # uname -a
Linux xenomorph 4.19.9-gentoo #1 SMP PREEMPT Sun Dec 16 00:43:14 CET 2018 x86_64 Intel(R) Core(TM) i7-3820QM CPU @
2.70GHz GenuineIntel GNU/Linux
machine1 ~ # ls -l /bin/bash
-rwxr-xr-x 1 root root 1364664 Jan 18 19:20 /bin/bash
machine1 ~ # ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Jan 18 19:20 /bin/sh -> bash
machine1 ~ # /bin/bash --version
GNU bash, version 5.0.0(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
machine1 ~ # /bin/bash -c 'case "a-b" in *-*-*) echo "This is a BUG" ;; *) echo
"This is not a BUG" ;; esac'
This is a BUG
machine1 ~ # /usr/share/gnuconfig/config.sub.orig x86_64-pc-linux-gnu
Invalid configuration `x86_64-pc-linux-gnu': machine `x86_64-pc' not recognized
--------
The config.sub.orig is the renamed original, which I had to temporarily replace
with the patched variant.
--------
machine1 ~ # diff -Nau /usr/share/gnuconfig/config.sub.orig
/usr/share/gnuconfig/config.sub
--- /usr/share/gnuconfig/config.sub.orig 2019-01-18 04:42:40.962952315
+0100
+++ /usr/share/gnuconfig/config.sub 2019-01-18 19:17:18.879097624 +0100
@@ -361,10 +361,10 @@
basic_machine=$basic_machine-pc
;;
# Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not
recognized 1>&2
- exit 1
- ;;
+# *-*-*)
+# echo Invalid configuration \`$1\': machine \`$basic_machine\' not
recognized 1>&2
+# exit 1
+# ;;
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
--------
Could it perhaps be a problem of some library, bash is using to work with the text or something? Or a problem of
miscompiling GCC perhaps?
--------
machine1 ~ # gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-8.2.0-r6/work/gcc-8.2.0/configure --host=x86_64-pc-linux-gnu
--build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/8.2.0
--includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/8.2.0
--mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/8.2.0/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/8.2.0/info
--with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include/g++-v8
--with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/8.2.0/python --enable-objc-gc
--enable-languages=c,c++,objc,obj-c++,fortran --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib
--enable-nls --without-included-gettext --enable-checking=release --with-bugurl=https://bugs.gentoo.org/
--with-pkgversion='Gentoo 8.2.0-r6 p1.7' --disable-esp --enable-libstdcxx-time --enable-shared --enable-threads=posix
--enable-__cxa_atexit --enable-clocale=gnu --enable-multilib --with-multilib-list=m32,m64 --disable-altivec
--disable-fixed-point --enable-targets=all --enable-libgomp --disable-libmudflap --disable-libssp --disable-libmpx
--enable-systemtap --enable-vtable-verify --enable-libvtv --enable-lto --with-isl --disable-isl-version-check
--enable-libsanitizer --enable-default-pie --enable-default-ssp
Thread model: posix
gcc version 8.2.0 (Gentoo 8.2.0-r6 p1.7)
machine1 ~ # grep "^CFLAGS=" /etc/make.conf
CFLAGS="-O3 -march=native -minline-all-stringops -funroll-all-loops -fsched-pressure -fsched-spec-load -fipa-pta
-fvariable-expansion-in-unroller -ftree-vectorize -ftree-loop-distribution -ftree-loop-if-convert-stores -pipe"
--------
Allright, I got it. It is a problem of faulty GCC 8.2 compiler. Just recompiled bash-5.0 with CFLAGS="-O2 -march=native
-pipe" and it works fine, now. Sorry to bother you with this. Will try to report bug to the GCC, when I have a bit more
time. Thanks anyway.
Best regards,
Martin