Ticket #1958 (closed bug: fixed)

Opened 4 years ago

Last modified 4 years ago

collect2: ld terminated with signal 10 [Bus error]: Building parsec on a PPC Mac OS X 10.5 Leopard as part of GHC 6.9

Reported by: thorkilnaur Owned by: thorkilnaur
Priority: high Milestone: Not GHC
Component: Compiler Version: 6.8.2
Keywords: Cc:
Operating System: MacOS X Architecture: powerpc
Type of failure: Difficulty: Unknown
Test Case: Blocked By:
Blocking: Related Tickets:

Description

On a PPC Mac OS X 10.5 Leopard, building GHC 6.9 with mk/build.mk set to mk/build.mk.sample with BuildFlavour = perf and extra libraries included, matters are brought to a halt at:

../../compiler/stage1/ghc-inplace -package-name parsec-2.0 -hide-all-packages -split-objs -i -idist/build/autogen -idist/build -i. -Idist/build -odir dist/build -hidir dist/build -stubdir dist/build -package base-3.0 -O -XExistentialQuantification -XPolymorphicComponents -idist/build  -H32m -O2  -c Text/ParserCombinators/Parsec/Token.hs -o dist/build/Text/ParserCombinators/Parsec/Token.o  -ohi dist/build/Text/ParserCombinators/Parsec/Token.hi
collect2: ld terminated with signal 10 [Bus error]
make[2]: *** [dist/build/Text/ParserCombinators/Parsec/Token.o] Error 1
make[1]: *** [make.library.parsec] Error 2
make: *** [stage1] Error 2

This has been reported earlier: See  http://www.haskell.org/pipermail/glasgow-haskell-users/2007-November/013407.html and perhaps elsewhere. I have currently isolated the problem to a single .s file, part of object-splitting the code generated for Token.hs, for which assembling using gcc followed by linking with ld -r provokes the bus error. The case is still rather large, however, and I will reduce some more before reporting the details.

I currently suspect a problem in the Mac 10.5 Leopard linker, in addition to the problem reported in #1843. The problem does not occur on 10.4 Tiger.

Attachments

Work_around_PPC_Mac_OS_X_Leopard_ld_Bus_error_illustrative_only.dpatch.gz Download (15.3 KB) - added by thorkilnaur 4 years ago.
Work around PPC Mac OS X Leopard ld Bus error (illustrative only)

Change History

  Changed 4 years ago by thorkilnaur

I have reduced the size of the assembler file that tickles what I still believe is a Leopard linker error to this:

thorkil-naurs-mac-mini:split438 thorkilnaur$ cat g17.s 
.const_data
.align 2
_parseczm2zi0_TextziParserCombinatorsziParsecziToken_makeTokenParser_srt:
        .long   0
.text
.align 2
        .long   _parseczm2zi0_TextziParserCombinatorsziParsecziToken_makeTokenParser_srt-(_s58i_info)+24
_s58i_info:
        .long   0

.symbol_stub
L_u_iswalpha$stub:
        .indirect_symbol _u_iswalpha
        lis r11,ha16(L_u_iswalpha$lazy_ptr)
        lwz r12,lo16(L_u_iswalpha$lazy_ptr)(r11)
        mtctr r12
        addi r11,r11,lo16(L_u_iswalpha$lazy_ptr)
        bctr
.lazy_symbol_pointer
L_u_iswalpha$lazy_ptr:
        .indirect_symbol _u_iswalpha
        .long dyld_stub_binding_helper
.subsections_via_symbols
thorkil-naurs-mac-mini:split438 thorkilnaur$ 

I get the Bus error as follows:

thorkil-naurs-mac-mini:split438 thorkilnaur$ gcc -c g17.s
thorkil-naurs-mac-mini:split438 thorkilnaur$ ld -r g17.o
Bus error
thorkil-naurs-mac-mini:split438 thorkilnaur$ 

Here are some things that I can do that removes the Bus error reaction:

  • Change the initial .const_data to .text.
  • Change .long _parseczm2zi0_TextziParserCombinatorsziParsecziToken_makeTokenParser_srt-(_s58i_info)+24 to .long 0.
  • Remove the entire tail of the file that begins with .symbol_stub.

 http://www.haskell.org/pipermail/glasgow-haskell-users/2007-November/013447.html reports that:

The ld executable used is actually from the ld64 project and not the cctools project. The cctools' ld is installed as ld_classic on OS X. In theory this should be the same linker as on Tiger and could be used instead of the ld from ld64. That might be a good workaround till ld is fixed: Update ghc's SysTools to use ld_classic instead of ld.

This is confirmed by the behaviour of the Leopard linker compared to the Tiger linker, in particular the wording of error messages when reporting on the same error.

I have not found a way to replace ld by ld_classic in the GHC build process. I have tried:

  • looking for ways to make gcc use ld_classic and, in turn, GHC call gcc to make this happen. I have not found such a way.
  • creating a static link earlier than ld in the path that points to ld_classic, but this fails to replace the ld uses by gcc
  • replacing the link /usr/libexec/gcc/powerpc-apple-darwin9/4.0.1/ld -> ../../../../bin/ld, but that causes GHC configure (and also ordinary gcc compiles) to fail with
     /usr/libexec/gcc/powerpc-apple-darwin9/4.0.1/ld: /usr/lib/gcc/powerpc-apple-darwin9/4.0.1/../../../libSystem.dylib unknown flags (type) of section 9 (__TEXT,__dof_plockstat) in load command 0
     /usr/libexec/gcc/powerpc-apple-darwin9/4.0.1/ld: /usr/lib/libSystem.B.dylib unknown flags (type) of section 9 (__TEXT,__dof_plockstat) in load command 0
     collect2: ld returned 1 exit status
    

The basic problem that the Leopard linker apparently fails to solve in some cases is the evaluation of the expression _parseczm2zi0_TextziParserCombinatorsziParsecziToken_makeTokenParser_srt-(_s58i_info)+24 in line 7 of g17.s. The two symbols are defined in different sections (.const_data and .text, respectively) which seems significant. But whether this indicates any reasonable workaround in, say, the GHC code generator, I cannot tell.

In any case, I would welcome some ideas about further directions for this investigation. I will happily supply any additional details.

Best regards Thorkil

  Changed 4 years ago by igloo

  • milestone set to 6.8.3

  Changed 4 years ago by igloo

  • priority changed from normal to high

  Changed 4 years ago by thorkilnaur

I reported this problem to Apple today: Bug ID# 5655246 (PPC Leopard (Xcode 3.0) linker ld gets "Bus error" sometimes).

Best regards Thorkil

  Changed 4 years ago by thorkilnaur

  • owner set to thorkilnaur

I will try to do something here.

Best regards Thorkil

follow-up: ↓ 7   Changed 4 years ago by eelco

Hi Thorkil,

I encounter the dreaded 'Bus error' also when trying to build GHC 6.8.2 on PPC OS X 10.5. It fails on the network library when building with extralibs...

../../compiler/stage1/ghc-inplace -package-name network-2.1.0.0 -hide-all-packages -split-objs -i -idist/build/autogen -idist/build -i. -Idist/build -Iinclude -optc-DCALLCONV=ccall -#include "HsNet.h" -odir dist/build -hidir dist/build -stubdir dist/build -package base-3.0.1.0 -package parsec-2.1.0.0 -O -DCALLCONV=ccall -XCPP -idist/build  -H16m -O -O -Rghc-timing -fgenerics -c Network.hs -o dist/build/Network.o  -ohi dist/build/Network.hi
collect2: ld terminated with signal 10 [Bus error]
<<ghc: 99622432 bytes, 16 GCs, 4841188/7994224 avg/max bytes residency (3 samples), 21M in use, 0.00 INIT (0.00 elapsed), 1.03 MUT (5.71 elapsed), 0.42 GC (0.55 elapsed) :ghc>>
make[2]: *** [dist/build/Network.o] Error 1
make[1]: *** [make.library.network] Error 2
make: *** [stage1] Error 2

... and when trying to link HSghc.o in stage 2 when building without the extralibs.

make -C compiler stage=2
/usr/bin/ld -r -x -o HSghc.o  stage2/basicTypes/BasicTypes.o
...
make[2]: *** [HSghc.o] Bus error
make[2]: *** Deleting file `HSghc.o'
make[1]: *** [stage2] Error 2
make: *** [bootstrap2] Error 2

I also tried using ld_classic, simply by running ./configure --with-ld=/usr/bin/ld_classic before making. Unfortunately, this causes GHC (stage1) to panic:

../../compiler/stage1/ghc-inplace -package-name base-3.0.1.0 -hide-all-packages -split-objs -i -idist/build/autogen -idist/build -i. -Idist/build -Iinclude -#include "HsBase.h" -odir dist/build -hidir dist/build -stubdir dist/build -package rts-1.0 -O -fglasgow-exts -package-name base -XCPP -idist/build  -prof -hisuf p_hi -hcsuf p_hc -osuf p_o -H16m -O -O -Rghc-timing -fgenerics -c GHC/PrimopWrappers.hs -o dist/build/GHC/PrimopWrappers.p_o  -ohi dist/build/GHC/PrimopWrappers.p_hi
ghc-6.8.2: panic! (the 'impossible' happened)
  (GHC version 6.8.2 for powerpc-apple-darwin):
	lookupVers1 base:GHC.Prim Int#{tc}

in reply to: ↑ 6   Changed 4 years ago by eelco

Replying to eelco:

I also tried using ld_classic, simply by running ./configure --with-ld=/usr/bin/ld_classic before making. Unfortunately, this causes GHC (stage1) to panic:

Sorry, this must have been caused by something else. A completely clean build with ld_classic fails with the bus error again.

make -f Makefile.ghcbin -r HS_PROG=stage2/ghc-6.8.2 stage2/ghc-6.8.2
../compiler/stage1/ghc-inplace -o stage2/ghc-6.8.2 -H16m -O -package ghc -Istage2 -cpp -fglasgow-exts -fno-generics -Rghc-timing -I. -IcodeGen -InativeGen -Iparser -Rghc-timing  -DGHCI -threaded -fforce-recomp        stage2/main/Main.o   
collect2: ld terminated with signal 10 [Bus error]
<<ghc: 14764812 bytes, 4 GCs, 111888/111888 avg/max bytes residency (1 samples), 16M in use, 0.00 INIT (0.00 elapsed), 0.06 MUT (57.04 elapsed), 0.03 GC (0.07 elapsed) :ghc>>
make[3]: *** [stage2/ghc-6.8.2] Error 1
make[2]: *** [stage2/ghc-6.8.2] Error 2
make[1]: *** [stage2] Error 2
make: *** [bootstrap2] Error 2

  Changed 4 years ago by eelco

I finally succeeded doing a GHC 6.8.2 build by running ./configure --with-ld=/usr/bin/ld_classic and a mk/build.mk (copied from the sample) with build flavour 'quickest'.

  Changed 4 years ago by thorkilnaur

Thanks a lot for this information. I would assume that the PPC Mac OS X Leopard builder fails to build stage 2 for the same reason ( http://darcs.haskell.org/buildbot/all/tnaur%20PPC%20OSX%20head%202/builds/20/step-stage2/0):

/usr/bin/ld -r -x -o HSghc.o  stage2/basicTypes/BasicTypes.o stage2/basicTypes/DataCon.o stage2/basicTypes/Demand.o stage2/basicTypes/Id.o stage2/basicTypes/IdInfo.o stage2/basicTypes/Literal.o stage2/basicTypes/MkId.o stage2/basicTypes/Module.o stage2/basicTypes/Name.o stage2/basicTypes/NameEnv.o stage2/basicTypes/NameSet.o stage2/basicTypes/NewDemand.o stage2/basicTypes/OccName.o stage2/basicTypes/RdrName.o stage2/basicTypes/SrcLoc.o stage2/basicTypes/UniqSupply.o stage2/basicTypes/Unique.o stage2/basicTypes/Var.o stage2/basicTypes/VarEnv.o stage2/basicTypes/VarSet.o stage2/cmm/CLabel.o stage2/cmm/Cmm.o stage2/cmm/CmmBrokenBlock.o stage2/cmm/CmmCPS.o stage2/cmm/CmmCPSGen.o stage2/cmm/CmmCPSZ.o stage2/cmm/CmmCallConv.o stage2/cmm/CmmContFlowOpt.o stage2/cmm/CmmCvt.o stage2/cmm/CmmExpr.o stage2/cmm/CmmInfo.o stage2/cmm/CmmLex.o stage2/cmm/CmmLint.o stage2/cmm/CmmLive.o stage2/cmm/CmmLiveZ.o stage2/cmm/CmmOpt.o stage2/cmm/CmmParse.o stage2/cmm/CmmProcPoint.o stage2/cmm/CmmProcPointZ.o stage2/cmm/CmmSpillReload.o stage2/cmm/CmmTx.o stage2/cmm/CmmUtils.o stage2/cmm/CmmZipUtil.o stage2/cmm/DFMonad.o stage2/cmm/Dataflow.o stage2/cmm/MachOp.o stage2/cmm/MkZipCfg.o stage2/cmm/MkZipCfgCmm.o stage2/cmm/OptimizationFuel.o stage2/cmm/PprC.o stage2/cmm/PprCmm.o stage2/cmm/PprCmmZ.o stage2/cmm/StackColor.o stage2/cmm/StackPlacements.o stage2/cmm/ZipCfg.o stage2/cmm/ZipCfgCmmRep.o stage2/cmm/ZipCfgExtras.o stage2/cmm/ZipDataflow0.o stage2/codeGen/Bitmap.o stage2/codeGen/CgBindery.o stage2/codeGen/CgCallConv.o stage2/codeGen/CgCase.o stage2/codeGen/CgClosure.o stage2/codeGen/CgCon.o stage2/codeGen/CgExpr.o stage2/codeGen/CgForeignCall.o stage2/codeGen/CgHeapery.o stage2/codeGen/CgHpc.o stage2/codeGen/CgInfoTbls.o stage2/codeGen/CgLetNoEscape.o stage2/codeGen/CgMonad.o stage2/codeGen/CgParallel.o stage2/codeGen/CgPrimOp.o stage2/codeGen/CgProf.o stage2/codeGen/CgStackery.o stage2/codeGen/CgTailCall.o stage2/codeGen/CgTicky.o stage2/codeGen/CgUtils.o stage2/codeGen/ClosureInfo.o stage2/codeGen/CodeGen.o stage2/codeGen/SMRep.o stage2/coreSyn/CoreFVs.o stage2/coreSyn/CoreLint.o stage2/coreSyn/CorePrep.o stage2/coreSyn/CoreSubst.o stage2/coreSyn/CoreSyn.o stage2/coreSyn/CoreTidy.o stage2/coreSyn/CoreUnfold.o stage2/coreSyn/CoreUtils.o stage2/coreSyn/ExternalCore.o stage2/coreSyn/MkExternalCore.o stage2/coreSyn/PprCore.o stage2/coreSyn/PprExternalCore.o stage2/cprAnalysis/CprAnalyse.o stage2/deSugar/Check.o stage2/deSugar/Coverage.o stage2/deSugar/Desugar.o stage2/deSugar/DsArrows.o stage2/deSugar/DsBinds.o stage2/deSugar/DsCCall.o stage2/deSugar/DsExpr.o stage2/deSugar/DsForeign.o stage2/deSugar/DsGRHSs.o stage2/deSugar/DsListComp.o stage2/deSugar/DsMeta.o stage2/deSugar/DsMonad.o stage2/deSugar/DsUtils.o stage2/deSugar/Match.o stage2/deSugar/MatchCon.o stage2/deSugar/MatchLit.o stage2/ghci/ByteCodeAsm.o stage2/ghci/ByteCodeFFI.o stage2/ghci/ByteCodeGen.o stage2/ghci/ByteCodeInstr.o stage2/ghci/ByteCodeItbls.o stage2/ghci/ByteCodeLink.o stage2/ghci/Debugger.o stage2/ghci/GhciMonad.o stage2/ghci/GhciTags.o stage2/ghci/InteractiveUI.o stage2/ghci/Linker.o stage2/ghci/ObjLink.o stage2/ghci/RtClosureInspect.o stage2/hsSyn/Convert.o stage2/hsSyn/HsBinds.o stage2/hsSyn/HsDecls.o stage2/hsSyn/HsDoc.o stage2/hsSyn/HsExpr.o stage2/hsSyn/HsImpExp.o stage2/hsSyn/HsLit.o stage2/hsSyn/HsPat.o stage2/hsSyn/HsSyn.o stage2/hsSyn/HsTypes.o stage2/hsSyn/HsUtils.o stage2/iface/BinIface.o stage2/iface/BuildTyCl.o stage2/iface/IfaceEnv.o stage2/iface/IfaceSyn.o stage2/iface/IfaceType.o stage2/iface/LoadIface.o stage2/iface/MkIface.o stage2/iface/TcIface.o stage2/main/BreakArray.o stage2/main/CmdLineParser.o stage2/main/CodeOutput.o stage2/main/Config.o stage2/main/Constants.o stage2/main/DriverMkDepend.o stage2/main/DriverPhases.o stage2/main/DriverPipeline.o stage2/main/DynFlags.o stage2/main/ErrUtils.o stage2/main/Finder.o stage2/main/GHC.o stage2/main/HeaderInfo.o stage2/main/HscMain.o stage2/main/HscStats.o stage2/main/HscTypes.o stage2/main/InteractiveEval.o stage2/main/PackageConfig.o stage2/main/Packages.o stage2/main/ParsePkgConf.o stage2/main/PprTyThing.o stage2/main/StaticFlags.o stage2/main/SysTools.o stage2/main/TidyPgm.o stage2/nativeGen/AsmCodeGen.o stage2/nativeGen/MachCodeGen.o stage2/nativeGen/MachInstrs.o stage2/nativeGen/MachRegs.o stage2/nativeGen/NCGMonad.o stage2/nativeGen/PositionIndependentCode.o stage2/nativeGen/PprMach.o stage2/nativeGen/RegAllocColor.o stage2/nativeGen/RegAllocInfo.o stage2/nativeGen/RegAllocLinear.o stage2/nativeGen/RegAllocStats.o stage2/nativeGen/RegArchBase.o stage2/nativeGen/RegArchX86.o stage2/nativeGen/RegCoalesce.o stage2/nativeGen/RegLiveness.o stage2/nativeGen/RegSpill.o stage2/nativeGen/RegSpillClean.o stage2/nativeGen/RegSpillCost.o stage2/ndpFlatten/FlattenInfo.o stage2/ndpFlatten/FlattenMonad.o stage2/ndpFlatten/Flattening.o stage2/ndpFlatten/NDPCoreUtils.o stage2/ndpFlatten/PArrAnal.o stage2/parser/Ctype.o stage2/parser/HaddockLex.o stage2/parser/HaddockParse.o stage2/parser/HaddockUtils.o stage2/parser/LexCore.o stage2/parser/Lexer.o stage2/parser/Parser.o stage2/parser/ParserCore.o stage2/parser/ParserCoreUtils.o stage2/parser/RdrHsSyn.o stage2/prelude/ForeignCall.o stage2/prelude/PrelInfo.o stage2/prelude/PrelNames.o stage2/prelude/PrelRules.o stage2/prelude/PrimOp.o stage2/prelude/TysPrim.o stage2/prelude/TysWiredIn.o stage2/profiling/CostCentre.o stage2/profiling/SCCfinal.o stage2/rename/RnBinds.o stage2/rename/RnEnv.o stage2/rename/RnExpr.o stage2/rename/RnHsDoc.o stage2/rename/RnHsSyn.o stage2/rename/RnNames.o stage2/rename/RnPat.o stage2/rename/RnSource.o stage2/rename/RnTypes.o stage2/simplCore/CSE.o stage2/simplCore/FloatIn.o stage2/simplCore/FloatOut.o stage2/simplCore/LiberateCase.o stage2/simplCore/OccurAnal.o stage2/simplCore/SAT.o stage2/simplCore/SATMonad.o stage2/simplCore/SetLevels.o stage2/simplCore/SimplCore.o stage2/simplCore/SimplEnv.o stage2/simplCore/SimplMonad.o stage2/simplCore/SimplUtils.o stage2/simplCore/Simplify.o stage2/simplStg/SRT.o stage2/simplStg/SimplStg.o stage2/simplStg/StgStats.o stage2/specialise/Rules.o stage2/specialise/SpecConstr.o stage2/specialise/Specialise.o stage2/stgSyn/CoreToStg.o stage2/stgSyn/StgLint.o stage2/stgSyn/StgSyn.o stage2/stranal/DmdAnal.o stage2/stranal/SaAbsInt.o stage2/stranal/SaLib.o stage2/stranal/StrictAnal.o stage2/stranal/WorkWrap.o stage2/stranal/WwLib.o stage2/typecheck/FamInst.o stage2/typecheck/Inst.o stage2/typecheck/TcArrows.o stage2/typecheck/TcBinds.o stage2/typecheck/TcClassDcl.o stage2/typecheck/TcDefaults.o stage2/typecheck/TcDeriv.o stage2/typecheck/TcEnv.o stage2/typecheck/TcExpr.o stage2/typecheck/TcForeign.o stage2/typecheck/TcGadt.o stage2/typecheck/TcGenDeriv.o stage2/typecheck/TcHsSyn.o stage2/typecheck/TcHsType.o stage2/typecheck/TcInstDcls.o stage2/typecheck/TcMType.o stage2/typecheck/TcMatches.o stage2/typecheck/TcPat.o stage2/typecheck/TcRnDriver.o stage2/typecheck/TcRnMonad.o stage2/typecheck/TcRnTypes.o stage2/typecheck/TcRules.o stage2/typecheck/TcSimplify.o stage2/typecheck/TcSplice.o stage2/typecheck/TcTyClsDecls.o stage2/typecheck/TcTyDecls.o stage2/typecheck/TcTyFuns.o stage2/typecheck/TcType.o stage2/typecheck/TcUnify.o stage2/types/Class.o stage2/types/Coercion.o stage2/types/FamInstEnv.o stage2/types/FunDeps.o stage2/types/Generics.o stage2/types/InstEnv.o stage2/types/TyCon.o stage2/types/Type.o stage2/types/TypeRep.o stage2/types/Unify.o stage2/utils/Bag.o stage2/utils/Binary.o stage2/utils/BufWrite.o stage2/utils/Digraph.o stage2/utils/Encoding.o stage2/utils/FastMutInt.o stage2/utils/FastString.o stage2/utils/FastTypes.o stage2/utils/FiniteMap.o stage2/utils/GraphBase.o stage2/utils/GraphColor.o stage2/utils/GraphOps.o stage2/utils/GraphPpr.o stage2/utils/IOEnv.o stage2/utils/Interval.o stage2/utils/ListSetOps.o stage2/utils/Maybes.o stage2/utils/OrdList.o stage2/utils/Outputable.o stage2/utils/Panic.o stage2/utils/Pretty.o stage2/utils/State.o stage2/utils/StringBuffer.o stage2/utils/UniqFM.o stage2/utils/UniqSet.o stage2/utils/Util.o stage2/vectorise/VectBuiltIn.o stage2/vectorise/VectCore.o stage2/vectorise/VectMonad.o stage2/vectorise/VectType.o stage2/vectorise/VectUtils.o stage2/vectorise/Vectorise.o stage2/parser/cutils.o
make[1]: *** [HSghc.o] Bus error
make[1]: *** Deleting file `HSghc.o'
make: *** [stage2] Error 2

I have looked a bit more into this and still believe that it is a Leopard ld problem. Although I am not able to understand what goes on with the failing PPC code in detail, I am a bit concerned about the use of an expression that subtracts a .text section relocatable symbol from a .const_data section relocatable symbol: The Apple Assembler documentation seems to suggest that this is invalid (see section headed "Relocatable Expressions" in  http://developer.apple.com/documentation/DeveloperTools/Reference/Assembler/Assembler.pdf).

Although I am not sure of the difference between .const_data and .text, I tried to change the code generator to replace .const_data sections with .text sections as indicated in the attached patch. The resulting compiler is able to pass the sore spots encountered earlier. It is also able to pass validate with relatively few errors reported, but I am not sure that this is particularly significant. For completion, the errors reported are

OVERALL SUMMARY for test run started at Wed Jan  2 09:53:41 CET 2008
    2051 total tests, which gave rise to
    7771 test cases, of which
       1 caused framework failures
    6026 were skipped

    1666 expected passes
      76 expected failures
       0 unexpected passes
       3 unexpected failures

Unexpected failures:
   currentDirectory001(normal)
   directory001(normal)
   ghci024(ghci)

but I don't believe that they are relevant to this issue.

Suggestions for further investigation are most welcome.

Best regards Thorkil

Changed 4 years ago by thorkilnaur

Work around PPC Mac OS X Leopard ld Bus error (illustrative only)

  Changed 4 years ago by eelco

I haven't spent much time on this (because I compiling GHC wasn't the final goal ;), but the compiler built with 'quickest' gave some strange errors concerning interface files when trying to build HAppS. So I tried building 6.8.2 again, again with ld_classic, but now with build flavor 'quick'. I had to restart the build 3 or 4 times, since it segfaulted on (seemingly) random files. After that I tried building HAppS again. Unfortunately, I got stuck at the same point, this time with a panic.

