Skip to content

panic when using a function defined in terms of `error`

The error message I got from GHC was:

<no location info>: error:
    ghc: panic! (the 'impossible' happened)
  (GHC version 8.2.2 for x86_64-unknown-linux):
	idInfo
  t_XG0J
  Call stack:
      CallStack (from HasCallStack):
        prettyCurrentCallStack, called at compiler/utils/Outputable.hs:1133:58 in ghc:Outputable
        callStackDoc, called at compiler/utils/Outputable.hs:1137:37 in ghc:Outputable
        pprPanic, called at compiler/basicTypes/Var.hs:526:34 in ghc:Var

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

How was it triggerred (in short): There's function definition, f x = undefined. If I change it to f x = __impossible "Oops!", ghc crashes. If I change it to f x = error "Oops!", it's OK. The definition of __impossible is simply __impossible s = error $ s ++ "some text".

The code can be found here: https://github.com/NICTA/cogent/blob/9420861128a8c445138aa6a48c62140d8c5f72eb/cogent/src/Cogent/Desugar.hs#L482 and https://github.com/NICTA/cogent/blob/9420861128a8c445138aa6a48c62140d8c5f72eb/cogent/src/Cogent/Compiler.hs#L30

It seems that this bug is not limited to 8.2.2; it also happened in 8.2.1.

I'm happy to provide more information, if someone can advice me what is needed. I'll also try to shrink it to a small test case.

Edited by Zilin Chen
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information