On 22/11/2010 02:19, Ben Lippmeier wrote:

Hi Simon,
RTS sanity checking is failing with all threaded programs, which sounds like 
something nasty has happened under the hood. Sanity checking threaded programs 
worked in 6.12.1 -- is it still supposed to work in 7?


desire:tmp benl$ ~/ghc/perf/ghc-stage2 --version
The Glorious Glasgow Haskell Compilation System, version 7.1.20101121

desire:tmp benl$ ~/ghc/perf/ghc-stage2 --make Hello.hs -debug -threaded 
-fforce-recomp -rtsopts
[1 of 1] Compiling Main             ( Hello.hs, Hello.o )
Linking Hello ...

desire:tmp benl$ ./Hello +RTS -N2 -DS
Hello: internal error: ASSERTION FAILED: file rts/sm/Storage.c, line 640

     (GHC version 7.1.20101121 for i386_apple_darwin)
     Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
Abort trap
desire:tmp benl$


The corresponding assertion is:

rts/sm/Storage.c:637
     p = bd->free;
     bd->free += n;

     IF_DEBUG(sanity, ASSERT(*((StgWord8*)p) == 0xaa));
     return p;


At rts/sm/Sanity.c:470 it says that "heap sanity checking doesn't work with SMP, 
because we can't zero the slop". However, that code looks like it's skipping over 
the slop in closures, while the code in Storage.c just appears to want free space in 
nurseries to be filled with 0xaa, which would also work in threaded mode.

I have a patch that I think fixes this that I just extracted from my new-GC branch. I'll validate and push.

Cheers,
        Simon

_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to