#14777: panic -------------------------------------+------------------------------------- Reporter: zilinc | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.2.2 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: -------------------------------------+------------------------------------- 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. The definition of `__impossible` is simply `__impossible s = error $ s ++ "some text"`. The code can be found here: https://github.com/NICTA/cogent/blob/92c40530cbcbac77469865e096dab3228a2fb92... and https://github.com/NICTA/cogent/blob/92c40530cbcbac77469865e096dab3228a2fb92... 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> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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. The definition of `__impossible` is simply `__impossible s = error $ s ++ "some text"`.
The code can be found here: https://github.com/NICTA/cogent/blob/92c40530cbcbac77469865e096dab3228a2fb92... and https://github.com/NICTA/cogent/blob/92c40530cbcbac77469865e096dab3228a2fb92...
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/92c40530cbcbac77469865e096dab3228a2fb92... and https://github.com/NICTA/cogent/blob/92c40530cbcbac77469865e096dab3228a2fb92... 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:1> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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/92c40530cbcbac77469865e096dab3228a2fb92... and https://github.com/NICTA/cogent/blob/92c40530cbcbac77469865e096dab3228a2fb92...
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/92c40530cbcbac77469865e096dab3228a2fb92... and https://github.com/NICTA/cogent/blob/92c40530cbcbac77469865e096dab3228a2fb92... 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:2> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by simonpj): If you were able to provide an easily-reproducible test case, it'd make it much more likely that we can fix it. Thanks! -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:3> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by zilinc): I'm been trying to do that, but strangely any random changes to the code could potentially void the bug. I have no clue how to proceed. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:4> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by mpickering): I can't reproduce this. Please can you provide exact reproduction instructions? Steps I took: {{{ git clone https://github.com/NICTA/cogent.git cd cogent/cogent git reset --hard 92c40530cbcbac77469865e096dab3228a2fb92f git clone https://gist.github.com/e6fc9e8a254d795bbd8ec476ca9fc115.git nix-scripts cp nix-scripts/* . nix-shell cabal configure cabal build }}} Then the build completes successfully. Here are the nix files. https://gist.github.com/e6fc9e8a254d795bbd8ec476ca9fc115 -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:5> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by zilinc): Thank you providing the steps. If you could apply the following change to the code, you might be able to reproduce the panic. {{{ diff --git a/cogent/src/Cogent/Desugar.hs b/cogent/src/Cogent/Desugar.hs index bdea312..6a6f308 100644 --- a/cogent/src/Cogent/Desugar.hs +++ b/cogent/src/Cogent/Desugar.hs @@ -479,7 +479,7 @@ desugarExpr (B.TE t@(S.RT (S.TVariant ts)) (S.Con c es) l) = do desugarExpr (B.TE _ (S.Seq e1 e2) _) = do v <- freshVar E <$> (Let v <$> desugarExpr e1 <*> withBinding v (desugarExpr e2)) -desugarExpr (B.TE _ (S.Lam p mt e) _) = undefined +desugarExpr (B.TE _ (S.Lam p mt e) _) = __impossible "xx" desugarExpr (B.TE _ (S.App e1 e2) _) = E <$> (App <$> desugarExpr e1 <*> desugarExpr e2) desugarExpr (B.TE _ (S.If c [] th el) _) = E <$> (If <$> desugarExpr c <*> desugarExpr th <*> desugarExpr el) desugarExpr (B.TE _ (S.If c vs th el) _) = do }}} Replying to [comment:5 mpickering]:
I can't reproduce this. Please can you provide exact reproduction instructions?
Steps I took:
{{{ git clone https://github.com/NICTA/cogent.git cd cogent/cogent git reset --hard 92c40530cbcbac77469865e096dab3228a2fb92f git clone https://gist.github.com/e6fc9e8a254d795bbd8ec476ca9fc115.git nix-scripts cp nix-scripts/* . nix-shell cabal configure cabal build }}}
Then the build completes successfully.
Here are the nix files. https://gist.github.com/e6fc9e8a254d795bbd8ec476ca9fc115
-- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:6> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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/92c40530cbcbac77469865e096dab3228a2fb92... and https://github.com/NICTA/cogent/blob/92c40530cbcbac77469865e096dab3228a2fb92...
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/92c40530cbcbac77469865e096dab3228a2fb92... and https://github.com/NICTA/cogent/blob/92c40530cbcbac77469865e096dab3228a2fb92... 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:7> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by mpickering): Thanks, I can reproduce this now. {{{ <no location info>: error: ghc: panic! (the 'impossible' happened) (GHC version 8.2.2 for x86_64-unknown-linux): idInfo t_XI02 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 }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:8> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by zilinc): More experiments: after I made the following changes: {{{ diff --git a/cogent/src/Cogent/Desugar.hs b/cogent/src/Cogent/Desugar.hs index bdea312..3b8440d 100644 --- a/cogent/src/Cogent/Desugar.hs +++ b/cogent/src/Cogent/Desugar.hs @@ -175,9 +175,11 @@ pragmaToNote (_:pragmas) fn note = pragmaToNote pragmas fn note -- ----------------------------------------------------------------------------- lamLftTlv :: S.TopLevel S.RawType B.TypedPatn B.TypedExpr - -> DS t v (S.TopLevel S.RawType B.TypedPatn B.TypedExpr) -lamLftTlv (S.FunDef fn sigma alts) = undefined + -> DS t v (S.TopLevel S.RawType B.TypedPatn B.TypedExpr) +lamLftTlv (S.FunDef fn sigma alts) = S.FunDef fn sigma <$> mapM lamLftAlt alts +lamLftAlt :: S.Alt B.TypedPatn B.TypedExpr -> DS t v (S.Alt B.TypedPatn B.TypedExpr) +lamLftAlt (S.Alt p l e) = S.Alt p l <$> lamLftExpr e lamLftExpr :: B.TypedExpr -> DS t v B.TypedExpr lamLftExpr (B.TE t (S.Lam p mt e) l) = do @@ -192,6 +194,7 @@ lamLftExpr (B.TE t (S.Lam p mt e) l) = do let fn = S.FunDef f (S.PT [] t) [S.Alt (B.TP (S.PIrrefutable p) noPos) Regular e] -- no let-generalisation lftFun %= (fn:) return $ B.TE t (S.TypeApp f [] S.NoInline) l +lamLftExpr (B.TE t e l) = B.TE t <$> traverse lamLftExpr e <*> pure l -- freeVars :: B.TypedExpr -> Vec v VarName -> [(VarName, S.RawType)] -- freeVars (B.TE t (S.Var v) _) vs = maybeToList $ case findIx v vs of Just i -> Nothing; Nothing -> Just (v,t) @@ -479,7 +482,7 @@ desugarExpr (B.TE t@(S.RT (S.TVariant ts)) (S.Con c es) l) = do desugarExpr (B.TE _ (S.Seq e1 e2) _) = do v <- freshVar E <$> (Let v <$> desugarExpr e1 <*> withBinding v (desugarExpr e2)) -desugarExpr (B.TE _ (S.Lam p mt e) _) = undefined +desugarExpr (B.TE _ (S.Lam p mt e) _) = __impossible "desugarExpr (Lam)" desugarExpr (B.TE _ (S.App e1 e2) _) = E <$> (App <$> desugarExpr e1 <*> desugarExpr e2) desugarExpr (B.TE _ (S.If c [] th el) _) = E <$> (If <$> desugarExpr c <*> desugarExpr th <*> desugarExpr el) desugarExpr (B.TE _ (S.If c vs th el) _) = do }}} It doesn't crash with the `__impossible`, but this time it crashes with the `undefined`. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:9> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by zilinc): For quite a few times, after I change some code, if it crashes, I can always fix it by changing one `__impossible` to `undefined` or v.v. I'm unsure whether it's a coincidence or not. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:10> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by tdammers): I tried to reproduce this on GHC 8.2.1, but it builds cleanly, both with `__impossible` and `undefined`. I'm using the current `master` branch though, because the specified commit doesn't seem to exist in any of the exposed branches anymore. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:11> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by zilinc): Replying to [comment:11 tdammers]:
I tried to reproduce this on GHC 8.2.1, but it builds cleanly, both with `__impossible` and `undefined`. I'm using the current `master` branch though, because the specified commit doesn't seem to exist in any of the exposed branches anymore.
The commit is still there. But I totally believe that you could not reproduce it on an arbitrary commit, otherwise it would be easier to figure out what crashed the compiler. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:12> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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/92c40530cbcbac77469865e096dab3228a2fb92... and https://github.com/NICTA/cogent/blob/92c40530cbcbac77469865e096dab3228a2fb92...
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/9420861128a8c445138aa6a48c62140d8c5f72e... and https://github.com/NICTA/cogent/blob/9420861128a8c445138aa6a48c62140d8c5f72e... 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
#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: | -------------------------------------+------------------------------------- Changes (by sighingnow): * Attachment "T14774.zip" added. Self-contained test case for T14777 -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by sighingnow): I have create a self-contained minimal case (still have several files but only depends on base, mtl and containers) that can trigger this panic. I **can** reproduce this panic with ghc-8.2.1 (nightly-2017-11-24) and ghc-8.2.2 (lts-10.3/lts-10.4) but **cannot** with ghc-8.4.1 and ghc-head. Maybe it has already been fixed. I also have test with with ghc-8.0.1 (lts-9.4) but also failed to trigger the panic with this minimal case. Step to reproduce with ghc-8.2.2: unzip and enter `src`, then {{{ stack exec --resolver=lts-10.4 -- ghc Cogent.Desugar -fforce-recomp -O2 }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:14> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Changes (by monoidal): * Attachment "Cogent.zip" added. smaller reproduction testcase -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by monoidal): I have simplified a bit further, to 2 files; can be reproduced with {{{ ghc-8.2.1 --make Cogent/Desugar -fforce-recomp -O2 }}} This doesn't appear on ghc 8.4 - likely this was fixed. However, the panic depends on many conditions, even small changes to code can make it disappear, so it might be worth further investigation. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:15> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by dfeuer): I took a peek at monoidal's reproduction, using a devel2 build of 8.2.2 with some extra `HasCallStack`s. Running with Core Lint and `-O2`, I get {{{ [2 of 2] Compiling Cogent.Desugar ( Cogent/Desugar.hs, Cogent/Desugar.o ) WARNING: file compiler/simplCore/OccurAnal.hs, line 69 Glomming in Cogent.Desugar: [s55P :-> OnceL!] ghc-stage2: panic! (the 'impossible' happened) (GHC version 8.2.2 for x86_64-unknown-linux): idInfo v_X5mQ 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 idInfo, called at compiler/basicTypes/Id.hs:736:37 in ghc:Id idInlinePragma, called at compiler/basicTypes/Id.hs:745:49 in ghc:Id idInlineActivation, called at compiler/simplCore/SimplUtils.hs:923:56 in ghc:SimplUtils getUnfoldingInRuleMatch, called at compiler/simplCore/Simplify.hs:1946:34 in ghc:Simplify tryRules, called at compiler/simplCore/Simplify.hs:1776:22 in ghc:Simplify }}} (I have no idea if the lint warning is relevant). About all I can see about what's gone wrong is that something seems to be treating a type variable as though it were a term variable. That is, if I understand the `Var` type properly. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:16> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Changes (by dfeuer): * cc: dfeuer (added) -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:17> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by tdammers): Replying to [comment:16 dfeuer]:
About all I can see about what's gone wrong is that something seems to be treating a type variable as though it were a term variable. That is, if I understand the `Var` type properly.
I've been suspecting some sort of type/term confusion myself - neither `error` nor `undefined` should, conceptually speaking, throw the type checker off guard, and they shouldn't produce different behavior as far as the types are concerned (both `error "Something"` and `undefined` are `forall a. a`, essentially), yet swapping one for the other seems to toggle the panic. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:18> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by tdammers): Managed to reproduce the panic on 8.2.1; GHC HEAD builds cleanly. Defining the following function in `Surface.hs`, and using that instead of any calls to `__impossible` in `Desugar.hs`, also allows me to build cleanly on 8.2.1: {{{ __impossibleDef :: a __impossibleDef = error "impossible" }}} The unmodified example also builds cleanly without optimizations. Which suggests that some optimization pass produces a situation that hits a bug somewhere, and that the difference between `__impossible` and `__impossibleDef` is enough to trigger or not trigger it. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:19> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by tdammers): Further, the following both get rid of the panic: - Moving `__impossible` into `Desugar.hs` - Declaring `{-#INLINE __impossible #-}` Both would lead to GHC inlining `__impossible`. This would explain how it is possible for seemingly benign changes to influence the appearance of the panic - changing small things would change the inlining heuristics, and bug may or may not be hit depending on the intermediate code (Core / STG) being generated. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:20> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Changes (by monoidal): * Attachment "Cogent2.zip" added. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by monoidal): I've simplified the code further and the only dependencies now are Prelude, unsafePerformIO and GHC.Exts.lazy. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:21> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): Thanks, monoidal. Even if we don't understand what exactly is causing this error at the moment, we should probably check this in as a regression test, yes? -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:22> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by monoidal): I think the current test case is still too fragile to be checked in. For example, given the lines: {{{ desugarTlv Include = __impossible "desugarTlv" desugarTlv IncludeStd = __impossible "desugarTlv" desugarTlv FunDef = __impossible "desugarTlv" desugarTlv DocBlock = __impossible "desugarTlv" }}} the panic appears only if all four string literals are the same and nonempty. Removing any of the four lines makes the panic disappear. Removing of identifiers that are nowhere used such as `TypeDec`, `freshVars`, `_varCtx` also stops the panic from happening. The error can also be reproduced with `-O -fliberate-case -fspec-constr` instead of `-O2` but I didn't manage to break down `-O` to individual options and keep the panic. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:23> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by mpickering): `-O2` is precisely `-O -fliberate-case -fspec-constr`. Sometimes the difference between `-O` and `-O2` can be that there there is an extra simplifier pass which runs after `-fliberate-case`. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:24> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by tdammers): I'm a bit reluctant to brush this off as "the panic doesn't happen anymore on 8.4, so we must have fixed it somehow", because it could just be that we're now optimizing differently and the panic doesn't happen in this particular case anymore, but still might pop up in other situations. So I'm wondering whether we should: a) Just write up a suitable regression test, commit that, and see if it ever triggers again in the future. b) Actively go hunting for the source of this. Upside is that we would know whether the bug has been fixed or just masked; downside is that this is potentially very time consuming. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:25> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#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: | -------------------------------------+------------------------------------- Comment (by simonpj): I agree with Tobias in comment:25. Fortunately, thanks to all the helpful distillation done by others above, I was able to reproduce the bug, and I know precisely what is going on. Patch coming. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:26> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#14777: panic when using a function defined in terms of `error` -------------------------------------+------------------------------------- Reporter: zilinc | Owner: simonpj Type: bug | Status: new Priority: normal | Milestone: 8.6.1 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: | -------------------------------------+------------------------------------- Changes (by bgamari): * owner: (none) => simonpj * milestone: => 8.6.1 Comment: Simon PJ knows what is going on here and will take over this one. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:27> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#14777: panic when using a function defined in terms of `error` -------------------------------------+------------------------------------- Reporter: zilinc | Owner: simonpj Type: bug | Status: new Priority: normal | Milestone: 8.6.1 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: | -------------------------------------+------------------------------------- Comment (by simonpj): Something about an accidental coincidence of uniques, and the rule-matcher not cloning the forall'd binders of the rule properly. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:28> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#14777: panic when using a function defined in terms of `error` -------------------------------------+------------------------------------- Reporter: zilinc | Owner: simonpj Type: bug | Status: new Priority: normal | Milestone: 8.6.1 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: | -------------------------------------+------------------------------------- Comment (by Simon Peyton Jones <simonpj@…>): In [changeset:"3446cee05e08d78033e141fa46d4de6929542cbb/ghc" 3446cee0/ghc]: {{{ #!CommitTicketReference repository="ghc" revision="3446cee05e08d78033e141fa46d4de6929542cbb" Fix two obscure bugs in rule matching This patch fixes Trac #14777, a compiler crash. There were actually two bugs. 1. In Rules.matchN, I was (consciously) not rename the template binders of the rule. Sadly, in rare cases an accidental coincidence of uniques could mean that a term variable was mapped to a type variable, utterly bogusly. See "Historical note" in Note [Cloning the template binders] in Rules. This was hard to find, but easy to fix. 2. The fix to (1) showed up a bug in Unify.hs. The test in Unify.tvBindFlag was previously using the domain of the RnEnv2 to detect locally-bound variables (e.g. when unifying under a forall). That's fine when teh RnEnv2 starts empty, as it does in most entry points. But the tcMatchTyKisX entry point, used from the rule matcher, passes in a non-empty RnEnv2 (by design). Now the domain of the RnEnv doesn't idenfity those locally-bound variables any more :-(. Solution: extend UmEnv with a new field um_skols, to capture the skolems directly. Simple, easy, works. }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:29> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#14777: panic when using a function defined in terms of `error` -------------------------------------+------------------------------------- Reporter: zilinc | Owner: simonpj Type: bug | Status: merge Priority: normal | Milestone: 8.6.1 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: | -------------------------------------+------------------------------------- Changes (by simonpj): * status: new => merge Comment: Done. Merge to 8.4. Thank you to everyone who distilled the test case; that made it FAR easier for me. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:30> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#14777: panic when using a function defined in terms of `error` -------------------------------------+------------------------------------- Reporter: zilinc | Owner: simonpj Type: bug | Status: merge Priority: normal | Milestone: 8.6.1 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: | -------------------------------------+------------------------------------- Comment (by simonpj): PS: No regression test because it's bizarrely difficult to reproduce. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:31> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#14777: panic when using a function defined in terms of `error` -------------------------------------+------------------------------------- Reporter: zilinc | Owner: simonpj Type: bug | Status: merge Priority: normal | Milestone: 8.6.1 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: | -------------------------------------+------------------------------------- Comment (by zilinc): Many thanks to everyone who helped with this ticket. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:32> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#14777: panic when using a function defined in terms of `error` -------------------------------------+------------------------------------- Reporter: zilinc | Owner: simonpj Type: bug | Status: merge Priority: normal | Milestone: 8.4.3 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: | -------------------------------------+------------------------------------- Changes (by RyanGlScott): * milestone: 8.6.1 => 8.4.3 Comment: This was never merged to GHC 8.4.2. Is it slated for 8.4.3, or should this just be closed? -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:33> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#14777: panic when using a function defined in terms of `error` -------------------------------------+------------------------------------- Reporter: zilinc | Owner: simonpj Type: bug | Status: closed Priority: normal | Milestone: 8.6.1 Component: Compiler | Version: 8.2.2 Resolution: fixed | 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: | -------------------------------------+------------------------------------- Changes (by bgamari): * status: merge => closed * resolution: => fixed * milestone: 8.4.3 => 8.6.1 Comment: Well, 8.4.3 is done (although I haven't had the time to finalize it yet) and didn't have this commit, so let's closel -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14777#comment:34> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
participants (1)
-
GHC