First, the good news: When I disable the sweep cycle, even with the finalization routines installed, the build completes (i'm testing now to see the performance of it).
When I disable the PMC sweep and only sweep the sized pools, I get the a failed assertion "(a)->encoding" in a string object. When I disable sweeping the sized pools and only sweep the PMCs, I get the error "get_pmc_keyed_string() in valid in class 'String'" (or something like that, I'm typing from memory). I've also noticed a considerable slowdown in building with miniparrot, which I assume is related to the loss of short-circuiting in pobject_lives that I discussed yesterday.
Previously, I didn't mark a PMC in pobject_lives if it was already marked. Now, I do. This means that any cyclic data structures could be marked repeatedly. This is something I need to fix later, and I have a few ideas about how I will do that. I really want to just get things resolved now though before I start doing more stuff.