[GHC] #9046: Panic in GHCi when using :print

GHC ghc-devs at haskell.org
Sun Jun 15 08:21:35 UTC 2014


#9046: Panic in GHCi when using :print
-------------------------------------+------------------------------------
        Reporter:  quchen            |            Owner:
            Type:  bug               |           Status:  new
        Priority:  normal            |        Milestone:  7.8.4
       Component:  GHCi              |          Version:  7.8.2
      Resolution:                    |         Keywords:
Operating System:  Unknown/Multiple  |     Architecture:  Unknown/Multiple
 Type of failure:  GHCi crash        |       Difficulty:  Unknown
       Test Case:                    |       Blocked By:
        Blocking:                    |  Related Tickets:
-------------------------------------+------------------------------------

Comment (by bravit):

 All right, removing of enclosing foralls during `:print` was intentional
 according to this commit:

 > In a8ac471d435214dbdc1fa70f938c63128993a1db/ghc:
 > Fix the deugger (fixing Trac #8557)
 >
 > The runtime debugger (which has not received any love from anyone
 > for many years) looks wrong to me; it was failing to instantiate the
 > outer foralls of a variable when called from :force, which calls
 > cvObtainTermFromId, which calls cvObtainTerm
 >
 > I simplified the code too.  But I'm flaky on how this debugger stuff
 > is really supposed to work, so I'm partly guessing.  Tests pass though.


 SPJ particularly wrote in `compiler/ghci/RtClosureInspect.hs`:
 {{{
 +-- Generalize the type: find all free and forall'd tyvars
  +-- and return them, together with the type inside, which
  +-- should not be a forall type.
 }}}

 So now it looks like typechecking issue with free bounded polymorphic
 tyvars: free type variable is built by `TyVar` constructor of `Var` and it
 stays the same during typechecking. In the presence of constraints (if
 tyvar is bounded) we try to solve them and then get this GHC panic: we
 need `TcTyVar` constructor there.

 I suppose solution could be to replace free tyvar with `TcTyVar` before
 solving constraints though I need some guidance to implement it.

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


More information about the ghc-tickets mailing list