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]