[GHC] #7361: Segmentation fault on 5f37e0c71ff4af8539c5aebc739b006b4f0c6ebf
GHC
cvs-ghc at haskell.org
Wed Jan 9 16:50:32 CET 2013
#7361: Segmentation fault on 5f37e0c71ff4af8539c5aebc739b006b4f0c6ebf
---------------------------------+------------------------------------------
Reporter: bgamari | Owner: simonmar
Type: bug | Status: infoneeded
Priority: highest | Milestone: 7.8.1
Component: Compiler | Version: 7.7
Keywords: | Os: Unknown/Multiple
Architecture: Unknown/Multiple | Failure: Runtime crash
Difficulty: Unknown | Testcase:
Blockedby: | Blocking:
Related: |
---------------------------------+------------------------------------------
Comment(by bgamari):
Well, it seems that `nextIndex` isn't wrapping correctly when used in
`uniformWord32`. Currently it is implemented as,
{{{
nextIndex :: Integral a => a -> Int
nextIndex i = fromIntegral j
where j = fromIntegral (i+1) :: Word8
}}}
If I trace the index values over iterations of `uniformWord32`, I find
that they grow beyond 256, resulting in the crash.
If I implement `nextIndex` with a simple `mod`, on the other hand, things
work fine,
{{{
nextIndex :: Integral a => a -> Int
nextIndex i = fromIntegral $ (i + 1) `mod` 256
}}}
Simon, is it possible that the optimizer could be now optimizing out the
cast?
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7361#comment:29>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the Glasgow-haskell-bugs
mailing list