[Haskell-cafe] Timeout exceptions sometimes don't work, even in pure (non FFI) code
job.vranish at gmail.com
Tue Feb 1 16:40:43 CET 2011
I'm trying to test some properties with quickcheck. If these tests fail,
they will almost certainly fail by nontermination.
I've been using the 'within' function to catch these nontermination cases.
However, I was surprised to find that this doesn't always work.
'within' uses the 'timeout' function under the hood. Here is an example that
demonstrates the problem:
works :: Int -> Int
works x = sum $ cycle [x]
doesntWork :: Int -> Int
doesntWork x = last $ cycle [x]
test1 = timeout 1 $ evaluate $ works 5 == 5 -- terminates
test2 = timeout 1 $ evaluate $ doesntWork 5 == 5 -- never terminates
test1 returns Nothing as expected, but test2 never terminates. Why?
I thought timeout exceptions are supposed to always work with pure (non FFI)
Is there any way I can work around this?
I'm using ghc 6.12.2
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe