From 83d636f2d01f6bc1fd044a6f6c3071303b68dd82 Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Mon, 19 May 2025 15:05:06 +0200 Subject: [PATCH] Free shapes last [Bug #21352] `rb_objspace_free_objects` may need to check objects shapes to know how to free them. --- vm.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/vm.c b/vm.c index 5d5b44ebeb..982a0890ff 100644 --- a/vm.c +++ b/vm.c @@ -3162,8 +3162,6 @@ ruby_vm_destruct(rb_vm_t *vm) // TODO: Is this ignorable for classext->m_tbl ? // rb_id_table_free(RCLASS(rb_mRubyVMFrozenCore)->m_tbl); - rb_shape_free_all(); - st_free_table(vm->static_ext_inits); rb_vm_postponed_job_free(); @@ -3222,11 +3220,12 @@ ruby_vm_destruct(rb_vm_t *vm) ruby_mimfree(vm); ruby_current_vm_ptr = NULL; -#if USE_YJIT if (rb_free_at_exit) { + rb_shape_free_all(); +#if USE_YJIT rb_yjit_free_at_exit(); - } #endif + } } RUBY_FREE_LEAVE("vm"); return 0;