[GHC] #13658: Assertion failure on HEAD: "optCoercion changed types!"

GHC ghc-devs at haskell.org
Sun May 7 02:12:59 UTC 2017


#13658: Assertion failure on HEAD: "optCoercion changed types!"
-------------------------------------+-------------------------------------
           Reporter:  bgamari        |             Owner:  (none)
               Type:  bug            |            Status:  new
           Priority:  high           |         Milestone:  8.2.1
          Component:  Compiler       |           Version:  8.3
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 I am seeing the following assertion failure on my `wip/libdw-prof` branch,

 {{{
 ghc-stage1: panic! (the 'impossible' happened)
   (GHC version 8.3.20170507 for x86_64-unknown-linux):
         ASSERT failed!
   optCoercion changed types!
   in_co:
     (base:Data.Typeable.Internal.TypeRep{tc 35W}
        (UnsafeCo nominal ghc-prim:GHC.Types.Any{(w) tc 35K} (ghc-
 prim:GHC.Types.Any{(w) tc 35K}
                                                              -> ghc-
 prim:GHC.Types.Any{(w) tc 35K}))
        (UnsafeCo nominal (ghc-prim:GHC.Types.Any{(w) tc 35K}
                             ghc-prim:GHC.Types.Any{(w) tc 35K}) ghc-
 prim:GHC.Types.Any{(w) tc 35K}))_R
   in_ty1:
     base:Data.Typeable.Internal.TypeRep{tc 35W}
       (ghc-prim:GHC.Types.Any{(w) tc 35K}
          ghc-prim:GHC.Types.Any{(w) tc 35K})
   in_ty2:
     base:Data.Typeable.Internal.TypeRep{tc 35W}
       ghc-prim:GHC.Types.Any{(w) tc 35K}
   out_co:
     (base:Data.Typeable.Internal.TypeRep{tc 35W}
        (UnsafeCo nominal ghc-prim:GHC.Types.Any{(w) tc 35K} (ghc-
 prim:GHC.Types.Any{(w) tc 35K}
                                                              -> ghc-
 prim:GHC.Types.Any{(w) tc 35K}))
        <ghc-prim:GHC.Types.Any{(w) tc 35K}>_N)_R
   out_ty1:
     base:Data.Typeable.Internal.TypeRep{tc 35W}
       ghc-prim:GHC.Types.Any{(w) tc 35K}
   out_ty2:
     base:Data.Typeable.Internal.TypeRep{tc 35W}
       ghc-prim:GHC.Types.Any{(w) tc 35K}
   subst:
     [TCvSubst
        In scope: InScope {wild_00{v}
                           base:Data.Typeable.Internal.mkTrCon{v 088}
                           base:Data.Typeable.Internal.mkTrApp{v 089}
                           base:Data.Typeable.Internal.typeNatTypeRep{v
 08a}
                           base:Data.Typeable.Internal.typeSymbolTypeRep{v
 08b}
                           base:Data.Typeable.Internal.mkTrFun{v 08d}
 wild_X3j{v} wild_X7E{v}
                           wild_X83{v} wild_Xf1{v} dt_X2TF{v} a{v X2UX}
 kind_vars{v X2V3}
                           kind_vars{v X32p} n{v a2Oo} a{v a2OX} b{v a2OY}
 tc{v a2Pw}
                           args{v a2Px} tc{v a2PH} args{v a2PI} kind_args{v
 a2PK}
                           ty_args{v a2PL} ty'{v a2PQ} dt_a2TG{v}
 dt_a2TH{v} k{tv a402}
                           a{tv a403} k{tv a43q} k{tv a43r} k{tv a43s} a{tv
 a43t}
                           $cshowsPrec{v a46O} $cshow{v a46Z} $cshowList{v
 a477}
                           $cshowsPrec{v a47h} $cshow{v a47n} $cshowList{v
 a47t}
                           $ccompare{v a47F} $c<{v a47X} $c<={v a485} $c>{v
 a48d} $c>={v a48l}
                           $cmax{v a48t} $cmin{v a48B} $c=={v a48J} $c/={v
 a48Z}
                           $ccompare{v a49d} $c<{v a49o} $c<={v a49u} $c>{v
 a49A} $c>={v a49G}
                           $cmax{v a49M} $cmin{v a49S} $ctestEquality{v
 a4a1} $c=={v a4as}
                           $c/={v a4aw} $krep_a4cI{v} $krep_a4cJ{v}
 $krep_a4cK{v}
                           $krep_a4cL{v} $krep_a4cM{v} $krep_a4cN{v}
 $krep_a4cO{v}
                           $krep_a4cP{v} $krep_a4cQ{v} $krep_a4cR{v}
 $krep_a4cS{v}
                           $krep_a4cT{v} $krep_a4cU{v} $krep_a4cV{v}
 $krep_a4cW{v}
                           $krep_a4cX{v} $krep_a4cY{v} $krep_a4cZ{v}
 $krep_a4d0{v}
                           $krep_a4d1{v} $krep_a4d2{v} $krep_a4d3{v}
 $krep_a4d4{v}
                           $krep_a4d5{v} $krep_a4d6{v} $krep_a4d7{v}
 $krep_a4d8{v}
                           $krep_a4d9{v} $krep_a4da{v} $krep_a4db{v}
 $krep_a4dc{v}
                           $krep_a4dd{v} $krep_a4de{v} $krep_a4df{v}
 $krep_a4dg{v}
                           $krep_a4dh{v} $krep_a4di{v} $krep_a4dj{v}
 $krep_a4dk{v}
                           $krep_a4dl{v} $krep_a4dm{v} $krep_a4dn{v}
 $krep_a4do{v}
                           $krep_a4dp{v} $krep_a4dq{v} $krep_a4dr{v}
 $krep_a4ds{v} go{v a54a}
                           wild{v a54c} y{v a54g} ys{v a54h} ds_d4tk{v}
 ds_d4tl{v} ds_d4tm{v}
                           ds_d4tn{v} ds_d4to{v} ds_d4tS{v} ds_d4vc{v}
 dt_d52H{v} dt_d52I{v}
                           base:Data.Typeable.Internal.modulePackage{v
 r2LC}
                           base:Data.Typeable.Internal.moduleName{v r2LD}
                           base:Data.Typeable.Internal.tyConPackage{v r2LE}
                           base:Data.Typeable.Internal.tyConModule{v r2LF}
                           base:Data.Typeable.Internal.tyConName{v r2LG}
                           base:Data.Typeable.Internal.trNameString{v r2LH}
                           base:Data.Typeable.Internal.tyConFingerprint{v
 r2LI}
                           base:Data.Typeable.Internal.tyConKindArgs{v
 r2LJ}
                           base:Data.Typeable.Internal.tyConKindRep{v r2LK}
                           base:Data.Typeable.Internal.rnfModule{v r2LL}
                           base:Data.Typeable.Internal.rnfTrName{v r2LM}
                           base:Data.Typeable.Internal.rnfKindRep{v r2LN}
                           base:Data.Typeable.Internal.rnfList{v r2LP}
                           base:Data.Typeable.Internal.rnfTyCon{v r2LR}
                           base:Data.Typeable.Internal.typeRepFingerprint{v
 r2LT}
                           base:Data.Typeable.Internal.withTypeable{v r2LU}
                           base:Data.Typeable.Internal.someTypeRepTyCon{v
 r2LV}
                           base:Data.Typeable.Internal.typeRepTyCon{v r2LW}
                           base:Data.Typeable.Internal.eqTypeRep{v r2LX}
                           base:Data.Typeable.Internal.typeRepKind{v r2LY}
                           base:Data.Typeable.Internal.runtimeRepTypeRep{v
 r2M6}
                           base:Data.Typeable.Internal.typeRep{v r2M9}
                           base:Data.Typeable.Internal.typeOf{v r2Ma}
                           base:Data.Typeable.Internal.someTypeRep{v r2Mb}
 base:Data.Typeable.Internal.someTypeRepFingerprint{v r2Mc}
                           base:Data.Typeable.Internal.splitApps{v r2Me}
                           base:Data.Typeable.Internal.funTyCon{v r2Mf}
                           base:Data.Typeable.Internal.rnfTypeRep{v r2Mj}
                           base:Data.Typeable.Internal.rnfSomeTypeRep{v
 r2Mk}
                           base:Data.Typeable.Internal.mkTyCon#{v r2Mm}
                           base:Data.Typeable.Internal.mkTyCon{v r2Mn}
                           base:Data.Typeable.Internal.mkTyConFingerprint{v
 r2Mo}
 base:Data.Typeable.Internal.mkTypeLitFromString{v r2Mq}
                           base:Data.Typeable.Internal.tcSymbol{v r2Mr}
                           base:Data.Typeable.Internal.tcNat{v r2Ms}
                           base:Data.Typeable.Internal.$tc'SomeTypeRep{v
 r2RW}
                           base:Data.Typeable.Internal.$tcSomeTypeRep{v
 r2Sy}
                           base:Data.Typeable.Internal.$tc'TrTyCon{v r2SA}
                           base:Data.Typeable.Internal.$tc'TrApp{v r2SO}
                           base:Data.Typeable.Internal.$tc'TrFun{v r2T2}
                           base:Data.Typeable.Internal.$tcTypeRep{v r2Tg}
                           base:Data.Typeable.Internal.$fShowSomeTypeRep{v
 r2Ug}
                           base:Data.Typeable.Internal.$fShowTypeRep{v
 r2Ul}
                           base:Data.Typeable.Internal.$fOrdSomeTypeRep{v
 r2UJ}
                           base:Data.Typeable.Internal.$fEqSomeTypeRep{v
 r2US}
                           base:Data.Typeable.Internal.$fOrdTypeRep{v r2UX}
 base:Data.Typeable.Internal.$fTestEqualitykTypeRep{v r2Vf}
                           base:Data.Typeable.Internal.$fEqTypeRep{v r2Vp}
 base:Data.Typeable.Internal.$tc'SomeKindedTypeRep{v r2VB}
 base:Data.Typeable.Internal.$tcSomeKindedTypeRep{v r2VW}
                           base:Data.Typeable.Internal.$tcTypeable{v r2Wg}
                           base:Data.Typeable.Internal.$tc'C:Typeable{v
 r2Wh}
                           base:Data.Typeable.Internal.$tc'Gift{v r2Wm}
                           base:Data.Typeable.Internal.$tcGift{v r2WP}
                           base:Data.Typeable.Internal.$mKindRepTypeLit{v
 r3DI}
                           base:Data.Typeable.Internal.$bKindRepTypeLit{v
 r3IP}
                           base:Data.Typeable.Internal.$mCon'{v r3LL}
                           base:Data.Typeable.Internal.$mCon{v r3Ns}
                           base:Data.Typeable.Internal.$mApp{v r3NA}
                           base:Data.Typeable.Internal.$bApp{v r3Oi}
                           base:Data.Typeable.Internal.$mFun{v r3Om}
                           base:Data.Typeable.Internal.$bFun{v r3Sq}
                           base:Data.Typeable.Internal.$trModule{v r43m}
 rnfString_s573{v}
                           typeOf_s5bk{v} $trModule_s5bF{v}
 $trModule_s5bH{v} $krep_s5bP{v}
                           $krep_s5bQ{v} $tcTypeRep_s5bR{v}
 $tcTypeRep_s5bS{v} $krep_s5bT{v}
                           $krep_s5bU{v} $krep_s5bV{v} $krep_s5bW{v}
 $krep_s5bX{v}
                           $krep_s5bY{v} $krep_s5bZ{v} $krep_s5c0{v}
 $tc'TrApp_s5c1{v}
                           $tc'TrApp_s5c2{v} $krep_s5c3{v} $krep_s5c4{v}
 $krep_s5c5{v}
                           $krep_s5c6{v} $krep_s5c7{v} $krep_s5c8{v}
 $tc'TrFun_s5c9{v}
                           $tc'TrFun_s5ca{v} $tcSomeTypeRep_s5cb{v}
 $tcSomeTypeRep_s5cc{v}
                           $tc'SomeTypeRep_s5cd{v} $tc'SomeTypeRep_s5ce{v}
 $krep_s5cg{v}
                           $tc'TrTyCon_s5ch{v} $tc'TrTyCon_s5ci{v}
                           $tcSomeKindedTypeRep_s5cj{v}
 $tcSomeKindedTypeRep_s5ck{v}
                           $krep_s5cl{v} $tc'SomeKindedTypeRep_s5cm{v}
                           $tc'SomeKindedTypeRep_s5cn{v}
 $tcTypeable_s5co{v}
                           $tcTypeable_s5cp{v} $tc'C:Typeable_s5cs{v}
 $tc'C:Typeable_s5ct{v}
                           $tcGift_s5cu{v} $tcGift_s5cv{v} $krep_s5cw{v}
 $krep_s5cx{v}
                           $krep_s5cy{v} $tc'Gift_s5cz{v} $tc'Gift_s5cA{v}
 $dTypeable_s5cC{v}
                           $dTypeable_s5cE{v} $dTypeable_s5cG{v}
 $dTypeable_s5cI{v}
                           $dTypeable_s5cK{v} $dTypeable_s5cM{v}
 $dTypeable_s5cO{v}
                           $dTypeable_s5cQ{v} $dTypeable_s5cS{v}
 $dTypeable_s5cU{v}
                           $dTypeable_s5cW{v} $dTypeable_s5cY{v}
 $dTypeable_s5d0{v}
                           $dTypeable_s5d1{v} $dTypeable_s5gz{v}
 $dTypeable_s5gB{v}
                           $dTypeable_s5gD{v} $dTypeable_s5gF{v}
 $dTypeable_s5gH{v}
                           $dTypeable_s5gJ{v} $dTypeable_s5gL{v}
 $dTypeable_s5gN{v}
                           $dTypeable_s5gP{v} $dTypeable_s5gR{v}
 $dTypeable_s5gT{v}
                           $dTypeable_s5gV{v} $dTypeable_s5gX{v}
 $dTypeable_s5gZ{v}
                           $dTypeable_s5h1{v} $dTypeable_s5h3{v} go{v s5pU}
 vars{v s5pY}
                           lvl_s5rC{v} lvl_s5rD{v} lvl_s5rG{v} lvl_s5rJ{v}
 lvl_s5rM{v}
                           lvl_s5rP{v} lvl_s5rR{v} lvl_s5rS{v} lvl_s5rT{v}
 lvl_s5rU{v}
                           lvl_s5rV{v} lvl_s5rY{v} $dTypeable_s5s2{v}
 lvl_s5s3{v} lvl_s5s6{v}
                           lvl_s5s7{v} lvl_s5sa{v} lvl_s5sb{v} lvl_s5sv{v}
 f_s5sz{v}
                           lvl_s5sC{v} lvl_s5sH{v} f_s5sL{v} lvl_s5sM{v}
 lvl_s5sN{v} g_s5sP{v}
                           lvl_s5sQ{v} f_s5sS{v} g_s5sU{v} lvl_s5sV{v}
 lvl_s5sW{v} lvl_s5sZ{v}
                           lvl_s5t9{v} modl{v s5tj} lvl_s5tk{v} lvl_s5tl{v}
 lvl_s5tm{v}
                           lvl_s5tv{v} lvl_s5tw{v} lvl_s5tx{v} lvl_s5tR{v}
 lvl_s5tS{v}
                           lvl_s5tT{v} lvl_s5u6{v} lvl_s5un{v} lvl_s5uo{v}
 lvl_s5up{v}
                           lvl_s5uq{v} lvl_s5ur{v} lvl_s5us{v} lvl_s5ut{v}
 lvl_s5uu{v}
                           lvl_s5uv{v} $dTypeable_s5uK{v} lvl_s5uU{v}
 lvl_s5v8{v} lvl_s5v9{v}
                           lvl_s5va{v} lvl_s5vb{v} lvl_s5vc{v} lvl_s5vg{v}
 lvl_s5wZ{v}
                           kind_vars_s5x2{v} lvl_s5xf{v} $j_s5Da{v}
 lvl_s5Mo{v} lvl_s5Mp{v}
                           lvl_s5Mq{v} lvl_s5Mr{v} lvl_s5Ms{v}
 kind_vars_s5MF{v}
                           kind_vars_s5MG{v} lvl_s5MI{v} modl_s5Nw{v}
 lvl_s5OE{v}
                           $wrnfModule{v s6s3} $wrnfTyCon{v s6sj} $wgo{v
 s6tn}
                           $wtypeSymbolTypeRep{v s6uf} lvl_s6Qv{v}
 lvl_s6Qw{v} lvl_s6Qx{v}
                           lvl_s6Qy{v} lvl_s6Qz{v} lvl_s6QA{v} lvl_s6QB{v}
 lvl_s6QC{v}
                           lvl_s6QD{v} lvl_s6QF{v} lvl_s6QG{v} lvl_s6QI{v}
 lvl_s6QJ{v}
                           lvl_s6QK{v} lvl_s6QL{v} lvl_s6QM{v} lvl_s6QN{v}
 lvl_s6QO{v}
                           lvl_s6QP{v} lvl_s6QQ{v} lvl_s6QR{v} lvl_s6QS{v}
 lvl_s6QT{v}
                           lvl_s6QU{v} lvl_s6QV{v} lvl_s6QW{v} lvl_s6QY{v}
 lvl_s6QZ{v}
                           lvl_s6R0{v} lvl_s6R1{v} lvl_s6R2{v} lvl_s6Rb{v}
 lvl_s6Rd{v}
                           lvl_s6Re{v} lvl_s6Rf{v} lvl_s6Rg{v} lvl_s6Rh{v}
 lvl_s6Ri{v}
                           lvl_s6Rj{v} lvl_s6Rk{v} lvl_s6Rl{v} lvl_s6Rm{v}
 lvl_s6Rn{v}
                           lvl_s6Ro{v} lvl_s6Rp{v} lvl_s6Rq{v} lvl_s6Rr{v}
 lvl_s6Rs{v}
                           lvl_s6Rt{v} lvl_s6Ru{v} lvl_s6Rv{v} lvl_s6Rw{v}
 lvl_s6Rx{v}
                           lvl_s6Ry{v} lvl_s6Rz{v} lvl_s6RA{v} lvl_s6RC{v}
 lvl_s6RD{v}
                           lvl_s6RE{v} lvl_s6RG{v} lvl_s6RL{v} lvl_s6RM{v}
 lvl_s6RN{v}
                           lvl_s6RO{v} lvl_s6RP{v} lvl_s6RQ{v} lvl_s6RR{v}
 lvl_s6RS{v}
                           lvl_s6RT{v} lvl_s6RU{v} lvl_s6RV{v} lvl_s6RW{v}
 lvl_s6RX{v}
                           lvl_s6RY{v} lvl_s6RZ{v} lvl_s6S0{v} lvl_s6S1{v}
 lvl_s6S2{v}
                           lvl_s6S3{v} lvl_s6S4{v} lvl_s6S5{v} lvl_s6S6{v}
 lvl_s6S7{v}
                           lvl_s6S8{v} lvl_s6S9{v} lvl_s6Sa{v} lvl_s6Sb{v}
 lvl_s6Sc{v}
                           lvl_s6Sd{v} lvl_s6Se{v} lvl_s6Sf{v} lvl_s6Sg{v}
 lvl_s6Sh{v}
                           lvl_s6Si{v} lvl_s6Sj{v} lvl_s6Sl{v} lvl_s6Sm{v}
 lvl_s6So{v}
                           lvl_s6Sp{v} lvl_s6Sr{v} lvl_s6Ss{v} lvl_s6Su{v}
 lvl_s6Sv{v}
                           lvl_s6Sx{v} lvl_s6Sy{v} lvl_s6SA{v} lvl_s6SB{v}
 lvl_s6SD{v}
                           lvl_s6SE{v} lvl_s6SG{v} lvl_s6SH{v} lvl_s6SJ{v}
 lvl_s6SK{v}
                           go{v s6SM} go{v s6SO} lvl_s6SR{v} wild_s6ST{v}
 ds_s6SU{v}
                           ds_s6SV{v} ds_s6SW{v} ds_s6SX{v} nKindVars#{v
 s6SY} kindRep{v s6SZ}
                           lvl_s6T8{v} lvl_s6Ta{v} $sgo{v s7lX} sc_s7lY{v}
 sc_s7lZ{v}
                           sc_s7m0{v} sc_s7m1{v} sc_s7m3{v} sc_s7m5{v}
 $sgo{v s7m6}
                           $s$wgo{v s7sR} $s$wgo{v s7sV} $stypeRepTyCon{v
 s7th}
                           $stypeRepTyCon{v s7ti} $stypeRepTyCon{v s7tj}
 $srnfList{v s7tW}}
        Type env: [a403 :-> (a{tv a403} [tv] :: (k{tv a402} [tv] :: *)),
                   a43r :-> (k1{tv a43r} [tv] :: (k{tv a43q} [tv] :: *)),
                   a43t :-> (a{tv a43t} [tv] :: (k{tv a43s} [tv] :: *))]
        Co env: []]
 }}}


 This is with the following `build.mk`,
 {{{#!makefile
 BuildFlavour = dwarf
 ifneq "$(BuildFlavour)" ""
 include mk/flavours/$(BuildFlavour).mk
 endif
 GhcStage2HcOpts += -eventlog
 STRIP_CMD = :
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13658>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list