[10 of 18] Compiling HAppS.State.Transaction ( src/HAppS/State/Transaction.hs, dist/build/HAppS/State/Transaction.o )

src/HAppS/State/Transaction.hs:264:42:
    Warning: Defined but not used: `logger'

src/HAppS/State/Transaction.hs:264:52:
    Warning: Defined but not used: `ev'
ghc-6.8.2: panic! (the 'impossible' happened)
  (GHC version 6.8.2 for powerpc-apple-darwin):
	splitFunTy
    <nt>base:GHC.Conc.STM{tc r2T} base:GHC.Base.(){(w) tc 40}

  Changed 4 years ago by thorkilnaur

Trying a few combinations of compiler options shows: With

SRC_HC_OPTS   = -H32m -O2
GhcHcOpts     = -Rghc-timing
GhcLibHcOpts  =
GhcLibWays    =

in mk/build.mk, the build ends with:

../../compiler/stage1/ghc-inplace -package-name unix-2.2 -hide-all-packages -split-objs -i -idist/build/autogen -idist/build -i. -Idist/build -Iinclude -#include "HsUnix.h" -#include "execvpe.h" -odir dist/build -hidir dist/build -stubdir dist/build -package base-3.0 -package directory-1.0 -O -XCPP -XForeignFunctionInterface -idist/build  -H32m -O2  -c dist/build/System/Posix/Semaphore.hs -o dist/build/System/Posix/Semaphore.o  -ohi dist/build/System/Posix/Semaphore.hi
collect2: ld terminated with signal 10 [Bus error]
make[2]: *** [dist/build/System/Posix/Semaphore.o] Error 1
make[1]: *** [make.library.unix] Error 2
make: *** [stage1] Error 2

(The extra-packages are included in this build.) If I then change mk/build.mk to

SRC_HC_OPTS   = -H32m -O2
GhcHcOpts     = -Rghc-timing
GhcLibHcOpts  =
GhcLibWays    =
SplitObjs     = NO

the build ends with:

