diff options
author | Luke Gruber <[email protected]> | 2025-06-17 16:56:26 -0400 |
---|---|---|
committer | Aaron Patterson <[email protected]> | 2025-06-17 15:03:39 -0700 |
commit | e3ec101cc21613550ef87b7bd8432a69c7e639de () | |
tree | 284985582cc1f6f28718e454bacb6c50b453e3f0 /vm.c | |
parent | b0662602968f0431aaf2c220834dcfb14bfc3372 (diff) |
thread_cleanup: set CFP to NULL before clearing ec's stack
We clear the CFP first so that if a sampling profiler interrupts the current thread during `rb_ec_set_vm_stack`, `thread_profile_frames` returns early instead of trying to walk the stack that's no longer set on the ec. The early return in `thread_profile_frames` was introduced at eab7f4623fb. Fixes [Bug #21441]
Notes: Merged: https://.com/ruby/ruby/pull/13643
-rw-r--r-- | vm.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -3675,10 +3675,10 @@ rb_ec_initialize_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size) void rb_ec_clear_vm_stack(rb_execution_context_t *ec) { - rb_ec_set_vm_stack(ec, NULL, 0); - - // Avoid dangling pointers: ec->cfp = NULL; } static void |