Wrap rb_objspace_reachable_objects_from_root with RB_VM_LOCK

rb_objspace_reachable_objects_from has it too, so I figure it's most
likely required for _from_root as well.
This commit is contained in:
KJ Tsanaktsidis 2023-11-07 22:06:33 +11:00 committed by Jean Boussier
parent 60e19a0b5f
commit 76dc327eef

4
gc.c
View File

@ -11987,6 +11987,8 @@ objspace_reachable_objects_from_root(rb_objspace_t *objspace, void (func)(const
{
if (during_gc) rb_bug("objspace_reachable_objects_from_root() is not supported while during_gc == true");
RB_VM_LOCK_ENTER();
{
rb_ractor_t *cr = GET_RACTOR();
struct root_objects_data data = {
.func = func,
@ -12001,6 +12003,8 @@ objspace_reachable_objects_from_root(rb_objspace_t *objspace, void (func)(const
gc_mark_roots(objspace, &data.category);
cr->mfd = prev_mfd;
}
RB_VM_LOCK_LEAVE();
}
/*
------------------------ Extended allocator ------------------------