Hi,
I built a fresh CVS parrot with garbage collection and linked parrot
and imcc against Electric Fence. A few tests failed. The (edited)
results are here:
http://www.technolalia.com/~ndronen/test-with-gc.txt
I don't think the mmap failures are important; I suspect they're induced
by fact that efence causes heap gobbling. Still, there's this:
# ElectricFence Aborting: free(45000000): address not from malloc().
# ElectricFence Aborting: free(46000000): address not from malloc().
The stack traces from those aborts:
$ gdb -q parrot core-interp.t
Core was generated by `./parrot --gc-debug t/op/interp_6.pasm'.
[ snip ]
#0 0x400ebce1 in kill () from /lib/libc.so.6
(gdb) where
#0 0x400ebce1 in kill () from /lib/libc.so.6
#1 0x400c1eb6 in EF_Abort () from /usr/lib/libefence.so.0
#2 0x400c17c4 in free () from /usr/lib/libefence.so.0
#3 0x080a5f66 in mem_sys_free (from=0x45000000) at memory.c:48
#4 0x08125f7f in Parrot_destroy_header_pools (interpreter=0x43b4bcd0)
at headers.c:444
#5 0x08064ce2 in Parrot_really_destroy (exit_code=0, vinterp=0x43b4bcd0)
at interpreter.c:883
#6 0x08127445 in Parrot_exit (status=0) at exit.c:66
#7 0x0805e845 in main (argc=1, argv=0xbffff53c) at main.c:515
$ gdb -q parrot core-pmc.t
Core was generated by `./parrot --gc-debug t/pmc/pmc_59.pasm'.
[ snip ]
#0 0x400ebce1 in kill () from /lib/libc.so.6
(gdb) where
#0 0x400ebce1 in kill () from /lib/libc.so.6
#1 0x400c1eb6 in EF_Abort () from /usr/lib/libefence.so.0
#2 0x400c17c4 in free () from /usr/lib/libefence.so.0
#3 0x080a5f66 in mem_sys_free (from=0x46000000) at memory.c:48
#4 0x08125f7f in Parrot_destroy_header_pools (interpreter=0x44ee3cd0)
at headers.c:444
#5 0x08064ce2 in Parrot_really_destroy (exit_code=0, vinterp=0x44ee3cd0)
at interpreter.c:883
#6 0x08127445 in Parrot_exit (status=0) at exit.c:66
#7 0x0805e845 in main (argc=1, argv=0xbffff53c) at main.c:515
Rebuilding with --gc=malloc generated a few warnings, but no efence
aborts during make test:
malloc.c
malloc.c:1271: warning: function declaration isn't a prototype
malloc.c: In function `sYSMALLOc':
malloc.c:2875: warning: declaration of `brk' shadows global declaration
malloc.c: In function `memalign':
malloc.c:4220: warning: declaration of `brk' shadows global declaration
malloc.c: In function `mallinfo':
malloc.c:4639: warning: function returns an aggregate
malloc.c:4663: warning: comparison between signed and unsigned
malloc.c: At top level:
malloc.c:4699: warning: function declaration isn't a prototype
malloc.c: In function `malloc_stats':
malloc.c:4700: warning: function call has aggregate value
malloc.c:4716: warning: implicit declaration of function `PIO_eprintf'
Regards,
Nick