
#8374: `tcIfaceGlobal (local): not found` while compiling ----------------------------------------+--------------------------- Reporter: bgamari | Owner: Type: bug | Status: new Priority: high | Milestone: Component: Build System | Version: 7.7 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: arm Type of failure: Building GHC failed | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: ----------------------------------------+--------------------------- Comment (by bernalex): Hi guys. I'm a complete newbie to GHC, and even Haskell still, so keep that in mind. The best (and certainly most fun) way for me to familiarise myself with the GHC code base was to dive right in. So I was hacking on base for fun and encountered an odd bug, and christiaanb in #ghc pointed me here. Replying to [comment:13 nomeata]:
I occasionally have that as well; right now in `library/base`: {{{ HC [stage 1] libraries/base/dist-install/build/Control/Applicative.o ghc-stage1: panic! (the 'impossible' happened) (GHC version 7.9.20140129 for x86_64-unknown-linux): tcIfaceGlobal (local): not found: base:Control.Applicative.$fApplicativeWrappedMonad{v ri} [(0c7, Identifier ‛base:Control.Applicative.<*>{v 0c7}’), (0c8, Identifier ‛base:Control.Applicative.pure{v 0c8}’), (0c9, Class ‛base:Control.Applicative.Alternative{tc 0c9}’), ... }}}
Thorough cleaning helps. Sorry, no further clues.
I get this: {{{ ghc-stage1: panic! (the 'impossible' happened) (GHC version 7.9.20140225 for x86_64-unknown-linux): tcIfaceGlobal (local): not found: base:Control.Applicative.$fApplicativeWrappedMonad{v ri} [(0c7, Identifier ‘base:Control.Applicative.<*>{v 0c7}’), (0c8, Identifier ‘base:Control.Applicative.pure{v 0c8}’), (0c9, Class ‘base:Control.Applicative.Alternative{tc 0c9}’), (2y, Class ‘base:Control.Applicative.Applicative{tc 2y}’), (rE, Data constructor ‘base:Control.Applicative.D:Alternative{d rE}’), (r1J, Coercion axiom ‘base:Control.Applicative.NTCo:ZipList{tc r1J}’), (r2K, Coercion axiom ‘base:Control.Applicative.NTCo:Const{tc r2K}’), (r3c, Coercion axiom ‘base:Control.Applicative.NTCo:WrappedMonad{tc r3c}’), (r3i, Coercion axiom ‘base:Control.Applicative.NTCo:WrappedArrow{tc r3i}’), (r3T, Data constructor ‘base:Control.Applicative.D:Applicative{d r3T}’), (r45, Identifier ‘base:Control.Applicative.$p1Applicative{v r45}’), (r46, Identifier ‘base:Control.Applicative.$p1Alternative{v r46}’), (r4a, Identifier ‘base:Control.Applicative.getZipList{v r4a}’), (r4b, Data constructor ‘base:Control.Applicative.ZipList{d r4b}’), (r4c, Type constructor ‘base:Control.Applicative.ZipList{tc r4c}’), (r4d, Identifier ‘base:Control.Applicative.unwrapMonad{v r4d}’), (r4e, Data constructor ‘base:Control.Applicative.WrapMonad{d r4e}’), (r4f, Type constructor ‘base:Control.Applicative.WrappedMonad{tc r4f}’), (r4g, Identifier ‘base:Control.Applicative.unwrapArrow{v r4g}’), (r4h, Data constructor ‘base:Control.Applicative.WrapArrow{d r4h}’), (r4i, Type constructor ‘base:Control.Applicative.WrappedArrow{tc r4i}’), (r4j, Identifier ‘base:Control.Applicative.getConst{v r4j}’), (r4k, Data constructor ‘base:Control.Applicative.Const{d r4k}’), (r4l, Type constructor ‘base:Control.Applicative.Const{tc r4l}’), (r4m, Identifier ‘base:Control.Applicative.<*{v r4m}’), (r4n, Identifier ‘base:Control.Applicative.*>{v r4n}’), (r4o, Identifier ‘base:Control.Applicative.some{v r4o}’), (r4p, Identifier ‘base:Control.Applicative.many{v r4p}’), (r4q, Identifier ‘base:Control.Applicative.empty{v r4q}’), (r4r, Identifier ‘base:Control.Applicative.<|>{v r4r}’), (r1BR, Identifier ‘base:Control.Applicative.Const{v r1BR}’), (r1Cf, Identifier ‘base:Control.Applicative.WrapArrow{v r1Cf}’), (r1CD, Identifier ‘base:Control.Applicative.WrapMonad{v r1CD}’), (r1CT, Identifier ‘base:Control.Applicative.ZipList{v r1CT}’), (r1Da, Identifier ‘base:Control.Applicative.$dm*>{v r1Da}’), (r1DL, Identifier ‘base:Control.Applicative.$dm<*{v r1DL}’), (r1DN, Identifier ‘base:Control.Applicative.D:Applicative{v r1DN}’), (r1DO, Identifier ‘base:Control.Applicative.$dmsome{v r1DO}’), (r1EP, Identifier ‘base:Control.Applicative.$dmmany{v r1EP}’), (r1ER, Identifier ‘base:Control.Applicative.D:Alternative{v r1ER}’)] Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug make[1]: *** [libraries/base/dist-install/build/Control/Applicative.o] Error 1 make: *** [all_libraries/base] Error 2 }}} It's been consistent for me. What I've been doing is applying patches to base, and then I want to rebuild it as cheaply as possible. Reading the build guides I came up with several things to try. I have tried the following (some of them might be entirely equivalent): {{{ make # in the base directory make all_libraries/base make FAST=YES }}} Cleaning does, as mentioned, help. Failing to derive a logical solution, I went with the "engineer's approach" and simply did: {{{ rm libraries/base/dist-install/build/Control/Applicative.* rm libraries/base/dist-install/build/Data/List_* -R rm libraries/base/dist-install/build/Prelude* -R make FAST=YES }}} This was an attempt at just throwing out offenders and observing the results. This seemed to work nicely (i.e. make FAST=YES succeeded without errors), however make install failed with the same error as above. A regular make clean && make && make install worked nicely though. I would be happy to assist in trying to arrive at a predictable method of reproducing this problem. Some information on what I am using: {{{ ghc 018676c7f883886b388652c913c99a10d2591b0b base eea1b6f5fe254b249acc618ef5a82c3e52a27f8c (+ 2 of my patches -- rebuilding failed for both) Linux hackintosh 3.13.3-gentoo #10 SMP Sat Feb 15 11:17:38 CET 2014 x86_64 Intel(R) Core(TM) i7-4558U CPU @ 2.80GHz GenuineIntel GNU/Linux automake 1.13.4 autoconf-2.69 }}} If other information would be pertinent, please let me know and I will post it. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8374#comment:20 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler