[GHC] #10031: coerce can cause compiler to loop

GHC ghc-devs at haskell.org
Tue Jan 27 11:24:41 UTC 2015


#10031: coerce can cause compiler to loop
-------------------------------------+-------------------------------------
        Reporter:  glguy             |                   Owner:  goldfire
            Type:  bug               |                  Status:  new
        Priority:  normal            |               Milestone:
       Component:  Compiler          |                 Version:  7.10.1-rc1
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:  x86_64
 Type of failure:  Compile-time      |  (amd64)
  crash                              |               Test Case:
      Blocked By:                    |                Blocking:
 Related Tickets:                    |  Differential Revisions:
-------------------------------------+-------------------------------------

Comment (by nomeata):

 Confirmed with GHC HEAD.

 Here is the repeating tail of `-ddump-tc-trace` (not sure if it is useful)

 {{{
 updWorkList
   WL {Eqs = [G] cobox_am7 :: Coercible
                                b_am6[sk] a_am5[sk] (CTyEqCan)}
 Start solver pipeline {
   work item =  [G] cobox_am7 :: Coercible
                                   b_am6[sk] a_am5[sk] (CTyEqCan)
   inerts    =  Equalities: [G] cobox_amr :: Coercible
                                               b_amq[sk] a_amp[sk]
 (CTyEqCan)
                Type-function equalities:
                Dictionaries:
                Irreds:
                Insolubles = {}
                Solved dicts
 runStage canonicalization {
   workitem   =  [G] cobox_am7 :: Coercible
                                    b_am6[sk] a_am5[sk] (CTyEqCan)
 canEqTyVar
   b_am6[sk]
   a_am5[sk]
   Not-swapped
 flattenTyVar1
   a_am5[sk]
   *
 canEqTyVar flat LHS
   b_am6[sk]
   b_am6[sk]
   a_am5[sk]
   Not-swapped
   a_am5[sk]
 end stage canonicalization }
 runStage interact with inerts {
   workitem   =  [G] cobox_am7 :: Coercible
                                    b_am6[sk] a_am5[sk] (CTyEqCan)
 Can't solve tyvar equality
   LHS: b_am6[sk] :: *
   RHS: a_am5[sk] :: *
   TcLevel = 3
 Kick out, tv = b_am6[sk]
   n-kicked = 1
   n-kept fun-eqs = 0
   WL {Eqs = [G] cobox_amr :: Coercible
                                b_amq[sk] a_amp[sk] (CTyEqCan)}
 end stage interact with inerts }
 1832[U:3<C:0,F:0>] Kept as inert (1 kicked out):
     [G] cobox_am7 :: Coercible b_am6[sk] a_am5[sk]
 End solver pipeline (discharged) }
   inerts = Equalities: [G] cobox_am7 :: Coercible
                                           b_am6[sk] a_am5[sk] (CTyEqCan)
            Type-function equalities:
            Dictionaries:
            Irreds:
            Insolubles = {}
            Solved dicts
 updWorkList
   WL {Eqs = [G] cobox_amr :: Coercible
                                b_amq[sk] a_amp[sk] (CTyEqCan)}
 }}}

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


More information about the ghc-tickets mailing list