>> Can you show us the process tree when bash is looping? Here it is on FreeBSD:
-+= 00001 root /sbin/init -- \-+= 00944 root /usr/sbin/sshd \-+= 14933 root sshd: beebe [priv] (sshd) \-+- 14935 beebe sshd: beebe@pts/1 (sshd) \-+= 14936 beebe -tcsh (tcsh) \-+= 80968 beebe make check \-+- 80979 beebe make check-recursive \-+- 80989 beebe [sh] \-+- 81100 beebe make check \-+- 81101 beebe make check-TESTS \-+- 81105 beebe make test-suite.log TEST_LOGS=helin-segv.log help-version.log hufts.log memcpy-abuse.log m \-+- 81143 beebe /bin/sh ../build-aux/test-driver --test-name help-version --log-file help-version.log -- \-+- 81150 beebe /bin/sh ./help-version \--- 81438 beebe /usr/local/bin/bash /usr/local/bin/zdiff --__cmp zin.gz zin2.gz (bash-4.2) I don't have an lsof tool installed on FreeBSD or NetBSD. Here is the process tree on NetBSD: -+= 00001 root init \-+= 00232 root /etc/sshd (sshd-openssh-6.0) \-+= 07007 root sshd: beebe [priv] (sshd-openssh-6.0) \-+- 23698 beebe sshd: beebe@pts/1 (sshd-openssh-6.0) \-+= 01319 beebe -usr/local/bin/tcsh (tcsh-6.18.01) \-+= 09495 beebe -csh (tcsh-6.18.01) \-+= 02558 beebe make check \-+- 14348 beebe make check-recursive \-+- 23588 beebe /bin/sh -c fail= failcom='exit 1'; for f in x $MAKEFLAGS; do case $f in *=* | --[!k]*);; *k*) failcom='fail=yes';; esac; done; dot_seen \-+- 12680 beebe make check \-+- 08828 beebe make check-TESTS \-+- 19934 beebe /bin/sh -c bases='helin-segv.log help-version.log hufts.log memcpy-abuse.log mixed.log null-suffix-clobber.log stdin.log trailing-nul.lo \-+- 23426 beebe make test-suite.log TEST_LOGS \-+- 27482 beebe /bin/sh -c p='help-version'; b='help-version'; case $- in *e*) set +e;; esac;\t\t\t\t\t srcdirstrip=`echo "." | sed 's|.|.|g'`; ca \-+- 21192 beebe /bin/ksh ../build-aux/test-driver ../build-aux/test-driver ../build-aux/test-driver ../build-aux/test-driver ../build-aux/test-dri \-+- 02467 beebe /bin/sh ./help-version \--- 06795 beebe /bin/ksh /usr/local/bin/zdiff /usr/local/bin/zdiff zin.gz zin2.gz The final process in each case is zdiff, from an earlier installation (same version on both systems): % /usr/local/bin/zdiff --version zdiff (gzip) 1.3.9 That suggested an experiment: % mv /usr/local/bin/zdiff /usr/local/bin/zdiff.hide % mkdir /tmp/local % make install prefix=/tmp/local % set path=(/bin /usr/bin /tmp/local) % make check On FreeBSD, that produces PASS: helin-segv PASS: help-version PASS: hufts PASS: memcpy-abuse PASS: mixed PASS: null-suffix-clobber PASS: stdin PASS: trailing-nul PASS: zdiff PASS: zgrep-f PASS: zgrep-signal PASS: znew-k ============================================================================ Testsuite summary for gzip 1.5 ============================================================================ # TOTAL: 12 # PASS: 12 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 On NetBSD, I get PASS: helin-segv FAIL: help-version PASS: hufts PASS: memcpy-abuse PASS: mixed PASS: null-suffix-clobber PASS: stdin PASS: trailing-nul PASS: zdiff PASS: zgrep-f zgrep-signal: skipped test: no suitable perl found SKIP: zgrep-signal PASS: znew-k ============================================================================ Testsuite summary for gzip 1.5 ============================================================================ # TOTAL: 12 # PASS: 10 # SKIP: 1 # XFAIL: 0 # FAIL: 1 # XPASS: 0 # ERROR: 0 That was sufficiently encouraging that I did % make install # into /usr/local/bin % make distclean % set path=(/bin /usr/bin) % env CC=cc ./configure && make all check On FreeBSD, that produced another successful validation, so I did another % make install On NetBSD, the test suite complained zgrep-signal: skipped test: no suitable perl found so I added /usr/local/bin to the end of PATH, and tried again, with this result: PASS: helin-segv FAIL: help-version PASS: hufts PASS: memcpy-abuse PASS: mixed PASS: null-suffix-clobber PASS: stdin PASS: trailing-nul PASS: zdiff PASS: zgrep-f PASS: zgrep-signal PASS: znew-k ============================================================================ Testsuite summary for gzip 1.5 ============================================================================ # TOTAL: 12 # PASS: 11 # SKIP: 0 # XFAIL: 0 # FAIL: 1 # XPASS: 0 # ERROR: 0 ============================================================================ See tests/test-suite.log Please report to bug-gzip@gnu.org ============================================================================ I did yet another build on NetBSD with PATH set to /usr/local/bin:/bin:/usr/bin, but that did not change the failure of help-version. We can perhaps conclude that the infinite-loop culprit is an interaction with an older version of zdiff, but it still raises the question: Why is the old /usr/local/bin/zdiff being used in the validation suite checks, instead of the newly-built one? Both NetBSD and FreeBSD have zdiff and zmore in /usr/bin, so I suspect the NetBSD help-version failure may be due to the use of those incompatible versions, instead of the newly-built ones. For reference, here is the failing ./tests/help-version.log from NetBSD. + initial_cwd_=/local/build/bare/gzip-1.5/tests + fail=0 + testdir_prefix_ + printf gt + pfx_=gt + mktempd_ /local/build/bare/gzip-1.5/tests gt-help-version.XXXX + destdir_=/local/build/bare/gzip-1.5/tests + template_=gt-help-version.XXXX + MAX_TRIES_=4 + unset TMPDIR + d=/local/build/bare/gzip-1.5/tests/gt-help-version.L6Ob + test -d /local/build/bare/gzip-1.5/tests/gt-help-version.L6Ob + ls -dgo /local/build/bare/gzip-1.5/tests/gt-help-version.L6Ob + tr S - + perms=drwx------ 2 512 June 19 11:41 /local/build/bare/gzip-1.5/tests/gt-help-version.L6Ob + test 0 = 0 + echo /local/build/bare/gzip-1.5/tests/gt-help-version.L6Ob + return + test_dir_=/local/build/bare/gzip-1.5/tests/gt-help-version.L6Ob + cd /local/build/bare/gzip-1.5/tests/gt-help-version.L6Ob + gl_init_sh_nl_= + IFS= + expr 1 + 128 + eval trap 'Exit 129' 1 + trap Exit 129 1 + expr 2 + 128 + eval trap 'Exit 130' 2 + trap Exit 130 2 + expr 3 + 128 + eval trap 'Exit 131' 3 + trap Exit 131 3 + expr 13 + 128 + eval trap 'Exit 141' 13 + trap Exit 141 13 + expr 15 + 128 + eval trap 'Exit 143' 15 + trap Exit 143 15 + trap remove_tmp_ 0 + path_prepend_ .. + test 1 != 0 + path_dir_=.. + cd /local/build/bare/gzip-1.5/tests/.. + echo /local/build/bare/gzip-1.5 + abs_path_dir_=/local/build/bare/gzip-1.5 + PATH=/local/build/bare/gzip-1.5:/local/build/bare/gzip-1.5:/usr/local/bin:/bin:/usr/bin + create_exe_shims_ /local/build/bare/gzip-1.5 + return 0 + shift + test 0 != 0 + export PATH + expected_failure_status_chroot=125 + expected_failure_status_env=125 + expected_failure_status_nice=125 + expected_failure_status_nohup=125 + expected_failure_status_stdbuf=125 + expected_failure_status_su=125 + expected_failure_status_timeout=125 + expected_failure_status_printenv=2 + expected_failure_status_tty=3 + expected_failure_status_sort=2 + expected_failure_status_expr=3 + expected_failure_status_lbracket=2 + expected_failure_status_dir=2 + expected_failure_status_ls=2 + expected_failure_status_vdir=2 + expected_failure_status_cmp=2 + expected_failure_status_zcmp=2 + expected_failure_status_sdiff=2 + expected_failure_status_diff3=2 + expected_failure_status_diff=2 + expected_failure_status_zdiff=2 + expected_failure_status_zgrep=2 + expected_failure_status_zegrep=2 + expected_failure_status_zfgrep=2 + expected_failure_status_grep=2 + expected_failure_status_egrep=2 + expected_failure_status_fgrep=2 + test gzip gunzip gzexe zcat zcmp zdiff zegrep zfgrep zforce zgrep zless zmore znew + test 1.5 + env gzip --version + sed -n 1s/.* //p;q + v=1.5 + break + test x1.5 = x1.5 + test gzip = test + test gzip = false + test gzip = install + env gzip --help + env gzip --version + grep bug-gzip@gnu.org h-gzip + rm -f h-gzip + test -w /dev/full + test gunzip = test + test gunzip = false + test gunzip = install + env gunzip --help + env gunzip --version + grep bug-gzip@gnu.org h-gunzip + rm -f h-gunzip + test -w /dev/full + test gzexe = test + test gzexe = false + test gzexe = install + env gzexe --help + env gzexe --version + grep bug-gzip@gnu.org h-gzexe + rm -f h-gzexe + test -w /dev/full + test zcat = test + test zcat = false + test zcat = install + env zcat --help + env zcat --version + grep bug-gzip@gnu.org h-zcat + rm -f h-zcat + test -w /dev/full + test zcmp = test + test zcmp = false + test zcmp = install + env zcmp --help + env zcmp --version + grep bug-gzip@gnu.org h-zcmp + rm -f h-zcmp + test -w /dev/full + test zdiff = test + test zdiff = false + test zdiff = install + env zdiff --help + env zdiff --version + grep bug-gzip@gnu.org h-zdiff + rm -f h-zdiff + test -w /dev/full + test zegrep = test + test zegrep = false + test zegrep = install + env zegrep --help + env zegrep --version + grep bug-gzip@gnu.org h-zegrep + rm -f h-zegrep + test -w /dev/full + test zfgrep = test + test zfgrep = false + test zfgrep = install + env zfgrep --help + env zfgrep --version + grep bug-gzip@gnu.org h-zfgrep + rm -f h-zfgrep + test -w /dev/full + test zforce = test + test zforce = false + test zforce = install + env zforce --help + env zforce --version + grep bug-gzip@gnu.org h-zforce + rm -f h-zforce + test -w /dev/full + test zgrep = test + test zgrep = false + test zgrep = install + env zgrep --help + env zgrep --version + grep bug-gzip@gnu.org h-zgrep + rm -f h-zgrep + test -w /dev/full + test zless = test + test zless = false + test zless = install + env zless --help + env zless --version + grep bug-gzip@gnu.org h-zless + rm -f h-zless + test -w /dev/full + test zmore = test + test zmore = false + test zmore = install + env zmore --help + env zmore --version + grep bug-gzip@gnu.org h-zmore + rm -f h-zmore + test -w /dev/full + test znew = test + test znew = false + test znew = install + env znew --help + env znew --version + grep bug-gzip@gnu.org h-znew + rm -f h-znew + test -w /dev/full + test gzip = test + test gzip = false + test gzip = install + env gzip --help + env gzip --version + grep bug-gzip@gnu.org h-gzip + rm -f h-gzip + test -w /dev/full + test gunzip = test + test gunzip = false + test gunzip = install + env gunzip --help + env gunzip --version + grep bug-gzip@gnu.org h-gunzip + rm -f h-gunzip + test -w /dev/full + test gzexe = test + test gzexe = false + test gzexe = install + env gzexe --help + env gzexe --version + grep bug-gzip@gnu.org h-gzexe + rm -f h-gzexe + test -w /dev/full + test zcat = test + test zcat = false + test zcat = install + env zcat --help + env zcat --version + grep bug-gzip@gnu.org h-zcat + rm -f h-zcat + test -w /dev/full + test zcmp = test + test zcmp = false + test zcmp = install + env zcmp --help + env zcmp --version + grep bug-gzip@gnu.org h-zcmp + rm -f h-zcmp + test -w /dev/full + test zdiff = test + test zdiff = false + test zdiff = install + env zdiff --help + env zdiff --version + grep bug-gzip@gnu.org h-zdiff + rm -f h-zdiff + test -w /dev/full + test zegrep = test + test zegrep = false + test zegrep = install + env zegrep --help + env zegrep --version + grep bug-gzip@gnu.org h-zegrep + rm -f h-zegrep + test -w /dev/full + test zfgrep = test + test zfgrep = false + test zfgrep = install + env zfgrep --help + env zfgrep --version + grep bug-gzip@gnu.org h-zfgrep + rm -f h-zfgrep + test -w /dev/full + test zforce = test + test zforce = false + test zforce = install + env zforce --help + env zforce --version + grep bug-gzip@gnu.org h-zforce + rm -f h-zforce + test -w /dev/full + test zgrep = test + test zgrep = false + test zgrep = install + env zgrep --help + env zgrep --version + grep bug-gzip@gnu.org h-zgrep + rm -f h-zgrep + test -w /dev/full + test zless = test + test zless = false + test zless = install + env zless --help + env zless --version + grep bug-gzip@gnu.org h-zless + rm -f h-zless + test -w /dev/full + test zmore = test + test zmore = false + test zmore = install + env zmore --help + env zmore --version + grep bug-gzip@gnu.org h-zmore + rm -f h-zmore + test -w /dev/full + test znew = test + test znew = false + test znew = install + env znew --help + env znew --version + grep bug-gzip@gnu.org h-znew + rm -f h-znew + test -w /dev/full + test gzip = test + test gzip = false + test gzip = install + env gzip --help + env gzip --version + grep bug-gzip@gnu.org h-gzip + rm -f h-gzip + test -w /dev/full + test gunzip = test + test gunzip = false + test gunzip = install + env gunzip --help + env gunzip --version + grep bug-gzip@gnu.org h-gunzip + rm -f h-gunzip + test -w /dev/full + test gzexe = test + test gzexe = false + test gzexe = install + env gzexe --help + env gzexe --version + grep bug-gzip@gnu.org h-gzexe + rm -f h-gzexe + test -w /dev/full + test zcat = test + test zcat = false + test zcat = install + env zcat --help + env zcat --version + grep bug-gzip@gnu.org h-zcat + rm -f h-zcat + test -w /dev/full + test zcmp = test + test zcmp = false + test zcmp = install + env zcmp --help + env zcmp --version + grep bug-gzip@gnu.org h-zcmp + rm -f h-zcmp + test -w /dev/full + test zdiff = test + test zdiff = false + test zdiff = install + env zdiff --help + env zdiff --version + grep bug-gzip@gnu.org h-zdiff + rm -f h-zdiff + test -w /dev/full + test zegrep = test + test zegrep = false + test zegrep = install + env zegrep --help + env zegrep --version + grep bug-gzip@gnu.org h-zegrep + rm -f h-zegrep + test -w /dev/full + test zfgrep = test + test zfgrep = false + test zfgrep = install + env zfgrep --help + env zfgrep --version + grep bug-gzip@gnu.org h-zfgrep + rm -f h-zfgrep + test -w /dev/full + test zforce = test + test zforce = false + test zforce = install + env zforce --help + env zforce --version + grep bug-gzip@gnu.org h-zforce + rm -f h-zforce + test -w /dev/full + test zgrep = test + test zgrep = false + test zgrep = install + env zgrep --help + env zgrep --version + grep bug-gzip@gnu.org h-zgrep + rm -f h-zgrep + test -w /dev/full + test zless = test + test zless = false + test zless = install + env zless --help + env zless --version + grep bug-gzip@gnu.org h-zless + rm -f h-zless + test -w /dev/full + test zmore = test + test zmore = false + test zmore = install + env zmore --help + env zmore --version + grep bug-gzip@gnu.org h-zmore + rm -f h-zmore + test -w /dev/full + test znew = test + test znew = false + test znew = install + env znew --help + env znew --version + grep bug-gzip@gnu.org h-znew + rm -f h-znew + test -w /dev/full + bigZ_in=bigZ-in.Z + zin=zin.gz + zin2=zin2.gz + tmp=tmp-656 + tmp_in=in-656 + tmp_in2=in2-656 + tmp_dir=dir-656 + tmp_out=out-656 + mkdir tmp-656 + cd tmp-656 + rm -rf in-656 in2-656 dir-656 out-656 bigZ-in.Z zin.gz zin2.gz + echo z + gzip + cp zin.gz zin2.gz + cp zin.gz bigZ-in.Z + echo 2147483647 0 + cp in-656 in2-656 + mkdir dir-656 + test gzip = [ + prog=gzip + type gzip_setup + args= + env gzip + : + rm -rf in-656 in2-656 out-656 dir-656 + rm -rf in-656 in2-656 dir-656 out-656 bigZ-in.Z zin.gz zin2.gz + echo z + gzip + cp zin.gz zin2.gz + cp zin.gz bigZ-in.Z + echo 2147483647 0 + cp in-656 in2-656 + mkdir dir-656 + test gunzip = [ + prog=gunzip + type gunzip_setup + gunzip_setup + args=zin.gz + env gunzip zin.gz + : + rm -rf in-656 in2-656 out-656 dir-656 + rm -rf in-656 in2-656 dir-656 out-656 bigZ-in.Z zin.gz zin2.gz + echo z + gzip + cp zin.gz zin2.gz + cp zin.gz bigZ-in.Z + echo 2147483647 0 + cp in-656 in2-656 + mkdir dir-656 + test gzexe = [ + prog=gzexe + type gzexe_setup + gzexe_setup + args=in-656 + env gzexe in-656 in-656: -15.4% + : + rm -rf in-656 in2-656 out-656 dir-656 + rm -rf in-656 in2-656 dir-656 out-656 bigZ-in.Z zin.gz zin2.gz + echo z + gzip + cp zin.gz zin2.gz + cp zin.gz bigZ-in.Z + echo 2147483647 0 + cp in-656 in2-656 + mkdir dir-656 + test zcat = [ + prog=zcat + type zcat_setup + zcat_setup + args=zin.gz + env zcat zin.gz + : + rm -rf in-656 in2-656 out-656 dir-656 + rm -rf in-656 in2-656 dir-656 out-656 bigZ-in.Z zin.gz zin2.gz + echo z + gzip + cp zin.gz zin2.gz + cp zin.gz bigZ-in.Z + echo 2147483647 0 + cp in-656 in2-656 + mkdir dir-656 + test zcmp = [ + prog=zcmp + type zcmp_setup + zcmp_setup + args=zin.gz zin2.gz + env zcmp zin.gz zin2.gz + : + rm -rf in-656 in2-656 out-656 dir-656 + rm -rf in-656 in2-656 dir-656 out-656 bigZ-in.Z zin.gz zin2.gz + echo z + gzip + cp zin.gz zin2.gz + cp zin.gz bigZ-in.Z + echo 2147483647 0 + cp in-656 in2-656 + mkdir dir-656 + test zdiff = [ + prog=zdiff + type zdiff_setup + zdiff_setup + args=zin.gz zin2.gz + env zdiff zin.gz zin2.gz + : + rm -rf in-656 in2-656 out-656 dir-656 + rm -rf in-656 in2-656 dir-656 out-656 bigZ-in.Z zin.gz zin2.gz + echo z + gzip + cp zin.gz zin2.gz + cp zin.gz bigZ-in.Z + echo 2147483647 0 + cp in-656 in2-656 + mkdir dir-656 + test zegrep = [ + prog=zegrep + type zegrep_setup + zegrep_setup + args=z zin.gz + env zegrep z zin.gz + : + rm -rf in-656 in2-656 out-656 dir-656 + rm -rf in-656 in2-656 dir-656 out-656 bigZ-in.Z zin.gz zin2.gz + echo z + gzip + cp zin.gz zin2.gz + cp zin.gz bigZ-in.Z + echo 2147483647 0 + cp in-656 in2-656 + mkdir dir-656 + test zfgrep = [ + prog=zfgrep + type zfgrep_setup + zfgrep_setup + args=z zin.gz + env zfgrep z zin.gz + : + rm -rf in-656 in2-656 out-656 dir-656 + rm -rf in-656 in2-656 dir-656 out-656 bigZ-in.Z zin.gz zin2.gz + echo z + gzip + cp zin.gz zin2.gz + cp zin.gz bigZ-in.Z + echo 2147483647 0 + cp in-656 in2-656 + mkdir dir-656 + test zforce = [ + prog=zforce + type zforce_setup + zforce_setup + args=zin.gz + env zforce zin.gz + : + rm -rf in-656 in2-656 out-656 dir-656 + rm -rf in-656 in2-656 dir-656 out-656 bigZ-in.Z zin.gz zin2.gz + echo z + gzip + cp zin.gz zin2.gz + cp zin.gz bigZ-in.Z + echo 2147483647 0 + cp in-656 in2-656 + mkdir dir-656 + test zgrep = [ + prog=zgrep + type zgrep_setup + zgrep_setup + args=z zin.gz + env zgrep z zin.gz + : + rm -rf in-656 in2-656 out-656 dir-656 + rm -rf in-656 in2-656 dir-656 out-656 bigZ-in.Z zin.gz zin2.gz + echo z + gzip + cp zin.gz zin2.gz + cp zin.gz bigZ-in.Z + echo 2147483647 0 + cp in-656 in2-656 + mkdir dir-656 + test zless = [ + prog=zless + type zless_setup + zless_setup + args=zin.gz + env zless zin.gz + : + rm -rf in-656 in2-656 out-656 dir-656 + rm -rf in-656 in2-656 dir-656 out-656 bigZ-in.Z zin.gz zin2.gz + echo z + gzip + cp zin.gz zin2.gz + cp zin.gz bigZ-in.Z + echo 2147483647 0 + cp in-656 in2-656 + mkdir dir-656 + test zmore = [ + prog=zmore + type zmore_setup + zmore_setup + args=zin.gz + env zmore zin.gz + echo FAIL: zmore FAIL: zmore + fail=1 + rm -rf in-656 in2-656 out-656 dir-656 + rm -rf in-656 in2-656 dir-656 out-656 bigZ-in.Z zin.gz zin2.gz + echo z + gzip + cp zin.gz zin2.gz + cp zin.gz bigZ-in.Z + echo 2147483647 0 + cp in-656 in2-656 + mkdir dir-656 + test znew = [ + prog=znew + type znew_setup + znew_setup + args=bigZ-in.Z + env znew bigZ-in.Z + : + rm -rf in-656 in2-656 out-656 dir-656 + Exit 1 + set +e + exit 1 + exit 1 + remove_tmp_ + __st=1 + cleanup_ + : + cd /local/build/bare/gzip-1.5/tests + chmod -R u+rwx /local/build/bare/gzip-1.5/tests/gt-help-version.L6Ob + rm -rf /local/build/bare/gzip-1.5/tests/gt-help-version.L6Ob + exit 1 ------------------------------------------------------------------------------- - Nelson H. F. Beebe Tel: +1 801 581 5254 - - University of Utah FAX: +1 801 581 4148 - - Department of Mathematics, 110 LCB Internet e-mail: be...@math.utah.edu - - 155 S 1400 E RM 233 be...@acm.org be...@computer.org - - Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe/ - -------------------------------------------------------------------------------