-
Notifications
You must be signed in to change notification settings - Fork 11
Open
Labels
bugSomething isn't workingSomething isn't working
Description
I am trying to get sticky immix working on our moving branch mmtk-support-moving-upstream, and observed the following bug:
- Create task X in the non-moving space
- X is added to
all_tasks. - Nursery GC happens.
- X is not in the nursery space, and is not traced. X is not marked.
- At the end of the GC, we sweep
all_tasksby checkingis_live()with MMTk. MMTk callsis_live()for the space. X is in the non-moving Immix space which decides liveness based on the mark. X is not marked, thus gets removed fromall_tasks. - New roots are pushed to X's shadow stack with no write barrier. So X is not in the mod buffer either.
- Nursery GC happens.
- X is not in
all_tasks. We won't scan its shadow stack and the new roots will not be scanned properly. - X is not in the nursery space, nor the mod buffer. So it not traced or scanned.
- New roots become dead.
I think the issue is that is_live() should not return false for X whose liveness is actually unknown. See mmtk/mmtk-core#1422
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working