[GHC] #16191: GHC Panic deriving unbox vector (StrictData/unbox-strict-fields interaction)

GHC ghc-devs at haskell.org
Tue Jan 22 14:04:59 UTC 2019


#16191: GHC Panic deriving unbox vector (StrictData/unbox-strict-fields
interaction)
-------------------------------------+-------------------------------------
        Reporter:  dbeacham          |                Owner:  (none)
            Type:  bug               |               Status:  closed
        Priority:  normal            |            Milestone:  8.8.1
       Component:  Compiler          |              Version:  8.6.3
      Resolution:  duplicate         |             Keywords:
Operating System:  Linux             |         Architecture:
 Type of failure:  GHC rejects       |  Unknown/Multiple
  valid program                      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #16141            |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by Marge Bot <ben+marge-bot@…>):

 In [changeset:"a5373c1fe172dee31e07bcb7c7f6caff1035e6ba/ghc" a5373c1/ghc]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="a5373c1fe172dee31e07bcb7c7f6caff1035e6ba"
 Fix bogus worker for newtypes

 The "worker" for a newtype is actually a function
 with a small (compulsory) unfolding, namely a cast.

 But the construction of this function was plain wrong
 for newtype /instances/; it cast the arguemnt to the
 family type rather than the representation type.

 This never actually bit us because, in the case of a
 family instance, we immediately cast the result to
 the family type.  So we get
    \x. (x |> co1) |> co2

 where the compositio of co1 and co2 is ill-kinded.
 However the optimiser (even the simple optimiser)
 just collapsed those casts, ignoring the mis-match
 in the middle, so we never saw the problem.

 Trac #16191 is indeed a dup of #16141; but the resaon
 these tickets produce Lint errors is not the unnecessary
 forcing; it's because of the ill-typed casts.

 This patch fixes the ill-typed casts, properly.  I can't
 see a way to trigger an actual failure prior to this
 patch, but it's still wrong wrong wrong to have ill-typed
 casts, so better to get rid of them.
 }}}

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


More information about the ghc-tickets mailing list