>From c17f88d53d9e70c22643e8554b639093bbdac6b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A1draig=20Brady?= Date: Wed, 4 Jan 2012 23:33:20 +0000 Subject: [PATCH] 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. Reported by Bruno Haible --- tests/misc/timeout-parameters | 29 ++++++++++++++++++----------- 1 files changed, 18 insertions(+), 11 deletions(-) diff --git a/tests/misc/timeout-parameters b/tests/misc/timeout-parameters index fa380d7..fd796ad 100755 --- a/tests/misc/timeout-parameters +++ b/tests/misc/timeout-parameters @@ -35,17 +35,24 @@ 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 trying overflow checks +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 +fi # floating point notation timeout 2.34 sleep 0 -- 1.7.6.4