From 1e33a451bbbec1ffa15fc3032a0bdd74bd9b41ff Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Fri, 16 May 2025 15:37:00 +0200 Subject: gc: Execute run_final with the lock held The finalizer table can't be read nor modified without the VM lock. --- gc/default/default.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gc/default/default.c b/gc/default/default.c index 131086c338..7a488562a7 100644 --- a/gc/default/default.c +++ b/gc/default/default.c @@ -2857,9 +2857,9 @@ finalize_list(rb_objspace_t *objspace, VALUE zombie) next_zombie = RZOMBIE(zombie)->next; page = GET_HEAP_PAGE(zombie); - run_final(objspace, zombie); - int lev = rb_gc_vm_lock(); + + run_final(objspace, zombie); { GC_ASSERT(BUILTIN_TYPE(zombie) == T_ZOMBIE); GC_ASSERT(page->heap->final_slots_count > 0); -- cgit v1.2.3