On Fri, 21 Apr 2006, Andy Dougherty wrote: > On Fri, 21 Apr 2006, Will Coleda wrote: > > > OSX 10.4.6, PPC > > > > This failure has been pretty persistent the past few weeks: > > > > t/src/hash.t 1 256 11 1 9.09% 6 > > > > # got: '42 > > # hash_6(4373,0xa000ed98) malloc: *** error for object 0x1d14140: > > incorrect checksum for freed object - object was probably modified > > after being freed, break at szone_error to debug > > # hash_6(4373,0xa000ed98) malloc: *** set a breakpoint in szone_error > > to debug > > # hash_6(4373,0xa000ed98) malloc: *** error for object 0x1d14140: > > incorrect checksum for freed object - object was probably modified > > after being freed, break at szone_error to debug > > # hash_6(4373,0xa000ed98) malloc: *** set a breakpoint in szone_error > > to debug > > # ' > > # expected: '42 > > That test has been dumping core for me (Solaris 8/SPARC) for quite a long > time (since last summer at least, I think). I tried to see if it's still > there in the current code, but my build & test script aborted at the > Configure.pl stage (due to the changed perl version requirements).
This test still core dumps for me. I've traced it down a good bit -- it's a garbage collection problem. Specifically, in t/src/hash_6.c, the variable 'hash' is declared in the function 'the_test', and memory allocated with hash = PMC_struct_val(h); A big string 'big' is then created. The program then calls string_from_cstring(). The ensuing sequence is something like (This is all from printf() statements -- the debugger gets confused, as do I!): string_from_cstring() -> string_make_direct() -> Parrot_allocate_string() -> mem_allocate() -> Parrot_dod_ms_run() -> Parrot_forall_header_pools() -> sweep_cb() -> Parrot_dod_sweep() ... ??? ... mem_sys_free() -> free(from) where from == hash. (At the ??? point, I lose track of what's happening) Not surprisingly, the program crashes later on at hash_put(interpreter, hash, key, i); Unfortunately, this failure is in the dod_sweep() stuff, which I really don't understand at all, so I don't know how to proceed from here. -- Andy Dougherty [EMAIL PROTECTED]