Anyone else failing to validate on 'linker_unload'?
Ryan Newton
rrnewton at gmail.com
Tue Sep 3 20:13:04 CEST 2013
> Ryan, can you do one final thing? When you run that program, be sure
> to specify `+RTS -Dl` (must be linked with -debug.) This will enable
> all the debug output where the linker is concerned. There will be a
> few hundred lines just for initialization (based on my machine.) If my
> theory is correct, you'll probably see stuff like 'Unloading object
> file ...' right as the invalid read/segfault occurs.
Hi Austin,
I did this, and it produced a 97MB text file of debug output, the tail end
of which was:
*initLinker: idempotent return*
*lookupSymbol: value of stg_gc_unpt_r1 is 0x485570*
*`stg_gc_unpt_r1' resolves to 0x485570Reloc: P = 0x40b510f3 S = 0x485570
A = 0xfffffffffffffffc*
*relocations for section 3 using symtab 8*
*Rel entry 0 is raw( (nil) 0x800000001 (nil)) lookupSymbol: looking up
base_ControlziApplicative_zdfApplicativeIO3_info*
*initLinker: start*
*initLinker: idempotent return*
*lookupSymbol: value of base_ControlziApplicative_zdfApplicativeIO3_info is
0x40b51058*
*`base_ControlziApplicative_zdfApplicativeIO3_info' resolves to
0x40b51058Reloc: P = 0x40b51100 S = 0x40b51058 A = (nil)*
*resolveObjs: done*
*lookupSymbol: looking up f*
*initLinker: start*
*initLinker: idempotent return*
*lookupSymbol: value of f is 0x440330c0*
*initLinker: start*
*initLinker: idempotent return*
*unloadObj: Test.o*
*Checking whether to unload Test.o*
*Unloading object file Test.o*
And that's when it segfaulted (notusing valgrind). If it is of any use,
here is the full output, which fortunately compresses down to 4.4MB:
http://www.cs.indiana.edu/~rrnewton/temp/linker_unload_debug_output.txt.bz2
Best,
-Ryan
P.S. Here is the equivalent output from the same thing being run under
valgrind:
initLinker: idempotent return
lookupSymbol: value of base_ControlziApplicative_zdfApplicativeIO3_info is
0x4c15058
`base_ControlziApplicative_zdfApplicativeIO3_info' resolves to
0x4c15058Reloc: P = 0x4c15100 S = 0x4c15058 A = (nil)
resolveObjs: done
lookupSymbol: looking up f
initLinker: start
initLinker: idempotent return
lookupSymbol: value of f is 0x4c0f0c0
initLinker: start
initLinker: idempotent return
unloadObj: Test.o
Checking whether to unload Test.o
Unloading object file Test.o
==9030== Invalid read of size 8
==9030== at 0x492502: checkUnload (CheckUnload.c:286)
==9030== by 0x476580: GarbageCollect (GC.c:666)
==9030== by 0x46ADCD: scheduleDoGC (Schedule.c:1652)
==9030== by 0x46B976: performGC_ (Schedule.c:2551)
==9030== by 0x46B9AE: performMajorGC (Schedule.c:2565)
==9030== by 0x4043E1: main (in
/home/beehive/ryan_scratch/ghc-working/testsuite/tests/rts/linker_unload2)
==9030== Address 0x95c4580 is 80 bytes inside a block of size 120 free'd
==9030== at 0x4A063F0: free (vg_replace_malloc.c:446)
==9030== by 0x4656D5: stgFree (RtsUtils.c:107)
==9030== by 0x45DDF4: freeObjectCode (Linker.c:2087)
==9030== by 0x4924CF: checkUnload (CheckUnload.c:295)
==9030== by 0x476580: GarbageCollect (GC.c:666)
==9030== by 0x46ADCD: scheduleDoGC (Schedule.c:1652)
==9030== by 0x46B976: performGC_ (Schedule.c:2551)
==9030== by 0x46B9AE: performMajorGC (Schedule.c:2565)
==9030== by 0x4043E1: main (in
/home/beehive/ryan_scratch/ghc-working/testsuite/tests/rts/linker_unload2)
==9030==
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20130903/cbcde0a6/attachment.htm>
More information about the ghc-devs
mailing list