]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
tests: avoid a race in timeout-group.sh
authorPádraig Brady <P@draigBrady.com>
Tue, 18 Dec 2012 13:06:15 +0000 (13:06 +0000)
committerPádraig Brady <P@draigBrady.com>
Wed, 19 Dec 2012 11:32:07 +0000 (11:32 +0000)
* 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.

tests/misc/timeout-group.sh

index 4cefc33bf67d14a6eb6bfc76ea2b6023d4a6177d..7117abb5a503ad8bfa001d635a0b4e8be49b1eb9 100755 (executable)
@@ -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