Subject: bug#13185: Test case 'misc/timeout-group' failed

From: Pádraig Brady <[email-masked]>
Date: Tue, 18 Dec 2012 00:48:07 +0000

On 12/14/2012 05:34 PM, Stefano Lattarini wrote:
> On 12/14/2012 06:28 PM, Stefano Lattarini wrote:
>> While running the coreutils testsuite on my oldish Debian desktop with
>> a somewhat heavy load and several bleeding-edge tools in PATH, I've
>> encountered this failure in the 'tests/misc/timeout-group.sh' test.
>>
>> [SNIP]
>>
> I've re-run the test few times with the system no longer loaded, and
> it passed.  I he re-run it one more time with the system under some
> load again, and this time the test was skipped!
>
>      timeout-group.sh: skipped test: timeout returned 142. SIGALRM not handled?
>      SKIP: tests/misc/timeout-group.sh
>
> The detailed log of the skip is here below.
>
> HTH,
>    Stefano
>
> -*-*-
>
> ++ initial_cwd_=/devel/bleeding/src/coreutils
> ++ fail=0
> +++ testdir_prefix_
> +++ printf gt
> ++ pfx_=gt
> +++ mktempd_ /devel/bleeding/src/coreutils gt-timeout-group.sh.XXXX
> +++ case $# in
> +++ destdir_=/devel/bleeding/src/coreutils
> +++ template_=gt-timeout-group.sh.XXXX
> +++ MAX_TRIES_=4
> +++ case $destdir_ in
> +++ case $template_ in
> ++++ unset TMPDIR
> +++ d=/devel/bleeding/src/coreutils/gt-timeout-group.sh.6KTf
> +++ case $d in
> +++ test -d /devel/bleeding/src/coreutils/gt-timeout-group.sh.6KTf
> ++++ ls -dgo /devel/bleeding/src/coreutils/gt-timeout-group.sh.6KTf
> ++++ tr S -
> +++ perms='drwx------ 2 4096 Dec 14 18:30 /devel/bleeding/src/coreutils/gt-timeout-group.sh.6KTf'
> +++ case $perms in
> +++ test 0 = 0
> +++ echo /devel/bleeding/src/coreutils/gt-timeout-group.sh.6KTf
> +++ return
> ++ test_dir_=/devel/bleeding/src/coreutils/gt-timeout-group.sh.6KTf
> ++ cd /devel/bleeding/src/coreutils/gt-timeout-group.sh.6KTf
> ++ gl_init_sh_nl_='
> '
> ++ IFS=' 	
> '
> ++ for sig_ in 1 2 3 13 15
> +++ expr 1 + 128
> ++ eval 'trap '\''Exit 129'\'' 1'
> +++ trap 'Exit 129' 1
> ++ for sig_ in 1 2 3 13 15
> +++ expr 2 + 128
> ++ eval 'trap '\''Exit 130'\'' 2'
> +++ trap 'Exit 130' 2
> ++ for sig_ in 1 2 3 13 15
> +++ expr 3 + 128
> ++ eval 'trap '\''Exit 131'\'' 3'
> +++ trap 'Exit 131' 3
> ++ for sig_ in 1 2 3 13 15
> +++ expr 13 + 128
> ++ eval 'trap '\''Exit 141'\'' 13'
> +++ trap 'Exit 141' 13
> ++ for sig_ in 1 2 3 13 15
> +++ expr 15 + 128
> ++ eval 'trap '\''Exit 143'\'' 15'
> +++ trap 'Exit 143' 15
> ++ trap remove_tmp_ 0
> + path_prepend_ ./src
> + test 1 '!=' 0
> + path_dir_=./src
> + case $path_dir_ in
> + abs_path_dir_=/devel/bleeding/src/coreutils/./src
> + case $abs_path_dir_ in
> + PATH=/devel/bleeding/src/coreutils/./src:/devel/bleeding/src/coreutils/src:/usr/local/bleeding/bin:/usr/local/bleeding/sbin:/home/stefano/bin/local:/home/stefano/bin:/usr/local/bin:/opt/bin:/usr/lib/jvm/java-6-sun-1.6.0.26/bin:/usr/games:/usr/bin:/usr/sbin:/bin:/sbin
> + create_exe_shims_ /devel/bleeding/src/coreutils/./src
> + case $EXEEXT in
> + return 0
> + shift
> + test 0 '!=' 0
> + export PATH
> + print_ver_ timeout
> + test yes = yes
> + local i
> + for i in '$*'
> + env timeout --version
> timeout (GNU coreutils) 8.20.63-4f62d
> Copyright (C) 2012 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.
>
> Written by Padraig Brady.
> + setsid true
> + cat
> + chmod a+x timeout.cmd
> + cat
> + chmod a+x group.sh
> + setsid ./group.sh
> + retry_delay_ check_timeout_cmd_running .1 6
> + local test_func=check_timeout_cmd_running
> + local init_delay=.1
> + local max_n_tries=6
> + local attempt=1
> + local num_sleeps=1
> + local time_fail
> + test 1 -le 6
> ++ gawk -v n=1 -v s=.1 'BEGIN { print s * n }'
> + local delay=0.1
> + check_timeout_cmd_running 0.1
> + local delay=0.1
> + test -e timeout.running
> + sleep 0.1
> + return 1
> + time_fail=1
> ++ expr 1 + 1
> + attempt=2
> ++ expr 1 '*' 2
> + num_sleeps=2
> + test 2 -le 6
> ++ gawk -v n=2 -v s=.1 'BEGIN { print s * n }'
> + local delay=0.2
> + check_timeout_cmd_running 0.2
> + local delay=0.2
> + test -e timeout.running
> + time_fail=0
> + break
> + test 0 = 0
> + env kill -INT -- -3744
> + wait
> + test -e int.received
> + rm -f int.received timeout.running
> ++ date +%s
> + start=1355506235
> + pid=3779
> + retry_delay_ check_timeout_cmd_running .1 6
> + local test_func=check_timeout_cmd_running
> + local init_delay=.1
> + local max_n_tries=6
> + local attempt=1
> + local num_sleeps=1
> + local time_fail
> + test 1 -le 6
> ++ gawk -v n=1 -v s=.1 'BEGIN { print s * n }'
> + timeout -sALRM 30 timeout -sINT 25 ./timeout.cmd 20
> + local delay=0.1
> + check_timeout_cmd_running 0.1
> + local delay=0.1
> + test -e timeout.running
> + time_fail=0
> + break
> + test 0 = 0
> + kill -ALRM 3779
> + wait 3779
> + ret=142
> + test 142 -eq 124
> + skip_ 'timeout returned 142. SIGALRM not handled?'
> + warn_ 'timeout-group.sh: skipped test: timeout returned 142. SIGALRM not handled?'
> + case $IFS in
> + printf '%s\n' 'timeout-group.sh: skipped test: timeout returned 142. SIGALRM not handled?'
> timeout-group.sh: skipped test: timeout returned 142. SIGALRM not handled?
> + test 9 = 2
> + printf '%s\n' 'timeout-group.sh: skipped test: timeout returned 142. SIGALRM not handled?'
> + sed 1q
> + Exit 77
> + set +e
> + exit 77
> + exit 77
> + remove_tmp_
> + __st=77
> + cleanup_
> + :
> + cd /devel/bleeding/src/coreutils
> + chmod -R u+rwx /devel/bleeding/src/coreutils/gt-timeout-group.sh.6KTf
> + rm -rf /devel/bleeding/src/coreutils/gt-timeout-group.sh.6KTf
> + exit 77

So the skip was on purpose and to avoid signal propagation issues seen
on some older systems:
http://git.sv.gnu.org/gitweb/?p=coreutils.git;a=commit;h=v8.14-30-g6603e37

This initial failure is worrying, though may be a false positive
due to your shell or something. What versions of dash, bash, kernel
do you have there? I can't reproduce at all here with any
shell, though you might have older versions.

What is your system /bin/sh, dash or bash?
Note you can force a particular SHELL as follows,
and it would be interesting to see if the issue affected all shells.

make check TESTS='tests/misc/timeout-group.sh' SUBDIRS=. VERBOSE=yes SHELL=bash

Hopefully we can come up with a skip for this case too.

thanks,
Pádraig.