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
> 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).
--
Andy Dougherty doug...@lafayette.edu
Ahh. When I do an '--optimized' Configure, I get a bunch of failed
tests. The hash tests are still passing, but that may be coincidental.
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 doug...@lafayette.edu