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 | |
| 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
| -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); |
