diff options
author | John Hawthorn <john@hawthorn.email> | 2023-12-22 12:15:07 -0800 |
---|---|---|
committer | John Hawthorn <john@hawthorn.email> | 2023-12-22 18:07:22 -0800 |
commit | 339978ef3869acb2ff877451381a80ee4b548bfb (patch) | |
tree | 8e9a032708859a1f5fd0ac6f71266f738f1063ce /vm.c | |
parent | 697a096c9b0d8c153cb5d99affb6b5673b7c4210 (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.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -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); |