[Haskell-cafe] threadDelay delays less time than expected (Windows)

Lian Hung Hon hon.lianhung at gmail.com
Wed Dec 28 14:20:50 UTC 2016

Dear Haskellers,

I am baffled by a strange bug (?) with threadDelay on Windows. It delays
for less time than expected (500 seconds vs expected 24 hours), and is
consistently reproducible on my system. Can someone have a look (need some
patience, ~8 minutes waiting), just to be sure? I glanced around trac but
didn't find any related issues.

How to reproduce:

module Main where

import Data.Time
import Control.Concurrent
import Control.Monad

main :: IO ()
main = do
  _ <- forkIO thread
  getLine >>= print  -- Just to keep the main thread running

thread :: IO ()
thread = forever $ do
  now <- getCurrentTime
  print now
  threadDelay 86400000000
  print "done waiting"

Expected result:
2016-12-28 13:07:49.5113098 UTC
(next timing should be the next day 2016-12-29)

Actual result:
2016-12-28 13:07:49.5113098 UTC
"done waiting"
2016-12-28 13:16:10.2159485 UTC
"done waiting"
2016-12-28 13:24:30.8735845 UTC
"done waiting"
2016-12-28 13:32:51.5292203 UTC

System: Windows 7 Enterprise Service Pack 1, ghc 7.10.3

This seems specific to Windows, it doesn't appear on Debian 8. Help is


Rant: It has cost me significant debugging time! Please tell me I made a
rookie mistake or misread the docs somewhere!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20161228/830d0d7e/attachment.html>

More information about the Haskell-Cafe mailing list