StanzaOrg / lbstanza-old

L.B. Stanza Programming Language
Other
216 stars 23 forks source link

Fix a bug in relocate-liveness-trackers #163

Closed OlegPliss closed 2 years ago

OlegPliss commented 2 years ago

Relocation of liveness trackers was written in assumption that GC preserves allocation order. So the trackers in the list are visited in the decreasing address order and the tracked value are always below the tracker. That was true until copying evacuation from the nursery was introduced. The evacuation can change the allocation order and so can break the assumptions. It may lead to subtle bugs with references in the tracker list and references from trackers to tracked values are not updated.