[GHC] #7325: threadDelay mistreats minBound and maxBound in some configurations
GHC
ghc-devs at haskell.org
Sun Dec 18 01:01:51 UTC 2016
#7325: threadDelay mistreats minBound and maxBound in some configurations
-------------------------------------+-------------------------------------
Reporter: joeyadams | Owner:
Type: bug | Status: patch
Priority: high | Milestone: 8.2.1
Component: Runtime System | Version: 7.6.1
Resolution: | Keywords:
Operating System: Windows | Architecture:
| Unknown/Multiple
Type of failure: Incorrect result | Test Case:
at runtime | base/tests/T8089
Blocked By: | Blocking:
Related Tickets: #9722 | Differential Rev(s): Phab:D2861
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by Ben Gamari <ben@…>):
In [changeset:"2d1beb1ec84c2d22c6be83944ef4ea8626abd76a/ghc"
2d1beb1e/ghc]:
{{{
#!CommitTicketReference repository="ghc"
revision="2d1beb1ec84c2d22c6be83944ef4ea8626abd76a"
rts/win32/IOManager: Fix integer types
This code has been broken on 64-bit systems for some time: the length
and timeout arguments of `addIORequest` and `addDelayRequest`,
respectively, were declared as `int`. However, they were passed Haskell
integers from their respective primops. Integer overflow and madness
ensued. This resulted in #7325 and who knows what else.
Also, there were a few left-over `BOOL`s in here which were not passed
to Windows system calls; these were changed to C99 `bool`s.
However, there is still a bit of signedness inconsistency within the
`delay#` call-chain,
* `GHC.Conc.IO.threadDelay` and the `delay#` primop accept `Int`
arguments
* The `delay#` implementation in `PrimOps.cmm` expects the timeout as
a `W_`
* `AsyncIO.c:addDelayRequest` expects an `HsInt` (was `int` prior to
this patch)
* `IOManager.c:AddDelayRequest` expects an `HsInt`` (was `int`)
* The Windows `Sleep` function expects a `DWORD` (which is unsigned)
Test Plan: Validate on Windows
Reviewers: erikd, austin, simonmar, Phyx
Reviewed By: Phyx
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D2861
GHC Trac Issues: #7325
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/7325#comment:14>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list