[GHC] #8037: GHC panic when compiling unsafeCoerce
GHC
ghc-devs at haskell.org
Thu Jul 4 11:31:52 CEST 2013
#8037: GHC panic when compiling unsafeCoerce
---------------------------+------------------------------------------------
Reporter: ghc@… | Owner:
Type: bug | Status: new
Priority: normal | Component: Compiler
Version: 7.6.1 | Keywords:
Os: MacOS X | Architecture: Unknown/Multiple
Failure: None/Unknown | Blockedby:
Blocking: | Related:
---------------------------+------------------------------------------------
The GHC compiler crashes on the following program.
{{{
module Test where
import Unsafe.Coerce
import Graphics.Rendering.OpenGL (color, Color3, GLdouble)
data D4 = D4 Double Double Double Double
crash :: D4 -> IO ()
crash c = color (invalidCast c)
invalidCast :: D4 -> Color3 GLdouble
invalidCast = unsafeCoerce
}}}
With the following output:
{{{
[1 of 1] Compiling Test ( Test.hs, Test.o )
ghc: panic! (the 'impossible' happened)
(GHC version 7.6.1 for x86_64-apple-darwin):
cgLookupPanic (probably invalid Core; try -dcore-lint)
ww_s28U{v} [lid]
static binds for:
local binds for:
}}}
I've made several attempts to make the input program smaller, but all
modifications will result in successful compilation.
The cast is invalid but should produce an runtime error, not a compile
time error.
Changes I made that somehow prevent this bug from appearing:
- Changing the `crash` functions into point free style `color .
invalidCast`.
- Decreasing the amount of doubles in the `D4` datatype.
- Inlining the exact definitions from the OpenGL package.
- Using the `print` function instead of the `color` function.
(btw, I know I shouldn't use unsafeCoerce)
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/8037>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list