Steve Fink wrote:

Many of our tinderbox failures result from architecture-specific
shortcomings in our current root set scanning code.

Here is a test result (i386/linux) *without* --gc-debug and without trace_system_areas:

Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/op/string.t 1 256 99 1 1.01% 95
t/pmc/perlhash.t 2 512 24 2 8.33% 8-9
9 subtests skipped.
Failed 2/42 test scripts, 95.24% okay. 3/584 subtests failed, 99.49% okay.

I know, that things get worse with optimization and with more complex programs. But overall it doesn't look that bad. All 3 test failures seem to be caused by string_concat. When string_concat would have a **dest_ptr like e.g. string_repat, we could anchor the created string early, which should fix the problem.

When looking at PMCs, I<new> does anchor the newly created PMC already. The clone functions could be redone like:
Parrot_do_dod_run(); // get free headers if possible
Parrot_block_DOD/GC();
do_clone
Parrot_unblock_DOD/GC
This would also be faster, because there are no DOD runs during clone (which wouldn't yield more free headers anyway).

I think that by either anchoring a newly created header early or by blocking DOD/GC we could solve the infant mortality problem.

leo




Reply via email to