<div dir="ltr">Ah, yes I see. Well, giving it the proper arguments when running via valgrind puts me back to an "Invalid read" segfault. I confirmed that the linker_unload executable itself is 64 bit:<div><br></div>
<div><div>$ file linker_unload</div><div>linker_unload: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped</div><div><br></div><div><div>==72103== Command: ./linker_unload /home/beehive/ryan_scratch/ghc-working/libraries/base/dist-install/build/libHSbase-4.7.0.0.a /home/beehive/ryan_scratch/ghc-working/libraries/ghc-prim/dist-install/build/libHSghc-prim-0.3.1.0.a /home/beehive/ryan_scratch/ghc-working/libraries/integer-gmp/dist-install/build/libHSinteger-gmp-0.5.1.0.a</div>
<div>==72103==</div><div>==72103== Invalid read of size 8</div><div>==72103== at 0x479F9F: checkUnload (in /home/beehive/ryan_scratch/ghc-working/testsuite/tests/rts/linker_unload)</div><div>==72103== by 0x4689DA: GarbageCollect (in /home/beehive/ryan_scratch/ghc-working/testsuite/tests/rts/linker_unload)</div>
<div>==72103== by 0x4621F0: scheduleDoGC (in /home/beehive/ryan_scratch/ghc-working/testsuite/tests/rts/linker_unload)</div><div>==72103== by 0x462314: performGC_ (in /home/beehive/ryan_scratch/ghc-working/testsuite/tests/rts/linker_unload)</div>
<div>==72103== by 0x403341: main (in /home/beehive/ryan_scratch/ghc-working/testsuite/tests/rts/linker_unload)</div><div>==72103== Address 0xf45ed70 is 80 bytes inside a block of size 120 free'd</div><div>==72103== at 0x4A063F0: free (vg_replace_malloc.c:446)</div>
<div>==72103== by 0x479F9E: checkUnload (in /home/beehive/ryan_scratch/ghc-working/testsuite/tests/rts/linker_unload)</div><div>==72103== by 0x4689DA: GarbageCollect (in /home/beehive/ryan_scratch/ghc-working/testsuite/tests/rts/linker_unload)</div>
<div>==72103== by 0x4621F0: scheduleDoGC (in /home/beehive/ryan_scratch/ghc-working/testsuite/tests/rts/linker_unload)</div><div>==72103== by 0x462314: performGC_ (in /home/beehive/ryan_scratch/ghc-working/testsuite/tests/rts/linker_unload)</div>
<div>==72103== by 0x403341: main (in /home/beehive/ryan_scratch/ghc-working/testsuite/tests/rts/linker_unload)</div><div>==72103==</div></div><div><br></div><div><br></div></div></div><div class="gmail_extra"><br><br>
<div class="gmail_quote">
On Sun, Sep 1, 2013 at 11:01 PM, Austin Seipp <span dir="ltr"><<a href="mailto:aseipp@pobox.com" target="_blank">aseipp@pobox.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Oops, should have said this: if you checkout the Makefile for<br>
testsuite/tests/rts - at the very bottom - you'll see the<br>
linker_unload target. When run, the executable needs some arguments so<br>
it knows what to try and load:<br>
<br>
---<br>
./linker_unload $(BASE) $(GHC_PRIM) $(INTEGER_GMP)<br>
---<br>
<br>
So you also need to provide the right arguments. Sorry about that!<br>
<div class="HOEnZb"><div class="h5"><br>
On Sun, Sep 1, 2013 at 9:54 PM, Ryan Newton <<a href="mailto:rrnewton@gmail.com">rrnewton@gmail.com</a>> wrote:<br>
> Hi Austin,<br>
><br>
> Should have said -- this is 64-bit RHEL 6 (my academic departments<br>
> standardized configuration).<br>
><br>
> $ uname -a<br>
> Linux 2.6.32-358.14.1.el6.x86_64 #1 SMP Mon Jun 17 15:54:20 EDT 2013<br>
> x86_64 x86_64 x86_64 GNU/Linux<br>
><br>
> Weirdly it seems to have a different behavior when run by "make" and by<br>
> hand. When I run the make command you provided it segfaults with error code<br>
> 2:<br>
><br>
> cd . && $MAKE -s --no-print-directory linker_unload </dev/null<br>
>>linker_unload.run.stdout 2>linker_unload.run.stderr<br>
> Wrong exit code (expected 0 , actual 2 )<br>
> Stdout:<br>
> Stderr:<br>
> make[1]: *** [linker_unload] Segmentation fault (core dumped)<br>
> *** unexpected failure for linker_unload(normal)<br>
> Unexpected results from:<br>
> TEST="linker_unload"<br>
><br>
> But then when I run it by hand with "./linker_unload" or "valgrind<br>
> ./linker_unload" I get an unknown symbol error with exit code 1:<br>
><br>
> ==70613==<br>
> linker_unload: Test.o: unknown symbol `base_GHCziNum_zdfNumInt_closure'<br>
> linker_unload: resolveObjs failed<br>
> ==70613==<br>
> ==70613== HEAP SUMMARY:<br>
><br>
><br>
> -Ryan<br>
><br>
><br>
> On Sun, Sep 1, 2013 at 10:46 PM, Austin Seipp <<a href="mailto:aseipp@pobox.com">aseipp@pobox.com</a>> wrote:<br>
>><br>
>> I have also not seen this test fail on amd64/Linux since Simon<br>
>> committed it. From the valgrind output, it looks like your machine is<br>
>> 32bit, correct Ryan? Edward told me yesterday on IRC he saw this fail<br>
>> on 64bit Linux, so I'm a little confused.<br>
>><br>
>> Can you please try this?<br>
>><br>
>> $ cd testsuite/tests/rts<br>
>> $ make TEST="linker_unload" EXTRA_HC_OPTS="-debug"<br>
>> $ valgrind ./linker_unload<br>
>><br>
>> This will link you with a debug copy of the RTS, so Valgrind/GDB can<br>
>> relate errors back to the relevant source code. Perhaps this will help<br>
>> shed light on your problem.<br>
>><br>
>><br>
>> On Sun, Sep 1, 2013 at 9:39 PM, Edward Z. Yang <<a href="mailto:ezyang@mit.edu">ezyang@mit.edu</a>> wrote:<br>
>> > However, as far as I can tell, it is not 100% reproduceable.<br>
>> > In a recent validate of 5f98d44d8617756971cf47c040f2556de4e98f63,<br>
>> > this test does not fail.<br>
>> ><br>
>> > Edward<br>
>> ><br>
>> > Excerpts from Edward Z. Yang's message of Fri Aug 30 21:55:29 -0700<br>
>> > 2013:<br>
>> >> Yes, this one is failing for me too. Probably related to the<br>
>> >> recent object unload patch for<br>
>> >> <a href="http://ghc.haskell.org/trac/ghc/ticket/8039" target="_blank">http://ghc.haskell.org/trac/ghc/ticket/8039</a><br>
>> >><br>
>> >> Excerpts from Ryan Newton's message of Fri Aug 30 21:51:<a href="tel:24%20-0700%202013" value="+12407002013">24 -0700 2013</a>:<br>
>> >> > That test builds an executable named 'linker_unload' which segfaults<br>
>> >> > for<br>
>> >> > me. Valgrind says this:<br>
>> >> ><br>
>> >> ><br>
>> >> > ==42800== Invalid read of size 8<br>
>> >> > ==42800== at 0x66945F: checkUnload (in<br>
>> >> ><br>
>> >> > /home/beehive/ryan_scratch/validate14/testsuite/tests/rts/linker_unload)<br>
>> >> > ==42800== by 0x657F7A: GarbageCollect (in<br>
>> >> ><br>
>> >> > /home/beehive/ryan_scratch/validate14/testsuite/tests/rts/linker_unload)<br>
>> >> > ==42800== by 0x651790: scheduleDoGC (in<br>
>> >> ><br>
>> >> > /home/beehive/ryan_scratch/validate14/testsuite/tests/rts/linker_unload)<br>
>> >> > ==42800== by 0x6518B4: performGC_ (in<br>
>> >> ><br>
>> >> > /home/beehive/ryan_scratch/validate14/testsuite/tests/rts/linker_unload)<br>
>> >> > ==42800== by 0x403BB1: main (in<br>
>> >> ><br>
>> >> > /home/beehive/ryan_scratch/validate14/testsuite/tests/rts/linker_unload)<br>
>> >> > ==42800== Address 0x5bfdd20 is 80 bytes inside a block of size<br>
>> >> > 120<br>
>> >> > free'd<br>
>> >> > ==42800== at 0x4C273F0: free (vg_replace_malloc.c:446)<br>
>> >> > ==42800== by 0x66945E: checkUnload (in<br>
>> >> ><br>
>> >> > /home/beehive/ryan_scratch/validate14/testsuite/tests/rts/linker_unload)<br>
>> >> > ==42800== by 0x657F7A: GarbageCollect (in<br>
>> >> ><br>
>> >> > /home/beehive/ryan_scratch/validate14/testsuite/tests/rts/linker_unload)<br>
>> >> > ==42800== by 0x651790: scheduleDoGC (in<br>
>> >> ><br>
>> >> > /home/beehive/ryan_scratch/validate14/testsuite/tests/rts/linker_unload)<br>
>> >> > ==42800== by 0x6518B4: performGC_ (in<br>
>> >> ><br>
>> >> > /home/beehive/ryan_scratch/validate14/testsuite/tests/rts/linker_unload)<br>
>> >> > ==42800== by 0x403BB1: main (in<br>
>> >> ><br>
>> >> > /home/beehive/ryan_scratch/validate14/testsuite/tests/rts/linker_unload)<br>
>> >> ><br>
>> >> > This went the same across a couple different independent checkouts.<br>
>> >> ><br>
>> >> > -Ryan<br>
>> ><br>
>> > _______________________________________________<br>
>> > ghc-devs mailing list<br>
>> > <a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a><br>
>> > <a href="http://www.haskell.org/mailman/listinfo/ghc-devs" target="_blank">http://www.haskell.org/mailman/listinfo/ghc-devs</a><br>
>><br>
>><br>
>><br>
>> --<br>
>> Regards,<br>
>> Austin - PGP: 4096R/0x91384671<br>
>><br>
>> _______________________________________________<br>
>> ghc-devs mailing list<br>
>> <a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a><br>
>> <a href="http://www.haskell.org/mailman/listinfo/ghc-devs" target="_blank">http://www.haskell.org/mailman/listinfo/ghc-devs</a><br>
><br>
><br>
<br>
<br>
<br>
--<br>
Regards,<br>
Austin - PGP: 4096R/0x91384671<br>
</div></div></blockquote></div><br></div>