[GHC] #14075: GHC panic with parallel make
GHC
ghc-devs at haskell.org
Tue Aug 1 15:44:03 UTC 2017
#14075: GHC panic with parallel make
-------------------------------------+-------------------------------------
Reporter: inaki | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.2.1
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: Compile-time
Unknown/Multiple | crash or panic
Test Case: | Blocked By:
Blocking: | Related Tickets: #13803, #13981
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
Consider the following modules:
{{{#!hs
-- F.hs
module F () where
}}}
{{{#!hs
-- F.hs-boot
module F where
import O (O)
newtype F = F ()
instance O F where
}}}
{{{#!hs
-- O.hs
module O (O) where
class O a where
}}}
{{{#!hs
-- V.hs
module V () where
import {-# SOURCE #-} F ()
}}}
{{{#!hs
-- V.hs-boot
module V where
}}}
If I try to compile this with
{{{
ghc -j2 F O V
}}}
I get
{{{
[1 of 4] Compiling O ( O.hs, O.o )
[2 of 4] Compiling F[boot] ( F.hs-boot, F.o-boot )
[3 of 4] Compiling F ( F.hs, F.o )
<no location info>: error:
ghc-stage2: panic! (the 'impossible' happened)
(GHC version 8.2.0.20170720 for x86_64-unknown-linux):
tcIfaceGlobal (local): not found
You are in a maze of twisty little passages, all alike.
While forcing the thunk for TyThing F
which was lazily initialized by initIfaceCheck typecheckLoop,
I tried to tie the knot, but I couldn't find F
in the current type environment.
If you are developing GHC, please read Note [Tying the knot]
and Note [Type-checking inside the knot].
Consider rebuilding GHC with profiling for a better stack trace.
Contents of current type environment:
[r1hL :-> Identifier ‘$trModule’]
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/iface/TcIface.hs:1696:23 in
ghc:TcIface
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
}}}
On the other hand
{{{
ghc -j1 F O V
}}}
works just fine, and gives the expected
{{{
[2 of 5] Compiling O ( O.hs, O.o )
[3 of 5] Compiling F[boot] ( F.hs-boot, F.o-boot )
[4 of 5] Compiling F ( F.hs, F.o )
F.hs-boot:7:1: error:
‘F.F’ is exported by the hs-boot file, but not exported by the module
|
7 | newtype F = F ()
| ^^^^^^^^^^^^^^^^
F.hs:1:1: error:
instance O.O F.F -- Defined at F.hs-boot:8:10
is defined in the hs-boot file, but not in the module itself
|
1 | -- F.hs
| ^
}}}
The example is a little bit sick, in that the original code is not
expected to compile. I run into this by accident when trying to construct
a minimal example of the issue reported in #13803 (note that that bug is
marked as closed, but the original issue reported there remains unfixed, I
am trying to construct a minimal testcase for the original issue there).
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14075>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list