Closed wks closed 2 months ago
This bug is caused by the mmtk-ruby binding sometimes clearing the obj_to_id_table
before processing the finalizer_table
. Currently, the Rust part creates two work packets to process the obj_to_id_table
and finalizer_table
in parallel, but this is incorrect. While processing the finalizer table, it needs to create "final jobs" for dead objects. That needs to look up the obj_to_id_table
to find its ID. But if we already cleared the obj_to_id_table
, we will see an object having the FL_SEEN_OBJ_ID
flag,but not having an entry in the obj_to_id_table
.
The fix is serializing the processing of those tables, i.e., process the finalizer_table
and then process the obj_to_id_table
.
The error occurs when running
test-all
with release build and Immix plan. See:It doesn't seem to be related to the API change related to
ObjectReference