diff options
author | Pádraig Brady <P@draigBrady.com> | 2012-01-04 23:33:20 +0000 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2012-01-05 15:12:16 +0000 |
commit | 512662fb30c448ee6564050cfe45e6b865c1f435 (patch) | |
tree | 5c3bca6b60770e28cc615a1a3235d6268276f4bb /tests/misc | |
parent | 101a30a2a0f726ad0d4c4541b4e77eab3a1b7aa7 (diff) | |
download | coreutils-512662fb30c448ee6564050cfe45e6b865c1f435.tar.xz |
tests: avoid a false positive due to overflow on Linux/HPPA
* tests/misc/timeout-parameters: Verify that the timer doesn't
fire immediately in the problematic range, and avoid overflow
checks in that case.
* man/timeout.x: Mention the possible bug.
Reported by Bruno Haible
Diffstat (limited to 'tests/misc')
-rwxr-xr-x | tests/misc/timeout-parameters | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/tests/misc/timeout-parameters b/tests/misc/timeout-parameters index fa380d74b..c7d663092 100755 --- a/tests/misc/timeout-parameters +++ b/tests/misc/timeout-parameters @@ -35,26 +35,33 @@ test $? = 125 || fail=1 timeout 42D sleep 0 test $? = 125 || fail=1 -# timeout overflow -timeout $UINT_OFLOW sleep 0 -test $? = 0 || fail=1 - -# timeout overflow -timeout $(expr $UINT_MAX / 86400 + 1)d sleep 0 -test $? = 0 || fail=1 - -# timeout overflow -timeout 999999999999999999999999999999999999999999999999999999999999d sleep 0 -test $? = 0 || fail=1 +# It was seen on 32 bit Linux/HPPA that a kernel time_t overflowed, +# thus causing the timer to fire immediately. +# So verify that doesn't happen before checking large timeouts +KERNEL_OVERFLOW_LIMIT=$(expr $TIME_T_MAX - $(date +%s) + 100) +timeout $KERNEL_OVERFLOW_LIMIT sleep 0 +if test $? != 124; then + # timeout overflow + timeout $UINT_OFLOW sleep 0 + test $? = 0 || fail=1 + + # timeout overflow + timeout $(expr $UINT_MAX / 86400 + 1)d sleep 0 + test $? = 0 || fail=1 + + # timeout overflow + timeout 999999999999999999999999999999999999999999999999999999999999d sleep 0 + test $? = 0 || fail=1 + + # floating point notation + timeout 2.34e+5d sleep 0 + test $? = 0 || fail=1 +fi # floating point notation timeout 2.34 sleep 0 test $? = 0 || fail=1 -# floating point notation -timeout 2.34e+5d sleep 0 -test $? = 0 || fail=1 - # nanoseconds potentially supported timeout .999999999 sleep 0 || fail=1 |