HEAD ghci crash on ppc OS X

David Kirkman dkirkman at gmail.com
Tue Jan 16 16:39:42 EST 2007


On 1/15/07, David Kirkman <dkirkman at gmail.com> wrote:
>
> The comment above seems to be begging for a
>
>     oc->image += oc->misalignment;
>
> statement right after the call to stgMallocBytes.


This did in fact work (patch for rts/Linker.c below).  And it *was* in
the 6.6 sources, so it was removed in the last few months.  Putting
the line back in seems to fix everything on ppc darwin: my code which
uses "ghc as a library" to do a bunch of dynamic compilation and
loading works again, and the test suite looks pretty much like the
results from the latest linux builds
(http://www.haskell.org/ghc/dist/current/logs/x86_64-unknown-linux-test-summary)

I can only get a partial darcs repository, so I can't figure out why
the line was removed -- presumably to fix something that my patch will
proceed to rebreak :)

Cheers,

-david k.

The is the testsuite summary after applying the Linker.c patch, followed
by the patch.  Before the patch, *every* ghci test is a failure.

OVERALL SUMMARY for test run started at Mon Jan 15 14:44:24 PST 2007
    1606 total tests, which gave rise to
    6403 test cases, of which
       0 caused framework failures
    1068 were skipped

    5089 expected passes
      67 expected failures
       2 unexpected passes
     177 unexpected failures

Unexpected passes:
   barton-mangler-bug(optasm)
   cholewo-eval(optasm)


Unexpected failures:
   GMapAssoc(hpc)
   GMapTop(hpc)
   TH_dataD1(normal)
   TH_spliceE5_prof(normal)
   ThreadDelay001(ghci,threaded1,threaded2)
   arith005(opt,hpc,optasm,threaded2)
   arith011(normal,opt,hpc,optasm,ghci,threaded1,threaded2)
   arrowrun004(normal,opt,hpc,optasm,ghci,threaded1,threaded2)
   break001(ghci)
   break004(ghci)
   break005(ghci)
   break007(ghci)
   break008(ghci)
   break010(ghci)
   cabal01(normal)
   cabal02(normal)
   cg047(normal)
   conc019(opt)
   conc023(threaded2)
   conc037(threaded2)
   conc056(threaded1,threaded2)
   conc059(threaded1)
   conc063(normal,opt,hpc,optasm,ghci,threaded1,threaded2)
   conc064(normal,opt,hpc,optasm,ghci,threaded1,threaded2)
   conc065(ghci)
   conc066(ghci)
   concprog001(ghci)
   concprog002(threaded2)
   driver011(normal)
   driver012(normal)
   driver013(normal)
   driver014(normal)
   driver015(normal)
   driver016(normal)
   driver017(normal)
   driver018(normal)
   driver021(normal)
   driver022(normal)
   driver023(normal)
   driver024(normal)
   driver024a(normal)
   driver025(normal)
   driver026(normal)
   driver027(normal)
   driver028(normal)
   driver031(normal)
   driver032(normal)
   driver033(normal)
   driver034(normal)
   driver035(normal)
   driver041(normal)
   driver042(normal)
   driver043(normal)
   driver044(normal)
   driver045(normal)
   driver051(normal)
   driver052(normal)
   driver053(normal)
   driver060(normal)
   driver061(normal)
   driver062.1(normal)
   driver062.2(normal)
   driver062.3(normal)
   driver064(normal)
   driver065(normal)
   driver066(normal)
   driver067(normal)
   driver068(normal)
   driver069(normal)
   driver070(normal)
   driver071(normal)
   driver080(normal)
   driver200(normal)
   drvfail011(normal)
   dynbk002(ghci)
   dynbk008(ghci)
   ffi-deriv1(normal,opt,hpc,optasm)
   ffi009(ghci)
   forkprocess01(ghci)
   gadt17(normal)
   getC(normal,opt,hpc,optasm,ghci,threaded1,threaded2)
   ghci008(ghci)
   ghciprog004(normal)
   ghcpkg01(normal)
   ghcpkg02(normal)
   ghcpkg03(normal)
   ghcpkg04(normal)
   maessen_hashtab(normal,opt,hpc,optasm,ghci,threaded1,threaded2)
   mod56(normal)
   newtype(opt)
   num012(normal,opt,hpc,optasm,ghci,threaded1,threaded2)
   print001(ghci)
   print004(ghci)
   print005(ghci)
   print006(ghci)
   print007(ghci)
   print012(ghci)
   print016(ghci)
   read040(normal,opt,hpc,optasm)
   rnfail028(normal)
   signals002(ghci)
   tc049(normal,opt,hpc,optasm)
   tc173(normal)
   tcfail004(normal)
   tcfail005(normal)
   tcfail072(normal)
   tcfail105(normal,opt,hpc,optasm)
   tcfail140(normal)
   tcfail169(normal)
   tcfail172(normal)
   tcrun032(normal,opt,hpc,optasm,ghci,threaded1,threaded2)

--- Linker-old-c        2007-01-15 12:46:29.000000000 -0800
+++ Linker.c    2007-01-15 20:06:37.000000000 -0800
@@ -1324,6 +1324,7 @@
     // that the actual sections end up aligned again.
    oc->misalignment = machoGetMisalignment(f);
    oc->image = stgMallocBytes(oc->fileSize + oc->misalignment,
"loadObj(image)");
+   oc->image += oc->misalignment;
 #  else
    oc->image = stgMallocBytes(oc->fileSize, "loadObj(image)");
 #  endif


More information about the Glasgow-haskell-users mailing list