NetworkBlockDevice / nbd

Network Block Device
GNU General Public License v2.0
450 stars 116 forks source link

3.24: test suite runs forever #144

Closed kloczek closed 1 year ago

kloczek commented 1 year ago

Looks like something is wrong with test suite which is stuck and cannot finish Part of the ps auxwf output

tkloczko 3774319  0.0  0.0   2964  2444 pts/5    S+   23:15   0:00  |                                   |           \_ /usr/bin/make -O -j48 V=1 VERBOSE=1 check DELAY=10
tkloczko 3774320  0.0  0.0   3960  3108 pts/5    S+   23:15   0:00  |                                   |               \_ /bin/sh -c fail=; \ if (target_option=k; case ${target_option-} in ?) ;; *) echo "am__make_running_with_option: internal error: invalid" "target option '${target_option-}' specified" >&2; exit 1;; esac; has_opt=no; sane_makeflags=$MAKEFLAGS; if { if test -z '0'; then false; elif test -n 'x86_64-redhat-linux-gnu'; then true; elif test -n '4.4.0.90' && test -n '/home/tkloczko/rpmbuild/BUILD/nbd-3.24'; then true; else false; fi; }; then sane_makeflags=$MFLAGS; else case $MAKEFLAGS in *\\[\ \?]*) bs=\\; sane_makeflags=`printf '%s\n' "$MAKEFLAGS" | sed "s/$bs$bs[$bs $bs?]*//g"`;; esac; fi; skip_next=no; strip_trailopt () { flg=`printf '%s\n' "$flg" | sed "s/$1.*$//"`; }; for flg in $sane_makeflags; do test $skip_next = yes && { skip_next=no; continue; }; case $flg in *=*|--*) continue;; -*I) strip_trailopt 'I'; skip_next=yes;; -*I?*) strip_trailopt 'I';; -*O) strip_trailopt 'O'; skip_next=yes;; -*O?*) strip_trailopt 'O';; -*l) strip_trailopt 'l'; skip_next=yes;; -*l?*) strip_trailopt 'l';; -[dEDm]) skip_next=yes;; -[JT]) skip_next=yes;; esac; case $flg in *$target_option*) has_opt=yes; break;; esac; done; test $has_opt = yes); then \   failcom='fail=yes'; \ else \   failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo check-recursive | sed s/-recursive//`; \ case "check-recursive" in \   distclean-* | maintainer-clean-*) list='. man doc tests systemd gznbd' ;; \   *) list='. man doc tests systemd gznbd' ;; \ esac; \ for subdir in $list; do \   echo "Making $target in $subdir"; \   if test "$subdir" = "."; then \     dot_seen=yes; \     local_target="$target-am"; \   else \     local_target="$target"; \   fi; \   (CDPATH="${ZSH_VERSION+.}:" && cd $subdir && /usr/bin/make  $local_target) \   || eval $failcom; \ done; \ if test "$dot_seen" = "no"; then \   /usr/bin/make  "$target-am" || exit 1; \ fi; test -z "$fail"
tkloczko 3774333  0.0  0.0   2964  2260 pts/5    S+   23:15   0:00  |                                   |                   \_ /usr/bin/make check
tkloczko 3774334  0.0  0.0   3960  3072 pts/5    S+   23:15   0:00  |                                   |                       \_ /bin/sh -c fail=; \ if (target_option=k; case ${target_option-} in ?) ;; *) echo "am__make_running_with_option: internal error: invalid" "target option '${target_option-}' specified" >&2; exit 1;; esac; has_opt=no; sane_makeflags=$MAKEFLAGS; if { if test -z '1'; then false; elif test -n 'x86_64-redhat-linux-gnu'; then true; elif test -n '4.4.0.90' && test -n '/home/tkloczko/rpmbuild/BUILD/nbd-3.24/tests'; then true; else false; fi; }; then sane_makeflags=$MFLAGS; else case $MAKEFLAGS in *\\[\ \?]*) bs=\\; sane_makeflags=`printf '%s\n' "$MAKEFLAGS" | sed "s/$bs$bs[$bs $bs?]*//g"`;; esac; fi; skip_next=no; strip_trailopt () { flg=`printf '%s\n' "$flg" | sed "s/$1.*$//"`; }; for flg in $sane_makeflags; do test $skip_next = yes && { skip_next=no; continue; }; case $flg in *=*|--*) continue;; -*I) strip_trailopt 'I'; skip_next=yes;; -*I?*) strip_trailopt 'I';; -*O) strip_trailopt 'O'; skip_next=yes;; -*O?*) strip_trailopt 'O';; -*l) strip_trailopt 'l'; skip_next=yes;; -*l?*) strip_trailopt 'l';; -[dEDm]) skip_next=yes;; -[JT]) skip_next=yes;; esac; case $flg in *$target_option*) has_opt=yes; break;; esac; done; test $has_opt = yes); then \   failcom='fail=yes'; \ else \   failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo check-recursive | sed s/-recursive//`; \ case "check-recursive" in \   distclean-* | maintainer-clean-*) list='parse code run' ;; \   *) list='parse code run' ;; \ esac; \ for subdir in $list; do \   echo "Making $target in $subdir"; \   if test "$subdir" = "."; then \     dot_seen=yes; \     local_target="$target-am"; \   else \     local_target="$target"; \   fi; \   (CDPATH="${ZSH_VERSION+.}:" && cd $subdir && /usr/bin/make  $local_target) \   || eval $failcom; \ done; \ if test "$dot_seen" = "no"; then \   /usr/bin/make  "$target-am" || exit 1; \ fi; test -z "$fail"
tkloczko 3774921  0.0  0.0   2936  2284 pts/5    S+   23:15   0:00  |                                   |                           \_ /usr/bin/make check
tkloczko 3774997  0.0  0.0   2940  2372 pts/5    S+   23:15   0:00  |                                   |                               \_ /usr/bin/make check-TESTS
tkloczko 3774998  0.0  0.0   4096  3128 pts/5    S+   23:15   0:00  |                                   |                                   \_ /bin/sh -c failed=0; all=0; xfail=0; xpass=0; skip=0; \ srcdir=.; export srcdir; \ list=' cfg1 cfgmulti cfgnew cfgsize write flush integrity dirconfig list inetd rowrite tree rotree unix integrityhuge handshake tls tlswrongcert tlshuge '; \ { mgn= red= grn= lgn= blu= brg= std=; am__color_tests=no; if test "X" = Xno; then am__color_tests=no; elif test "X" = Xalways; then am__color_tests=yes; elif test "X$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then am__color_tests=yes; fi; if test $am__color_tests = yes; then red='?[0;31m'; grn='?[0;32m'; lgn='?[1;32m'; blu='?[1;34m'; mgn='?[0;35m'; brg='?[1m'; std='?[m'; fi; }; \ if test -n "$list"; then \   for tst in $list; do \     if test -f ./$tst; then dir=./; \     elif test -f $tst; then dir=; \     else dir="./"; fi; \     if ./simple_test ${dir}$tst ; then \       all=`expr $all + 1`; \       case "  " in \       *[\ \?]$tst[\ \?]*) \ ?xpass=`expr $xpass + 1`; \ ?failed=`expr $failed + 1`; \ ?col=$red; res=XPASS; \       ;; \       *) \ ?col=$grn; res=PASS; \       ;; \       esac; \     elif test $? -ne 77; then \       all=`expr $all + 1`; \       case "  " in \       *[\ \?]$tst[\ \?]*) \ ?xfail=`expr $xfail + 1`; \ ?col=$lgn; res=XFAIL; \       ;; \       *) \ ?failed=`expr $failed + 1`; \ ?col=$red; res=FAIL; \       ;; \       esac; \     else \       skip=`expr $skip + 1`; \       col=$blu; res=SKIP; \     fi; \     echo "${col}$res${std}: $tst"; \   done; \   if test "$all" -eq 1; then \     tests="test"; \     All=""; \   else \     tests="tests"; \     All="All "; \   fi; \   if test "$failed" -eq 0; then \     if test "$xfail" -eq 0; then \       banner="$All$all $tests passed"; \     else \       if test "$xfail" -eq 1; then failures=failure; else failures=failures; fi; \       banner="$All$all $tests behaved as expected ($xfail expected $failures)"; \     fi; \   else \     if test "$xpass" -eq 0; then \       banner="$failed of $all $tests failed"; \     else \       if test "$xpass" -eq 1; then passes=pass; else passes=passes; fi; \       banner="$failed of $all $tests did not behave as expected ($xpass unexpected $passes)"; \     fi; \   fi; \   dashes="$banner"; \   skipped=""; \   if test "$skip" -ne 0; then \     if test "$skip" -eq 1; then \       skipped="($skip test was not run)"; \     else \       skipped="($skip tests were not run)"; \     fi; \     test `echo "$skipped" | wc -c` -le `echo "$banner" | wc -c` || \       dashes="$skipped"; \   fi; \   report=""; \   if test "$failed" -ne 0 && test -n "nbd@other.debian.org"; then \     report="Please report to nbd@other.debian.org"; \     test `echo "$report" | wc -c` -le `echo "$banner" | wc -c` || \       dashes="$report"; \   fi; \   dashes=`echo "$dashes" | sed s/./=/g`; \   if test "$failed" -eq 0; then \     col="$grn"; \   else \     col="$red"; \   fi; \   echo "${col}$dashes${std}"; \   echo "${col}$banner${std}"; \   test -z "$skipped" || echo "${col}$skipped${std}"; \   test -z "$report" || echo "${col}$report${std}"; \   echo "${col}$dashes${std}"; \   test "$failed" -eq 0; \ else :; fi
tkloczko 3774999  0.0  0.0   4092  3184 pts/5    S+   23:15   0:00  |                                   |                                       \_ /bin/sh ./simple_test ./cfg1
tkloczko 3775022 99.7  0.0  13648  4380 pts/5    R+   23:16  35:58  |                                   |                                           \_ ./nbd-tester-client -N export 127.0.0.1

Please let me know what I try to do to diagnose that issue.

yoe commented 1 year ago

My suspicion is that this might be related to the cwrap stuff that we added earlier. It might be wrong, though. Could you check if it is reproducible with current git HEAD?

kloczek commented 1 year ago

How can I try to diagnose that? 🤔

kloczek commented 1 year ago

OK one sec ..

kloczek commented 1 year ago

autoreconf fails

+ cd nbd-nbd-3.24
+ autoreconf -fiv
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I support
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'support'.
libtoolize: copying file 'support/libtool.m4'
libtoolize: copying file 'support/ltoptions.m4'
libtoolize: copying file 'support/ltsugar.m4'
libtoolize: copying file 'support/ltversion.m4'
libtoolize: copying file 'support/lt~obsolete.m4'
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: aclocal --force -I support
autoreconf: running: /usr/bin/autoconf --force
configure.ac:103: warning: AC_PROG_LEX without either yywrap or noyywrap is obsolete
./lib/autoconf/programs.m4:716: _AC_PROG_LEX is expanded from...
./lib/autoconf/programs.m4:709: AC_PROG_LEX is expanded from...
aclocal.m4:1077: AM_PROG_LEX is expanded from...
configure.ac:103: the top level
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:18: installing './compile'
configure.ac:18: installing './config.guess'
configure.ac:18: installing './config.sub'
configure.ac:14: installing './install-sh'
configure.ac:14: installing './missing'
Makefile.am: installing './depcomp'
configure.ac: installing './ylwrap'
configure.ac:351: error: required file 'man/nbd-client.8.sh.in' not found
configure.ac:351: error: required file 'man/nbd-server.5.sh.in' not found
configure.ac:351: error: required file 'man/nbd-server.1.sh.in' not found
configure.ac:351: error: required file 'man/nbd-trdump.1.sh.in' not found
configure.ac:351: error: required file 'man/nbd-trplay.1.sh.in' not found
configure.ac:351: error: required file 'man/nbdtab.5.sh.in' not found
tests/run/Makefile.am:6: error: CWRAP does not appear in AM_CONDITIONAL
autoreconf: error: automake failed with exit status: 1
yoe commented 1 year ago

You need to run autogen.sh to generate those files, as explained in the README file.

However, I've done a release off git master in the mean time. Can you try if 3.25 works?

yoe commented 1 year ago

Actually, come to think of this, this could also be related to #146. Which version of glib are you using?

kloczek commented 1 year ago

Latest 2.76.2.

yoe commented 1 year ago

Yes, then it is that other issue, which is fixed in 3.25, so I'm going to close this one now.

If you can still reproduce with 3.25, feel free to reopen. Otherwise, just switch to that version.