#5441: unsafeCoerce'ing function to GHC.Prim.Any causes segfault
---------------------------------+------------------------------------------
Reporter: ulfn | Owner: simonmar
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.2.1
Keywords: | Testcase:
Blockedby: | Difficulty:
Os: Unknown/Multiple | Blocking:
Architecture: x86 | Failure: Runtime crash
---------------------------------+------------------------------------------
Comment(by simonmar):
Compiling this with a DEBUG 7.3.today gives a ton of warnings from
`CoreArity` and an ASSERT failure in `CoreToStg`, so clearly something is
wrong:
{{{
[1 of 2] Compiling Any ( Any.hs, Any.o )
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 60 0}]
lvl_shA =
\ (d_aec :: Any.Nat) ->
Any.look
(Any.inject base_aed d_aec) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (Nth: 1
(<Any.Nat -> GHC.Base.String>
-> UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any)
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 60 0}]
lvl_shA =
\ (d_aec :: Any.Nat) ->
Any.look
(Any.inject base_aed d_aec) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 60 0}]
lvl_shA =
\ (d_aec :: Any.Nat) ->
Any.look
(Any.inject base_aed d_aec) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 60 0}]
lvl_shA =
\ (d_aec :: Any.Nat) ->
Any.look
(Any.inject base_aed d_aec) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/simplCore/SimplCore.lhs line 574
Simplifier baling out after 4 iterations [30, 1, 1, 1] Size = 110
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 60 0}]
lvl_shA =
\ (d_aec :: Any.Nat) ->
Any.look
(Any.inject base_aed d_aec) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 60 0}]
lvl_shA =
\ (d_aec :: Any.Nat) ->
Any.look
(Any.inject base_aed d_aec) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 60 0}]
lvl_shA =
\ (d_aec :: Any.Nat) ->
Any.look
(Any.inject base_aed d_aec) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 60 0}]
lvl_shA =
\ (d_aec :: Any.Nat) ->
Any.look
(Any.inject base_aed d_aec) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/simplCore/SimplCore.lhs line 574
Simplifier baling out after 4 iterations [1, 1, 1, 1] Size = 110
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 60 0}]
lvl_shA =
\ (d_aec :: Any.Nat) ->
Any.look
(Any.inject base_aed d_aec) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 60 0}]
lvl_shA =
\ (d_aec :: Any.Nat) ->
Any.look
(Any.inject base_aed d_aec) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 60 0}]
lvl_shA =
\ (d_aec :: Any.Nat) ->
Any.look
(Any.inject base_aed d_aec) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 60 0}]
lvl_shA =
\ (d_aec :: Any.Nat) ->
Any.look
(Any.inject base_aed d_aec) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/simplCore/SimplCore.lhs line 574
Simplifier baling out after 4 iterations [1, 1, 1, 1] Size = 110
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
$wlvl_shT :: Any.Nat -> GHC.Prim.Char#
[LclId,
Arity=1,
Str=DmdType S,
Unf=Unf{Src=<vanilla>, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 70 0}]
$wlvl_shT =
\ (w_shO :: Any.Nat) ->
case Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @ GHC.Types.Char)
of _ { GHC.Types.C# ww_shR ->
ww_shR
} } in
let {
lvl_shA [InlPrag=INLINE[0]] :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Str=DmdType Sm,
Unf=Unf{Src=Worker=$wlvl_shT, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
Tmpl= \ (w_shO [Occ=Once] :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @
GHC.Types.Char)}]
lvl_shA =
\ (w_shO :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA [InlPrag=INLINE[0]] :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Str=DmdType Sm,
Unf=Unf{Src=InlineStable, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
Tmpl= \ (w_shO [Occ=Once] :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @
GHC.Types.Char)}]
lvl_shA =
\ (w_shO :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA [InlPrag=INLINE[0]] :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Str=DmdType Sm,
Unf=Unf{Src=InlineStable, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
Tmpl= \ (w_shO [Occ=Once] :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @
GHC.Types.Char)}]
lvl_shA =
\ (w_shO :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA [InlPrag=INLINE[0]] :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Str=DmdType Sm,
Unf=Unf{Src=InlineStable, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
Tmpl= \ (w_shO [Occ=Once] :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @
GHC.Types.Char)}]
lvl_shA =
\ (w_shO :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/simplCore/SimplCore.lhs line 574
Simplifier baling out after 4 iterations [15, 1, 1, 1] Size = 110
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA [InlPrag=INLINE[0]] :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Str=DmdType Sm,
Unf=Unf{Src=InlineStable, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
Tmpl= \ (w_shO [Occ=Once] :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @
GHC.Types.Char)}]
lvl_shA =
\ (w_shO :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA [InlPrag=INLINE[0]] :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Str=DmdType Sm,
Unf=Unf{Src=InlineStable, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
Tmpl= \ (w_shO [Occ=Once] :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @
GHC.Types.Char)}]
lvl_shA =
\ (w_shO :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA [InlPrag=INLINE[0]] :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Str=DmdType Sm,
Unf=Unf{Src=InlineStable, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
Tmpl= \ (w_shO [Occ=Once] :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @
GHC.Types.Char)}]
lvl_shA =
\ (w_shO :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
\ (base_aed :: Any.Nat) ->
let {
lvl_shA [InlPrag=INLINE[0]] :: Any.Nat -> GHC.Types.Char
[LclId,
Arity=1,
Str=DmdType Sm,
Unf=Unf{Src=InlineStable, TopLvl=False, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
Tmpl= \ (w_shO [Occ=Once] :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @
GHC.Types.Char)}]
lvl_shA =
\ (w_shO :: Any.Nat) ->
Any.look
(Any.inject base_aed w_shO) (GHC.Types.[] @ GHC.Types.Char) } in
(\ (n_aee :: Any.Nat) ->
Any.listmap
@ Any.Nat @ GHC.Types.Char lvl_shA (Any.toDigits base_aed n_aee))
`cast` (UnsafeCo (Any.Nat -> GHC.Base.String) GHC.Prim.Any
:: (Any.Nat -> GHC.Base.String) ~ GHC.Prim.Any)
WARNING: file compiler/simplCore/SimplCore.lhs line 574
Simplifier baling out after 4 iterations [1, 1, 1, 1] Size = 110
WARNING: file compiler/coreSyn/CoreArity.lhs line 779
1 GHC.Prim.Any
Any.showInBase Any.Z
ghc-stage3: panic! (the 'impossible' happened)
(GHC version 7.3.20110905 for x86_64-unknown-linux):
ASSERT failed! file compiler/stgSyn/CoreToStg.lhs line 244
main:Any.showNat1{v rhW} [gid]
Id arity: 1
STG arity: 0
}}}
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5441#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs