Running parrot built with --gc=libc works fine, all tests pass *except* t/pmc/pmc_62 when --gc-debug is set.

I could track this down until here:

classes/default.c:

static void
check_set_std_props(Parrot_Interp interp, PMC *pmc, STRING *key, PMC *value)
{
if (!string_compare(interp, key, string_from_cstring(interp, "_ro", 0)))


During the string_compare a DOD run is triggered (the --gc-debug flags) which frees the newly allocated "string_from_cstring" s2. I don't know yet, why this string is freed. It should get marked during trace_system_areas. Something is fishy here.

I have converted that one now into a static constant string, but this isn't a solution.

We have discussed already a few times, what to do with such constant strings, e.g. declare them static with some macro tricks or use a string hash. We need a solution for this.

Second is of course, why isn't that string marked during DOD.

Any hints and improvements welcome,
leo



Reply via email to