#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