
I think this has been mentioned before but it's probably not widely known: if you compile GHC profiled (that is, enable GhcProfiled=YES in your mk/ build.mk), then every panic comes with a stack trace. Here's one I just saw: ghc-stage2: panic! (the 'impossible' happened) (GHC version 8.1.20161206 for x86_64-unknown-linux): Ix{Int}.index: Index (65536) out of range ((0,28)) CallStack (from -prof): HscTypes.bin_fixities (compiler/main/HscTypes.hs:1050:51-56) HscMain.checkOldIface (compiler/main/HscMain.hs:(586,20)-(587,60)) HscMain.hscIncrementalFrontend (compiler/main/HscMain.hs:(556,1)-(618,81)) HscMain.hscIncrementalCompile (compiler/main/HscMain.hs:(644,1)-(699,32)) GHC.withCleanupSession (compiler/main/GHC.hs:(464,1)-(473,27)) GHC.runGhc (compiler/main/GHC.hs:(439,1)-(444,26)) GHC.defaultErrorHandler (compiler/main/GHC.hs:(379,1)-(411,7)) To get more detail in the stack trace you need to add GhcStage2HcOpts += -fprof-auto-top Or -fprof-auto, depending on how much detail you want. Cheers Simon