Skip to main content
Fanael's random ruminations

Archives for the first quarter of 2020

Blue Ridge errata #1: root pointers during evacuation

Published on the

Topics: garbage-collection

While trying to implement concurrent evacuation I've found out that there is a serious problem with my simple incremental low-pause garbage collector design. Implementing the phase ordering exactly as specified would corrupt the root set, resulting in not very fun to debug crashes, even with extensive heap verification and lots of assertions everywhere. Why? Let's go through the pertinent assumptions, and the way they interact, carefully, and find a solution.

Read the full article…