diff --git a/.github/workflows/linux_tests.yaml b/.github/workflows/linux_tests.yaml index 18b89a99b..b02bfd149 100644 --- a/.github/workflows/linux_tests.yaml +++ b/.github/workflows/linux_tests.yaml @@ -436,9 +436,9 @@ jobs: # libtclenvmodules build requirements sudo apt-get install -y gcc autoconf # manually install tcl9.1 - curl -L --output tcl9.1a1-src.tar.gz http://downloads.sourceforge.net/tcl/tcl9.1a1-src.tar.gz - tar xfz tcl9.1a1-src.tar.gz - cd tcl9.1a1/unix + curl -L --output tcl9.1b0-src.tar.gz http://downloads.sourceforge.net/tcl/tcl9.1b0-src.tar.gz + tar xfz tcl9.1b0-src.tar.gz + cd tcl9.1b0/unix ./configure make -j sudo make install diff --git a/testsuite/config/unix.exp b/testsuite/config/unix.exp index 58d04c1f8..c31571a21 100644 --- a/testsuite/config/unix.exp +++ b/testsuite/config/unix.exp @@ -29,6 +29,16 @@ # Tcl>=8.6): use channel pipe instead of saving these outputs in file if {[lindex [lsort -dictionary [list 8.6 [info tclversion]]] 1] eq [info tclversion]} { +# catch background errors, like a modulecmd process killed by a signal that +# makes readpipe raise an uncaught CHILDKILLED error from its event handler. +# without this catching procedure defined, such an error leaves the endpipe +# variable unset and the vwait call in modulecmd_xxx_ hangs forever +proc bgerror {msg} { + send_user "ERROR: background error caught: $msg\n" + # release ongoing command wait to make related test fail right away + set ::endpipe error +} + proc readpipe {p1 p2 varname {exit_varname {}}} { append ::$varname [read $p1] if {[eof $p1]} {