Ticket #2378 (closed merge: fixed)

Opened 5 years ago

Last modified 5 years ago

panic: lookupVers1, when standalone deriving Typeable and Data

Reported by: guest Owned by:
Priority: normal Milestone: 6.8 branch
Component: Compiler Version: 6.8.3
Keywords: Cc: benedikt.huber@…, claus
Operating System: MacOS X Architecture: x86
Type of failure: Difficulty: Unknown
Test Case: deriving/should_compile/T2378 Blocked By:
Blocking: Related Tickets:

Description

When using StandaloneDeriving and DeriveDataTypeable on a rather large AST, occasionally GHC 6.8.2 and GHC 6.8.3 RC bail with

[13 of 24] Compiling Language.C.AST.Generic
...
ghc-6.8.2.20080527: panic! (the 'impossible' happened)
  (GHC version 6.8.2.20080527 for i386-apple-darwin):
        lookupVers1 language-c-test-0.2:Language.C.AST.Constants $cFlags{v}

Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

This is probably related to ticket #2011 (marked as milestone 6.8.3), clean and rebuild resolves the problem temporarily.

I haven't been able to extract a small test case, but the problematic source is available online at

 http://code.haskell.org/language-c/src/Language/C/AST/Generic.hs

The bug is reproducible: (cabal) build, comment out the last 6 'deriving Data' clauses (line 96-101), build again, uncomment, build again.

Side notes: There is a warning (but no error !) when deriving a Typeable1 instance (maybe related to #1825)

[13 of 24] Compiling Language.C.AST.Generic
Var/Type length mismatch: 
    [f{tv i1lc} [tv]]
    []
... [as above]

Finally, in GHC 6.9 standalone deriving Data was unsupported as of 01042008:

[13 of 24] Compiling Language.C.AST.Generic
Illegal binding of built-in syntax: $cCHeader

Change History

Changed 5 years ago by claus

  • cc claus added

I'm running into the Illegal binding of built-in syntax issue (Windows, 6.9.20080514).

Changed 5 years ago by simonpj

  • owner set to simonpj
  • difficulty set to Unknown

This is bad. I'm looking into it.

S

Changed 5 years ago by benedikt

  • version changed from 6.8.2 to 6.8.3

The problem is also present in ghc-6.8.3.

I've put the (unfortunately rather large)  test case online, including the  compile log.

ghc2378(0) $ ghc -V
The Glorious Glasgow Haskell Compilation System, version 6.8.3
ghc2378(0) $ tail -n 8 compile.log 
*** Deleting temp dirs:
Deleting: /var/folders/Vz/VzXOgyLmGRapgKZSH9x4K++++TI/-Tmp-//ghc29958_0
ghc-6.8.3: panic! (the 'impossible' happened)
  (GHC version 6.8.3 for i386-apple-darwin):
        lookupVers1 main:Language.C.AST.Constants $cFlags{v}

Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

Changed 5 years ago by simonpj

Nice program. You revealed at least three bugs in the implementation of standalone deriving, and that's without counting the lookupVers1 problem, which doesn't show up in HEAD.

So I've fixed all of them in the HEAD. Since we've pushed 6.8.3 out now, we've missed the boat on that. If we ever release 6.8.4 we should put the patch in:

Tue Jul  1 13:09:08 BST 2008  simonpj@microsoft.com
  * Several fixes to 'deriving' including Trac #2378

There's no good workaround for 6.8.3 except not to use standalone deriving. Also doing this:

newtype T f = ... deriving( Typeable1 )

seems unfixably broken in 6.8.3 I'm afraid. I think you may have to use a data type instead.

Thanks for bringing all this to light.

Simon

Changed 5 years ago by simonpj

  • owner changed from simonpj to igloo
  • testcase set to deriving/should_compile/T2378
  • type changed from bug to merge

Added a test for the newtype deriving thing. I was wrong above: the thing that is broken is standalone deriving for Typeable1 of newtype:

newtype T a = ...
deriving instance Typeable1 T

Also reclassifying as 'merge' so that Ian can keep it on his merge list for 6.8.4

Simon

Changed 5 years ago by igloo

  • milestone set to 6.8 branch

Changed 5 years ago by igloo

  • owner igloo deleted

Changed 5 years ago by igloo

  • status changed from new to closed
  • resolution set to fixed

We won't be releasing 6.8.4.

Note: See TracTickets for help on using tickets.