summaryrefslogtreecommitdiff
path: root/vm.c
diff options
context:
space:
mode:
authorLuke Gruber <[email protected]>2025-06-17 16:56:26 -0400
committerAaron Patterson <[email protected]>2025-06-17 15:03:39 -0700
commite3ec101cc21613550ef87b7bd8432a69c7e639de ()
tree284985582cc1f6f28718e454bacb6c50b453e3f0 /vm.c
parentb0662602968f0431aaf2c220834dcfb14bfc3372 (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.c6
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