[GHC] #14777: panic when using a function defined in terms of `error`

GHC ghc-devs at haskell.org
Sun Mar 11 04:17:07 UTC 2018


#14777: panic when using a function defined in terms of `error`
-------------------------------------+-------------------------------------
        Reporter:  zilinc            |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.2.2
      Resolution:                    |             Keywords:
Operating System:  Linux             |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  crash or panic                     |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------
Description changed by zilinc:

Old description:

> 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/92c40530cbcbac77469865e096dab3228a2fb92f/cogent/src/Cogent/Desugar.hs#L482
> and
> https://github.com/NICTA/cogent/blob/92c40530cbcbac77469865e096dab3228a2fb92f/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.

New description:

 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.

--

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


More information about the ghc-tickets mailing list