#4121: Refactor the plumbing of CafInfo to make it more robust ---------------------------------+------------------------------------------ Reporter: dterei | Owner: Type: bug | Status: new Priority: normal | Milestone: 6.14.1 Component: Compiler | Version: 6.12.2 Keywords: | Difficulty: Os: Unknown/Multiple | Testcase: Architecture: Unknown/Multiple | Failure: Building GHC failed ---------------------------------+------------------------------------------
Old description: > While comping GHC Head using the devel1 flavour and ghc-6.12.2 as the > bootstrap compiler, I get the following assertion failure: > > {{{ > "inplace/bin/ghc-stage1" -H64m -O -fasm -package-name base-4.3.0.0 > -hide-all-packages -i -ilibraries/base/. -ilibraries/base/dist- > install/build -ilibraries/base/dist-install/build/autogen > -Ilibraries/base/dist-install/build -Ilibraries/base/dist- > install/build/autogen -Ilibraries/base/include -optP- > DOPTIMISE_INTEGER_GCD_LCM -optP-include -optPlibraries/base/dist- > install/build/autogen/cabal_macros.h -package ghc-prim-0.2.0.0 -package > integer-gmp-0.2.0.0 -package rts-1.0 -package-name base -XMagicHash > -XExistentialQuantification -XRank2Types -XScopedTypeVariables > -XUnboxedTuples -XForeignFunctionInterface -XUnliftedFFITypes > -XDeriveDataTypeable -XGeneralizedNewtypeDeriving -XFlexibleInstances > -XStandaloneDeriving -XPatternGuards -XEmptyDataDecls -XNoImplicitPrelude > -XCPP -no-user-package-conf -rtsopts -O -dcore-lint -fno-warn-deprecated- > flags -odir libraries/base/dist-install/build -hidir libraries/base > /dist-install/build -stubdir libraries/base/dist-install/build -hisuf hi > -osuf o -hcsuf hc -c libraries/base/./Control/Applicative.hs -o > libraries/base/dist-install/build/Control/Applicative.o > > WARNING: file compiler/simplCore/CSE.lhs line 349 a_aup > WARNING: file compiler/simplCore/CSE.lhs line 349 a_aup > WARNING: file compiler/stgSyn/CoreToStg.lhs line 220 > Control.Applicative.$fAlternativeSTM > ghc-stage1: panic! (the 'impossible' happened) > (GHC version 6.13 for i386-unknown-linux): > ASSERT failed! file compiler/stgSyn/CoreToStg.lhs line 187 > base:Control.Applicative.$fAlternativeSTM{v rk} [gid[DFunId]] > let { > sat_s1oj{v} [lid] > :: forall a{tv 12} [tv]. > ghc-prim:GHC.Prim.State#{(w) tc 32q} > ghc-prim:GHC.Prim.RealWorld{(w) tc 31E} > -> (# ghc-prim:GHC.Prim.State#{(w) tc 32q} > ghc-prim:GHC.Prim.RealWorld{(w) tc 31E}, > a{tv 12} [tv] #) > [LclId] > sat_s1oj{v} [lid] = > \ (@ a{tv 12} [tv]) > (eta_B1{v} [lid] > :: ghc-prim:GHC.Prim.State#{(w) tc 32q} > ghc-prim:GHC.Prim.RealWorld{(w) tc 31E}) -> > ghc-prim:GHC.Prim.retry#{(w) v 93U} [gid[PrimOp]] > @ a{tv 12} [tv] eta_B1{v} [lid] } in > base:Control.Applicative.D:Alternative{v rrp} [gid[DataCon]] > @ <nt>base:GHC.Conc.STM{tc r2r} > base:Control.Applicative.$fApplicativeSTM{v r2q} [gid[DFunId]] > (sat_s1oj{v} [lid] > `cast` (forall a{tv aIy} [tv]. > ghc-prim:GHC.Prim.sym{(w) tc 34v} > (base:GHC.Conc.NTCo:STM{tc r2m} a{tv aIy} [tv]) > :: (forall a{tv aIy} [tv]. > ghc-prim:GHC.Prim.State#{(w) tc 32q} > ghc-prim:GHC.Prim.RealWorld{(w) tc 31E} > -> (# ghc-prim:GHC.Prim.State#{(w) tc 32q} > ghc-prim:GHC.Prim.RealWorld{(w) tc 31E}, > a{tv aIy} [tv] #)) > ~ > (forall a{tv aIy} [tv]. base:GHC.Conc.STM{tc r2r} a{tv aIy} > [tv]))) > (base:GHC.Conc.orElse1{v re9} [gid] > `cast` (forall a{tv aIx} [tv]. > base:GHC.Conc.STM{tc r2r} a{tv aIx} [tv] > -> base:GHC.Conc.STM{tc r2r} a{tv aIx} [tv] > -> ghc-prim:GHC.Prim.sym{(w) tc 34v} > (base:GHC.Conc.NTCo:STM{tc r2m} a{tv aIx} [tv]) > :: (forall a{tv aIx} [tv]. > base:GHC.Conc.STM{tc r2r} a{tv aIx} [tv] > -> base:GHC.Conc.STM{tc r2r} a{tv aIx} [tv] > -> ghc-prim:GHC.Prim.State#{(w) tc 32q} > ghc-prim:GHC.Prim.RealWorld{(w) tc 31E} > -> (# ghc-prim:GHC.Prim.State#{(w) tc 32q} > ghc-prim:GHC.Prim.RealWorld{(w) tc 31E}, > a{tv aIx} [tv] #)) > ~ > (forall a{tv aIx} [tv]. > base:GHC.Conc.STM{tc r2r} a{tv aIx} [tv] > -> base:GHC.Conc.STM{tc r2r} a{tv aIx} [tv] > -> base:GHC.Conc.STM{tc r2r} a{tv aIx} [tv]))) > (base:Control.Applicative.$fAlternativeSTM3{v r2n} [gid] > `cast` (forall a{tv aup} [sk]. > base:GHC.Conc.STM{tc r2r} a{tv aup} [sk] > -> ghc-prim:GHC.Prim.sym{(w) tc 34v} > (base:GHC.Conc.NTCo:STM{tc r2m} [a{tv aup} [sk]]) > :: (forall a{tv aup} [sk]. > base:GHC.Conc.STM{tc r2r} a{tv aup} [sk] > -> ghc-prim:GHC.Prim.State#{(w) tc 32q} > ghc-prim:GHC.Prim.RealWorld{(w) tc 31E} > -> (# ghc-prim:GHC.Prim.State#{(w) tc 32q} > ghc-prim:GHC.Prim.RealWorld{(w) tc 31E}, > [a{tv aup} [sk]] #)) > ~ > (forall a{tv aup} [sk]. > base:GHC.Conc.STM{tc r2r} a{tv aup} [sk] > -> base:GHC.Conc.STM{tc r2r} [a{tv aup} [sk]]))) > (base:Control.Applicative.$fAlternativeSTM1{v r2l} [gid] > `cast` (forall a{tv av2} [sk]. > base:GHC.Conc.STM{tc r2r} a{tv av2} [sk] > -> ghc-prim:GHC.Prim.sym{(w) tc 34v} > (base:GHC.Conc.NTCo:STM{tc r2m} [a{tv av2} [sk]]) > :: (forall a{tv av2} [sk]. > base:GHC.Conc.STM{tc r2r} a{tv av2} [sk] > -> ghc-prim:GHC.Prim.State#{(w) tc 32q} > ghc-prim:GHC.Prim.RealWorld{(w) tc 31E} > -> (# ghc-prim:GHC.Prim.State#{(w) tc 32q} > ghc-prim:GHC.Prim.RealWorld{(w) tc 31E}, > [a{tv av2} [sk]] #)) > ~ > (forall a{tv av2} [sk]. > base:GHC.Conc.STM{tc r2r} a{tv av2} [sk] > -> base:GHC.Conc.STM{tc r2r} [a{tv av2} [sk]]))) > base:Control.Applicative.$fAlternativeSTM{v rk} [gid[DFunId]] = > [] \u srt:SRT:[] [] > let { > sat_s1oj{v} [lid] = > [] \r srt:SRT:[] [eta_B1{v} [lid]] retry#{v} [eta_B1{v} > [lid]]; > } in > base:Control.Applicative.D:Alternative{d rra} > [base:Control.Applicative.$fApplicativeSTM{v r2q} [gid[DFunId]] > sat_s1oj{v} > [lid] > base:GHC.Conc.orElse1{v re9} [gid] > base:Control.Applicative.$fAlternativeSTM3{v r2n} [gid] > base:Control.Applicative.$fAlternativeSTM1{v r2l} [gid]]; > > Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug > }}} > > This is on the 32bit MSRC machine by the way. On my own laptop running > Ubuntu 10.04 I don't get this (bootstrap compiler is 6.12.1 though). New description: While comping GHC Head using the devel1 flavour and ghc-6.12.2 as the bootstrap compiler, I get the following assertion failure: {{{ "inplace/bin/ghc-stage1" -H64m -O -fasm -package-name base-4.3.0.0 -hide-all-packages -i -ilibraries/base/. -ilibraries/base/dist- install/build -ilibraries/base/dist-install/build/autogen -Ilibraries/base /dist-install/build -Ilibraries/base/dist-install/build/autogen -Ilibraries/base/include -optP-DOPTIMISE_INTEGER_GCD_LCM -optP-include -optPlibraries/base/dist-install/build/autogen/cabal_macros.h -package ghc-prim-0.2.0.0 -package integer-gmp-0.2.0.0 -package rts-1.0 -package- name base -XMagicHash -XExistentialQuantification -XRank2Types -XScopedTypeVariables -XUnboxedTuples -XForeignFunctionInterface -XUnliftedFFITypes -XDeriveDataTypeable -XGeneralizedNewtypeDeriving -XFlexibleInstances -XStandaloneDeriving -XPatternGuards -XEmptyDataDecls -XNoImplicitPrelude -XCPP -no-user-package-conf -rtsopts -O -dcore-lint -fno-warn-deprecated-flags -odir libraries/base/dist-install/build -hidir libraries/base/dist-install/build -stubdir libraries/base/dist- install/build -hisuf hi -osuf o -hcsuf hc -c libraries/base/./Control/Applicative.hs -o libraries/base/dist- install/build/Control/Applicative.o WARNING: file compiler/simplCore/CSE.lhs line 349 a_aup WARNING: file compiler/simplCore/CSE.lhs line 349 a_aup WARNING: file compiler/stgSyn/CoreToStg.lhs line 220 Control.Applicative.$fAlternativeSTM ghc-stage1: panic! (the 'impossible' happened) (GHC version 6.13 for i386-unknown-linux): ASSERT failed! file compiler/stgSyn/CoreToStg.lhs line 187 ...blah... base:Control.Applicative.$fAlternativeSTM{v rk} [gid[DFunId]] = [] \u srt:SRT:[] [] let { sat_s1oj{v} [lid] = [] \r srt:SRT:[] [eta_B1{v} [lid]] retry#{v} [eta_B1{v} [lid]]; } in base:Control.Applicative.D:Alternative{d rra} [base:Control.Applicative.$fApplicativeSTM{v r2q} [gid[DFunId]] sat_s1oj{v} [lid] base:GHC.Conc.orElse1{v re9} [gid] base:Control.Applicative.$fAlternativeSTM3{v r2n} [gid] base:Control.Applicative.$fAlternativeSTM1{v r2l} [gid]]; Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug }}} This is on the 32bit MSRC machine by the way. On my own laptop running Ubuntu 10.04 I don't get this (bootstrap compiler is 6.12.1 though). -- Comment(by simonpj): Fixed by {{{ Mon Jun 14 14:27:26 BST 2010 simo...@microsoft.com * Gruesome fix in CorePrep to fix embarassing Trac #4121 This is a long-lurking bug that has been flushed into the open by other arity-related changes. There's a long comment Note [CafInfo and floating] to explain. I really hate the contortions we have to do through to keep correct CafRef information on top-level binders. The Right Thing, I believe, is to compute CAF and arity information later, and merge it into the interface-file information when the latter is generated. But for now, this hackily fixes the problem. M ./compiler/coreSyn/CorePrep.lhs -40 +120 }}} However we need a more general fix; `Note [CafInfo and floating]` concludes {{{ This is all very gruesome and horrible. It would be better to figure out CafInfo later, after CorePrep. We'll do that in due course. Meanwhile this horrible hack works. }}} So I'll re-titling the ticket. Simon -- Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4121#comment:2> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler _______________________________________________ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs