summaryrefslogtreecommitdiff
path: root/vm.c
diff options
context:
space:
mode:
authorJohn Hawthorn <john@hawthorn.email>2023-12-22 12:15:07 -0800
committerJohn Hawthorn <john@hawthorn.email>2023-12-22 18:07:22 -0800
commit339978ef3869acb2ff877451381a80ee4b548bfb (patch)
tree8e9a032708859a1f5fd0ac6f71266f738f1063ce /vm.c
parent697a096c9b0d8c153cb5d99affb6b5673b7c4210 (diff)
Free default_rand_key after freeing Ractors
Ractor's free iterates through its TLS keys so we need to keep this memory available until after Ractors are freed. Minimal reproduction: RUBY_FREE_AT_EXIT=1 ./miniruby -e rand
Diffstat (limited to 'vm.c')
-rw-r--r--vm.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/vm.c b/vm.c
index d2ec9a7f53..6334459579 100644
--- a/vm.c
+++ b/vm.c
@@ -2994,7 +2994,6 @@ ruby_vm_destruct(rb_vm_t *vm)
rb_thread_t *th = vm->ractor.main_thread;
VALUE *stack = th->ec->vm_stack;
if (rb_free_at_exit) {
- rb_free_default_rand_key();
rb_free_encoded_insn_data();
rb_free_global_enc_table();
rb_free_loaded_builtin_table();
@@ -3056,6 +3055,7 @@ ruby_vm_destruct(rb_vm_t *vm)
if (rb_free_at_exit) {
rb_objspace_free_objects(objspace);
rb_free_generic_iv_tbl_();
+ rb_free_default_rand_key();
if (th) {
xfree(stack);
ruby_mimfree(th);