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 4cefc33..7117abb 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