/usr/bin/ld -r -x -o HSghc.o  stage2/basicTypes/BasicTypes.o stage2/basicTypes/DataCon.o stage2/basicTypes/Demand.o stage2/basicTypes/Id.o stage2/basicTypes/IdInfo.o stage2/basicTypes/Literal.o stage2/basicTypes/MkId.o stage2/basicTypes/Module.o stage2/basicTypes/Name.o stage2/basicTypes/NameEnv.o stage2/basicTypes/NameSet.o stage2/basicTypes/NewDemand.o stage2/basicTypes/OccName.o stage2/basicTypes/RdrName.o stage2/basicTypes/SrcLoc.o stage2/basicTypes/UniqSupply.o stage2/basicTypes/Unique.o stage2/basicTypes/Var.o stage2/basicTypes/VarEnv.o stage2/basicTypes/VarSet.o stage2/cmm/CLabel.o stage2/cmm/Cmm.o stage2/cmm/CmmBrokenBlock.o stage2/cmm/CmmCPS.o stage2/cmm/CmmCPSGen.o stage2/cmm/CmmCPSZ.o stage2/cmm/CmmCallConv.o stage2/cmm/CmmContFlowOpt.o stage2/cmm/CmmCvt.o stage2/cmm/CmmExpr.o stage2/cmm/CmmInfo.o stage2/cmm/CmmLex.o stage2/cmm/CmmLint.o stage2/cmm/CmmLive.o stage2/cmm/CmmLiveZ.o stage2/cmm/CmmOpt.o stage2/cmm/CmmParse.o stage2/cmm/CmmProcPoint.o stage2/cmm/CmmProcPointZ.o stage2/cmm/CmmSpillReload.o stage2/cmm/CmmTx.o stage2/cmm/CmmUtils.o stage2/cmm/CmmZipUtil.o stage2/cmm/DFMonad.o stage2/cmm/Dataflow.o stage2/cmm/MachOp.o stage2/cmm/MkZipCfg.o stage2/cmm/MkZipCfgCmm.o stage2/cmm/OptimizationFuel.o stage2/cmm/PprC.o stage2/cmm/PprCmm.o stage2/cmm/PprCmmZ.o stage2/cmm/StackColor.o stage2/cmm/StackPlacements.o stage2/cmm/ZipCfg.o stage2/cmm/ZipCfgCmmRep.o stage2/cmm/ZipCfgExtras.o stage2/cmm/ZipDataflow0.o stage2/codeGen/Bitmap.o stage2/codeGen/CgBindery.o stage2/codeGen/CgCallConv.o stage2/codeGen/CgCase.o stage2/codeGen/CgClosure.o stage2/codeGen/CgCon.o stage2/codeGen/CgExpr.o stage2/codeGen/CgForeignCall.o stage2/codeGen/CgHeapery.o stage2/codeGen/CgHpc.o stage2/codeGen/CgInfoTbls.o stage2/codeGen/CgLetNoEscape.o stage2/codeGen/CgMonad.o stage2/codeGen/CgParallel.o stage2/codeGen/CgPrimOp.o stage2/codeGen/CgProf.o stage2/codeGen/CgStackery.o stage2/codeGen/CgTailCall.o stage2/codeGen/CgTicky.o stage2/codeGen/CgUtils.o stage2/codeGen/ClosureInfo.o stage2/codeGen/CodeGen.o stage2/codeGen/SMRep.o stage2/coreSyn/CoreFVs.o stage2/coreSyn/CoreLint.o stage2/coreSyn/CorePrep.o stage2/coreSyn/CoreSubst.o stage2/coreSyn/CoreSyn.o stage2/coreSyn/CoreTidy.o stage2/coreSyn/CoreUnfold.o stage2/coreSyn/CoreUtils.o stage2/coreSyn/ExternalCore.o stage2/coreSyn/MkExternalCore.o stage2/coreSyn/PprCore.o stage2/coreSyn/PprExternalCore.o stage2/cprAnalysis/CprAnalyse.o stage2/deSugar/Check.o stage2/deSugar/Coverage.o stage2/deSugar/Desugar.o stage2/deSugar/DsArrows.o stage2/deSugar/DsBinds.o stage2/deSugar/DsCCall.o stage2/deSugar/DsExpr.o stage2/deSugar/DsForeign.o stage2/deSugar/DsGRHSs.o stage2/deSugar/DsListComp.o stage2/deSugar/DsMeta.o stage2/deSugar/DsMonad.o stage2/deSugar/DsUtils.o stage2/deSugar/Match.o stage2/deSugar/MatchCon.o stage2/deSugar/MatchLit.o stage2/ghci/ByteCodeAsm.o stage2/ghci/ByteCodeFFI.o stage2/ghci/ByteCodeGen.o stage2/ghci/ByteCodeInstr.o stage2/ghci/ByteCodeItbls.o stage2/ghci/ByteCodeLink.o stage2/ghci/Debugger.o stage2/ghci/GhciMonad.o stage2/ghci/GhciTags.o stage2/ghci/InteractiveUI.o stage2/ghci/Linker.o stage2/ghci/ObjLink.o stage2/ghci/RtClosureInspect.o stage2/hsSyn/Convert.o stage2/hsSyn/HsBinds.o stage2/hsSyn/HsDecls.o stage2/hsSyn/HsDoc.o stage2/hsSyn/HsExpr.o stage2/hsSyn/HsImpExp.o stage2/hsSyn/HsLit.o stage2/hsSyn/HsPat.o stage2/hsSyn/HsSyn.o stage2/hsSyn/HsTypes.o stage2/hsSyn/HsUtils.o stage2/iface/BinIface.o stage2/iface/BuildTyCl.o stage2/iface/IfaceEnv.o stage2/iface/IfaceSyn.o stage2/iface/IfaceType.o stage2/iface/LoadIface.o stage2/iface/MkIface.o stage2/iface/TcIface.o stage2/main/BreakArray.o stage2/main/CmdLineParser.o stage2/main/CodeOutput.o stage2/main/Config.o stage2/main/Constants.o stage2/main/DriverMkDepend.o stage2/main/DriverPhases.o stage2/main/DriverPipeline.o stage2/main/DynFlags.o stage2/main/ErrUtils.o stage2/main/Finder.o stage2/main/GHC.o stage2/main/HeaderInfo.o stage2/main/HscMain.o stage2/main/HscStats.o stage2/main/HscTypes.o stage2/main/InteractiveEval.o stage2/main/PackageConfig.o stage2/main/Packages.o stage2/main/ParsePkgConf.o stage2/main/PprTyThing.o stage2/main/StaticFlags.o stage2/main/SysTools.o stage2/main/TidyPgm.o stage2/nativeGen/AsmCodeGen.o stage2/nativeGen/MachCodeGen.o stage2/nativeGen/MachInstrs.o stage2/nativeGen/MachRegs.o stage2/nativeGen/NCGMonad.o stage2/nativeGen/PositionIndependentCode.o stage2/nativeGen/PprMach.o stage2/nativeGen/RegAllocColor.o stage2/nativeGen/RegAllocInfo.o stage2/nativeGen/RegAllocLinear.o stage2/nativeGen/RegAllocStats.o stage2/nativeGen/RegArchBase.o stage2/nativeGen/RegArchX86.o stage2/nativeGen/RegCoalesce.o stage2/nativeGen/RegLiveness.o stage2/nativeGen/RegSpill.o stage2/nativeGen/RegSpillClean.o stage2/nativeGen/RegSpillCost.o stage2/ndpFlatten/FlattenInfo.o stage2/ndpFlatten/FlattenMonad.o stage2/ndpFlatten/Flattening.o stage2/ndpFlatten/NDPCoreUtils.o stage2/ndpFlatten/PArrAnal.o stage2/parser/Ctype.o stage2/parser/HaddockLex.o stage2/parser/HaddockParse.o stage2/parser/HaddockUtils.o stage2/parser/LexCore.o stage2/parser/Lexer.o stage2/parser/Parser.o stage2/parser/ParserCore.o stage2/parser/ParserCoreUtils.o stage2/parser/RdrHsSyn.o stage2/prelude/ForeignCall.o stage2/prelude/PrelInfo.o stage2/prelude/PrelNames.o stage2/prelude/PrelRules.o stage2/prelude/PrimOp.o stage2/prelude/TysPrim.o stage2/prelude/TysWiredIn.o stage2/profiling/CostCentre.o stage2/profiling/SCCfinal.o stage2/rename/RnBinds.o stage2/rename/RnEnv.o stage2/rename/RnExpr.o stage2/rename/RnHsDoc.o stage2/rename/RnHsSyn.o stage2/rename/RnNames.o stage2/rename/RnPat.o stage2/rename/RnSource.o stage2/rename/RnTypes.o stage2/simplCore/CSE.o stage2/simplCore/FloatIn.o stage2/simplCore/FloatOut.o stage2/simplCore/LiberateCase.o stage2/simplCore/OccurAnal.o stage2/simplCore/SAT.o stage2/simplCore/SATMonad.o stage2/simplCore/SetLevels.o stage2/simplCore/SimplCore.o stage2/simplCore/SimplEnv.o stage2/simplCore/SimplMonad.o stage2/simplCore/SimplUtils.o stage2/simplCore/Simplify.o stage2/simplStg/SRT.o stage2/simplStg/SimplStg.o stage2/simplStg/StgStats.o stage2/specialise/Rules.o stage2/specialise/SpecConstr.o stage2/specialise/Specialise.o stage2/stgSyn/CoreToStg.o stage2/stgSyn/StgLint.o stage2/stgSyn/StgSyn.o stage2/stranal/DmdAnal.o stage2/stranal/SaAbsInt.o stage2/stranal/SaLib.o stage2/stranal/StrictAnal.o stage2/stranal/WorkWrap.o stage2/stranal/WwLib.o stage2/typecheck/FamInst.o stage2/typecheck/Inst.o stage2/typecheck/TcArrows.o stage2/typecheck/TcBinds.o stage2/typecheck/TcClassDcl.o stage2/typecheck/TcDefaults.o stage2/typecheck/TcDeriv.o stage2/typecheck/TcEnv.o stage2/typecheck/TcExpr.o stage2/typecheck/TcForeign.o stage2/typecheck/TcGadt.o stage2/typecheck/TcGenDeriv.o stage2/typecheck/TcHsSyn.o stage2/typecheck/TcHsType.o stage2/typecheck/TcInstDcls.o stage2/typecheck/TcMType.o stage2/typecheck/TcMatches.o stage2/typecheck/TcPat.o stage2/typecheck/TcRnDriver.o stage2/typecheck/TcRnMonad.o stage2/typecheck/TcRnTypes.o stage2/typecheck/TcRules.o stage2/typecheck/TcSimplify.o stage2/typecheck/TcSplice.o stage2/typecheck/TcTyClsDecls.o stage2/typecheck/TcTyDecls.o stage2/typecheck/TcTyFuns.o stage2/typecheck/TcType.o stage2/typecheck/TcUnify.o stage2/types/Class.o stage2/types/Coercion.o stage2/types/FamInstEnv.o stage2/types/FunDeps.o stage2/types/Generics.o stage2/types/InstEnv.o stage2/types/TyCon.o stage2/types/Type.o stage2/types/TypeRep.o stage2/types/Unify.o stage2/utils/Bag.o stage2/utils/Binary.o stage2/utils/BufWrite.o stage2/utils/Digraph.o stage2/utils/Encoding.o stage2/utils/FastBool.o stage2/utils/FastFunctions.o stage2/utils/FastMutInt.o stage2/utils/FastString.o stage2/utils/FastTypes.o stage2/utils/FiniteMap.o stage2/utils/GraphBase.o stage2/utils/GraphColor.o stage2/utils/GraphOps.o stage2/utils/GraphPpr.o stage2/utils/IOEnv.o stage2/utils/Interval.o stage2/utils/ListSetOps.o stage2/utils/Maybes.o stage2/utils/OrdList.o stage2/utils/Outputable.o stage2/utils/Panic.o stage2/utils/Pretty.o stage2/utils/State.o stage2/utils/StringBuffer.o stage2/utils/UniqFM.o stage2/utils/UniqSet.o stage2/utils/Util.o stage2/vectorise/VectBuiltIn.o stage2/vectorise/VectCore.o stage2/vectorise/VectMonad.o stage2/vectorise/VectType.o stage2/vectorise/VectUtils.o stage2/vectorise/Vectorise.o stage2/parser/cutils.o
make[2]: *** [HSghc.o] Bus error
make[2]: *** Deleting file `HSghc.o'
make[1]: *** [stage2] Error 2
make: *** [bootstrap2] Error 2

Further, with

SRC_HC_OPTS   = -H32m -O2 -fvia-C
GhcHcOpts     = -Rghc-timing
GhcLibHcOpts  =
GhcLibWays    =

in mk/build.mk, the result is

../../compiler/stage1/ghc-inplace -package-name base-3.0 -hide-all-packages -split-objs -i -idist/build/autogen -idist/build -i. -Idist/build -Iinclude -#include "HsBase.h" -odir dist/build -hidir dist/build -stubdir dist/build -package rts-1.0 -O -fglasgow-exts -package-name base -XCPP -idist/build  -H32m -O2 -fvia-C  -c Foreign/C/Error.hs -o dist/build/Foreign/C/Error.o  -ohi dist/build/Foreign/C/Error.hi
/tmp/ghc13816_0/ghc13816_0.split__1.s:unknown:Undefined local symbol L_strerror$UNIX2003$stub
make[2]: *** [dist/build/Foreign/C/Error.o] Error 1
make[1]: *** [make.library.base] Error 2
make: *** [stage1] Error 2

This could well be the same problem reported in  http://hackage.haskell.org/trac/ghc/ticket/2012. And, finally

SRC_HC_OPTS   = -H32m -O2 -fvia-C
GhcHcOpts     = -Rghc-timing
GhcLibHcOpts  =
GhcLibWays    =
SplitObjs     = NO

ends with

/usr/bin/ld -r -x -o HSghc.o  stage2/basicTypes/BasicTypes.o stage2/basicTypes/DataCon.o stage2/basicTypes/Demand.o stage2/basicTypes/Id.o stage2/basicTypes/IdInfo.o stage2/basicTypes/Literal.o stage2/basicTypes/MkId.o stage2/basicTypes/Module.o stage2/basicTypes/Name.o stage2/basicTypes/NameEnv.o stage2/basicTypes/NameSet.o stage2/basicTypes/NewDemand.o stage2/basicTypes/OccName.o stage2/basicTypes/RdrName.o stage2/basicTypes/SrcLoc.o stage2/basicTypes/UniqSupply.o stage2/basicTypes/Unique.o stage2/basicTypes/Var.o stage2/basicTypes/VarEnv.o stage2/basicTypes/VarSet.o stage2/cmm/CLabel.o stage2/cmm/Cmm.o stage2/cmm/CmmBrokenBlock.o stage2/cmm/CmmCPS.o stage2/cmm/CmmCPSGen.o stage2/cmm/CmmCPSZ.o stage2/cmm/CmmCallConv.o stage2/cmm/CmmContFlowOpt.o stage2/cmm/CmmCvt.o stage2/cmm/CmmExpr.o stage2/cmm/CmmInfo.o stage2/cmm/CmmLex.o stage2/cmm/CmmLint.o stage2/cmm/CmmLive.o stage2/cmm/CmmLiveZ.o stage2/cmm/CmmOpt.o stage2/cmm/CmmParse.o stage2/cmm/CmmProcPoint.o stage2/cmm/CmmProcPointZ.o stage2/cmm/CmmSpillReload.o stage2/cmm/CmmTx.o stage2/cmm/CmmUtils.o stage2/cmm/CmmZipUtil.o stage2/cmm/DFMonad.o stage2/cmm/Dataflow.o stage2/cmm/MachOp.o stage2/cmm/MkZipCfg.o stage2/cmm/MkZipCfgCmm.o stage2/cmm/OptimizationFuel.o stage2/cmm/PprC.o stage2/cmm/PprCmm.o stage2/cmm/PprCmmZ.o stage2/cmm/StackColor.o stage2/cmm/StackPlacements.o stage2/cmm/ZipCfg.o stage2/cmm/ZipCfgCmmRep.o stage2/cmm/ZipCfgExtras.o stage2/cmm/ZipDataflow0.o stage2/codeGen/Bitmap.o stage2/codeGen/CgBindery.o stage2/codeGen/CgCallConv.o stage2/codeGen/CgCase.o stage2/codeGen/CgClosure.o stage2/codeGen/CgCon.o stage2/codeGen/CgExpr.o stage2/codeGen/CgForeignCall.o stage2/codeGen/CgHeapery.o stage2/codeGen/CgHpc.o stage2/codeGen/CgInfoTbls.o stage2/codeGen/CgLetNoEscape.o stage2/codeGen/CgMonad.o stage2/codeGen/CgParallel.o stage2/codeGen/CgPrimOp.o stage2/codeGen/CgProf.o stage2/codeGen/CgStackery.o stage2/codeGen/CgTailCall.o stage2/codeGen/CgTicky.o stage2/codeGen/CgUtils.o stage2/codeGen/ClosureInfo.o stage2/codeGen/CodeGen.o stage2/codeGen/SMRep.o stage2/coreSyn/CoreFVs.o stage2/coreSyn/CoreLint.o stage2/coreSyn/CorePrep.o stage2/coreSyn/CoreSubst.o stage2/coreSyn/CoreSyn.o stage2/coreSyn/CoreTidy.o stage2/coreSyn/CoreUnfold.o stage2/coreSyn/CoreUtils.o stage2/coreSyn/ExternalCore.o stage2/coreSyn/MkExternalCore.o stage2/coreSyn/PprCore.o stage2/coreSyn/PprExternalCore.o stage2/cprAnalysis/CprAnalyse.o stage2/deSugar/Check.o stage2/deSugar/Coverage.o stage2/deSugar/Desugar.o stage2/deSugar/DsArrows.o stage2/deSugar/DsBinds.o stage2/deSugar/DsCCall.o stage2/deSugar/DsExpr.o stage2/deSugar/DsForeign.o stage2/deSugar/DsGRHSs.o stage2/deSugar/DsListComp.o stage2/deSugar/DsMeta.o stage2/deSugar/DsMonad.o stage2/deSugar/DsUtils.o stage2/deSugar/Match.o stage2/deSugar/MatchCon.o stage2/deSugar/MatchLit.o stage2/ghci/ByteCodeAsm.o stage2/ghci/ByteCodeFFI.o stage2/ghci/ByteCodeGen.o stage2/ghci/ByteCodeInstr.o stage2/ghci/ByteCodeItbls.o stage2/ghci/ByteCodeLink.o stage2/ghci/Debugger.o stage2/ghci/GhciMonad.o stage2/ghci/GhciTags.o stage2/ghci/InteractiveUI.o stage2/ghci/Linker.o stage2/ghci/ObjLink.o stage2/ghci/RtClosureInspect.o stage2/hsSyn/Convert.o stage2/hsSyn/HsBinds.o stage2/hsSyn/HsDecls.o stage2/hsSyn/HsDoc.o stage2/hsSyn/HsExpr.o stage2/hsSyn/HsImpExp.o stage2/hsSyn/HsLit.o stage2/hsSyn/HsPat.o stage2/hsSyn/HsSyn.o stage2/hsSyn/HsTypes.o stage2/hsSyn/HsUtils.o stage2/iface/BinIface.o stage2/iface/BuildTyCl.o stage2/iface/IfaceEnv.o stage2/iface/IfaceSyn.o stage2/iface/IfaceType.o stage2/iface/LoadIface.o stage2/iface/MkIface.o stage2/iface/TcIface.o stage2/main/BreakArray.o stage2/main/CmdLineParser.o stage2/main/CodeOutput.o stage2/main/Config.o stage2/main/Constants.o stage2/main/DriverMkDepend.o stage2/main/DriverPhases.o stage2/main/DriverPipeline.o stage2/main/DynFlags.o stage2/main/ErrUtils.o stage2/main/Finder.o stage2/main/GHC.o stage2/main/HeaderInfo.o stage2/main/HscMain.o stage2/main/HscStats.o stage2/main/HscTypes.o stage2/main/InteractiveEval.o stage2/main/PackageConfig.o stage2/main/Packages.o stage2/main/ParsePkgConf.o stage2/main/PprTyThing.o stage2/main/StaticFlags.o stage2/main/SysTools.o stage2/main/TidyPgm.o stage2/nativeGen/AsmCodeGen.o stage2/nativeGen/MachCodeGen.o stage2/nativeGen/MachInstrs.o stage2/nativeGen/MachRegs.o stage2/nativeGen/NCGMonad.o stage2/nativeGen/PositionIndependentCode.o stage2/nativeGen/PprMach.o stage2/nativeGen/RegAllocColor.o stage2/nativeGen/RegAllocInfo.o stage2/nativeGen/RegAllocLinear.o stage2/nativeGen/RegAllocStats.o stage2/nativeGen/RegArchBase.o stage2/nativeGen/RegArchX86.o stage2/nativeGen/RegCoalesce.o stage2/nativeGen/RegLiveness.o stage2/nativeGen/RegSpill.o stage2/nativeGen/RegSpillClean.o stage2/nativeGen/RegSpillCost.o stage2/ndpFlatten/FlattenInfo.o stage2/ndpFlatten/FlattenMonad.o stage2/ndpFlatten/Flattening.o stage2/ndpFlatten/NDPCoreUtils.o stage2/ndpFlatten/PArrAnal.o stage2/parser/Ctype.o stage2/parser/HaddockLex.o stage2/parser/HaddockParse.o stage2/parser/HaddockUtils.o stage2/parser/LexCore.o stage2/parser/Lexer.o stage2/parser/Parser.o stage2/parser/ParserCore.o stage2/parser/ParserCoreUtils.o stage2/parser/RdrHsSyn.o stage2/prelude/ForeignCall.o stage2/prelude/PrelInfo.o stage2/prelude/PrelNames.o stage2/prelude/PrelRules.o stage2/prelude/PrimOp.o stage2/prelude/TysPrim.o stage2/prelude/TysWiredIn.o stage2/profiling/CostCentre.o stage2/profiling/SCCfinal.o stage2/rename/RnBinds.o stage2/rename/RnEnv.o stage2/rename/RnExpr.o stage2/rename/RnHsDoc.o stage2/rename/RnHsSyn.o stage2/rename/RnNames.o stage2/rename/RnPat.o stage2/rename/RnSource.o stage2/rename/RnTypes.o stage2/simplCore/CSE.o stage2/simplCore/FloatIn.o stage2/simplCore/FloatOut.o stage2/simplCore/LiberateCase.o stage2/simplCore/OccurAnal.o stage2/simplCore/SAT.o stage2/simplCore/SATMonad.o stage2/simplCore/SetLevels.o stage2/simplCore/SimplCore.o stage2/simplCore/SimplEnv.o stage2/simplCore/SimplMonad.o stage2/simplCore/SimplUtils.o stage2/simplCore/Simplify.o stage2/simplStg/SRT.o stage2/simplStg/SimplStg.o stage2/simplStg/StgStats.o stage2/specialise/Rules.o stage2/specialise/SpecConstr.o stage2/specialise/Specialise.o stage2/stgSyn/CoreToStg.o stage2/stgSyn/StgLint.o stage2/stgSyn/StgSyn.o stage2/stranal/DmdAnal.o stage2/stranal/SaAbsInt.o stage2/stranal/SaLib.o stage2/stranal/StrictAnal.o stage2/stranal/WorkWrap.o stage2/stranal/WwLib.o stage2/typecheck/FamInst.o stage2/typecheck/Inst.o stage2/typecheck/TcArrows.o stage2/typecheck/TcBinds.o stage2/typecheck/TcClassDcl.o stage2/typecheck/TcDefaults.o stage2/typecheck/TcDeriv.o stage2/typecheck/TcEnv.o stage2/typecheck/TcExpr.o stage2/typecheck/TcForeign.o stage2/typecheck/TcGadt.o stage2/typecheck/TcGenDeriv.o stage2/typecheck/TcHsSyn.o stage2/typecheck/TcHsType.o stage2/typecheck/TcInstDcls.o stage2/typecheck/TcMType.o stage2/typecheck/TcMatches.o stage2/typecheck/TcPat.o stage2/typecheck/TcRnDriver.o stage2/typecheck/TcRnMonad.o stage2/typecheck/TcRnTypes.o stage2/typecheck/TcRules.o stage2/typecheck/TcSimplify.o stage2/typecheck/TcSplice.o stage2/typecheck/TcTyClsDecls.o stage2/typecheck/TcTyDecls.o stage2/typecheck/TcTyFuns.o stage2/typecheck/TcType.o stage2/typecheck/TcUnify.o stage2/types/Class.o stage2/types/Coercion.o stage2/types/FamInstEnv.o stage2/types/FunDeps.o stage2/types/Generics.o stage2/types/InstEnv.o stage2/types/TyCon.o stage2/types/Type.o stage2/types/TypeRep.o stage2/types/Unify.o stage2/utils/Bag.o stage2/utils/Binary.o stage2/utils/BufWrite.o stage2/utils/Digraph.o stage2/utils/Encoding.o stage2/utils/FastBool.o stage2/utils/FastFunctions.o stage2/utils/FastMutInt.o stage2/utils/FastString.o stage2/utils/FastTypes.o stage2/utils/FiniteMap.o stage2/utils/GraphBase.o stage2/utils/GraphColor.o stage2/utils/GraphOps.o stage2/utils/GraphPpr.o stage2/utils/IOEnv.o stage2/utils/Interval.o stage2/utils/ListSetOps.o stage2/utils/Maybes.o stage2/utils/OrdList.o stage2/utils/Outputable.o stage2/utils/Panic.o stage2/utils/Pretty.o stage2/utils/State.o stage2/utils/StringBuffer.o stage2/utils/UniqFM.o stage2/utils/UniqSet.o stage2/utils/Util.o stage2/vectorise/VectBuiltIn.o stage2/vectorise/VectCore.o stage2/vectorise/VectMonad.o stage2/vectorise/VectType.o stage2/vectorise/VectUtils.o stage2/vectorise/Vectorise.o stage2/parser/cutils.o
ld: scattered reloc r_address too large for inferred architecture ppc
make[2]: *** [HSghc.o] Error 1
make[1]: *** [stage2] Error 2
make: *** [bootstrap2] Error 2

This has been reported earlier in  http://hackage.haskell.org/trac/ghc/ticket/1843. I will assume that this is simply a different symptom of the same basic problem with the Apple linker, but if anyone sees this differently, feel free to report a separate bug.

All in all, fairly entertaining.

Some additional lines of work include:

  1. Actually debugging the Apple linker:  http://www.haskell.org/pipermail/glasgow-haskell-users/2007-November/013489.html and  http://www.haskell.org/pipermail/glasgow-haskell-users/2007-November/013447.html have some details about this. I have started an attempt to continue this, but I am not done yet. In any case, although I have requested a status on the issue reported to Apple, I have not heard anything, so it seems unlikely that we are going to see some sort of solution from that source anytime soon.
  2. Figuring out how to, possibly, generate different code that works around the linker problem. I don't feel particularly competent in this respect, a lot of study would be required for me to work on this effectively. So if some expert in these matters would be willing to give a few hints, whether such a line of work is likely to succeed, I would be very grateful.
  3. In particular, some better understanding of the difference between using .const_data and .text would be useful. And thereby some indication of whether the work-around patch the I attached makes sense at all.

As always, additional ideas for investigating this problem are most welcome.

Best regards Thorkil

  Changed 4 years ago by thorkilnaur

Just for the record, using the mk/build.mk

GhcLibHcOpts=-O -fgenerics -fasm
GhcStage1HcOpts=-O -fasm
GhcStage2HcOpts=-O -fasm
SplitObjs=NO
GhcLibWays=
HADDOCK_DOCS=YES

also used by the buildbots and the patch Work_around_PPC_Mac_OS_X_Leopard_ld_Bus_error_illustrative_only.dpatch that were attached a while ago, a recent stable branch GHC builds successfully. The stage=2 test summary is:

OVERALL SUMMARY for test run started at Wed Jan 23 17:49:47 CET 2008
    2078 total tests, which gave rise to
    6475 test cases, of which
       0 caused framework failures
    1098 were skipped

    5102 expected passes
     242 expected failures
       0 unexpected passes
      33 unexpected failures

Unexpected failures:
   TH_fail(normal)
   divbyzero(normal,optc,optasm,ghci,threaded1,threaded2)
   ffi009(ghci)
   ghci024(ghci)
   hpc_raytrace(normal,optc,optasm,threaded1,threaded2)
   num012(normal,optc,optasm,ghci,threaded1,threaded2)
   openFile008(ghci)
   qq001(normal)
   qq002(normal)
   qq003(normal)
   qq004(normal)
   qq005(normal,optc,optasm,ghci,threaded1,threaded2)
   qq006(normal)
   signals002(ghci)

A recent head with the same patch applied also builds successfully with stage=2 test summary:

OVERALL SUMMARY for test run started at Wed Jan 23 09:48:22 CET 2008
    2075 total tests, which gave rise to
    6470 test cases, of which
       0 caused framework failures
    1001 were skipped
   
    5188 expected passes
     239 expected failures
       0 unexpected passes
      42 unexpected failures
   
Unexpected failures:
   break017(ghci)
   divbyzero(normal,optc,optasm,ghci,threaded1,threaded2)
   dynamic001(normal,optc,optasm,ghci,threaded1,threaded2)
   dynamic002(normal,optc,optasm,ghci,threaded1,threaded2)
   ffi009(ghci)
   ghci024(ghci)
   hpc_raytrace(normal,optc,optasm,threaded1,threaded2)
   num012(normal,optc,optasm,ghci,threaded1,threaded2)
   openFile008(ghci)
   qq005(normal,optc,optasm,ghci,threaded1,threaded2)
   qq006(normal)
   recomp002(normal)
   signals002(ghci)

Best regards Thorkil

in reply to: ↑ description   Changed 4 years ago by gmh33

Is there a chance that the OS X update 10.5.2 would fix this?

  Changed 4 years ago by thorkilnaur

Thanks for making me aware of the Mac OS X 10.5.2 update. I have updated the "tnaur PPC OSX ... 2" builder accordingly, so if that removes the problem, we should be able to detect it soon. (For the HEAD, we have to await the resolution of  http://www.haskell.org/pipermail/cvs-ghc/2008-February/041135.html that currently makes the stage 2 build fail, rather than the problem of the present ticket.)

Best regards Thorkil

  Changed 4 years ago by maeder

With your attached patch (that I don't understand) I was able to compile ghc-6.8.2 from sources. I'll try if that fixes #2117, too.

m03:ghc-6.8.2 maeder$ otool -L compiler/stage2/ghc-6.8.2
compiler/stage2/ghc-6.8.2:
        GNUreadline.framework/Versions/A/GNUreadline (compatibility version 5.0.0, current version 5.2.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)
        /opt/local/lib/libgmp.3.dylib (compatibility version 8.0.0, current version 8.2.0)
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
m03:ghc-6.8.2 maeder$ uname -a
Darwin m03.informatik.uni-bremen.de 9.2.0 Darwin Kernel Version 9.2.0: Tue Feb  5 16:15:19 PST 2008; root:xnu-1228.3.13~1/RELEASE_PPC Power Macintosh

  Changed 4 years ago by maeder

  • version changed from 6.9 to 6.8.2

Yes, the patch fixes #2117, too. (at least I could install the package parsec-3.0.0)

  Changed 4 years ago by thorkilnaur

Apple has responded to the "Bug ID# 5655246 (PPC Leopard (Xcode 3.0) linker ld gets "Bus error" sometimes)" that I reported a while back, saying that this issue has been addressed in "the latest seed release of Xcode 3.1, build 9M2165" and asking for an update of the bug report. I will get to that within the next couple of days.

Best regards Thorkil

  Changed 4 years ago by malcolm.wallace@…

I got this error today

collect2: ld terminated with signal 10 [Bus error]

whilst attempting to build the gtk2hs package for ghc-6.8.2. My machine is a PowerPC, running Leopard 10.5.2, and the ghc is the one from the ghc binary download page for powerpc-tiger.

  Changed 4 years ago by thorkilnaur

I am delighted to report that I was unable to provoke the "Bus error" reaction using the "Developer preview" version of Xcode3.1 that I tried out, prompted by the Apple response. The "tnaur PPC OSX stable 2" builder (which is a Mac OS X 10.5 Leopard) has succeeded for the first time, ever, with this version of Xcode3.1 (see  http://darcs.haskell.org/buildbot/all/builders/tnaur%20PPC%20OSX%20stable%202/builds/90).

I suggest that we close this ticket when Apple releases a version of Xcode with this problem solved.

Best regards Thorkil

  Changed 4 years ago by igloo

  • milestone changed from 6.8.3 to Not GHC

Great, thanks Thorkil!

So, I think the plan is to just sit and wait? If someone could shout when Xcode3.1 is released, that would be very useful.

  Changed 4 years ago by igloo

(and the same for #2117)

  Changed 4 years ago by eelco

I believe XCode 3.1 is released as part of the iPhone SDK ( http://developer.apple.com/iphone/). I'm not sure if it's going to be released 'stand-alone' as well. I'm now installing it, to test if the bug is fixed for that version. I'll report back in a couple of hours ;)

  Changed 4 years ago by eelco

It took me a bit longer than expected, but I can confirm that ghc 6.8.2 built succesfully using XCode 3.1 (from the iPhone SDK package).

  Changed 4 years ago by igloo

  • status changed from new to closed
  • resolution set to fixed

OK, so I think we may as well close this bug then. Thanks everyone!

Note: See TracTickets for help on using tickets.