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

From: Stefano Lattarini <[email-masked]>
Date: Tue, 18 Dec 2012 14:36:38 +0100

On 12/18/2012 02:18 PM, Pádraig Brady wrote:
>
> I noticed a possible race in the test script.
> So I'll apply this soon.
> 
> thanks,
> Pádraig.
> 
> commit 09f72d285514a91495960ea3b0570251eed415b0
> Author: Pádraig Brady <[email-masked]>
> Date:   Tue Dec 18 13:06:15 2012 +0000
> 
>     tests: avoid a race in timeout-group.sh
> 
>     * tests/misc/timeout-group.sh: The kernel might possibly delay
>     signal propagation to timeout.cmd long enough, that it exits
>     normally without running the signal handler (as sleep will
>     be in the same process group and so get the signal too).
>     So avoid this by explicitly checking that the signal handler
>     is called, which should always happen under normal circumstances.
>     Reported by Stefano Lattarini on linux-2.6.30-2-686 and bash-4.2.36.
> 
> diff --git a/tests/misc/timeout-group.sh b/tests/misc/timeout-group.sh
> index 4cefc33..7117abb 100755
> --- a/tests/misc/timeout-group.sh
> +++ b/tests/misc/timeout-group.sh
> @@ -34,7 +34,11 @@ cat > timeout.cmd <<\EOF
>  #!/bin/sh
>  trap 'touch int.received; exit' INT
>  touch timeout.running
> -sleep $1
> +count=$1
> +until test -e int.received || test $count = 0; do
> +  sleep 1
> +  count=$(expr $count - 1)
> +done
>  EOF
>  chmod a+x timeout.cmd
> 
> 
Seems sensible to me.  Let's hope it works; I'll re-open this report
if I ever stumble into this problem again.

Thanks,
  Stefano