diff --git a/vm.c b/vm.c index 4b4b440025..40041302b5 100644 --- a/vm.c +++ b/vm.c @@ -2398,7 +2398,9 @@ rb_execution_context_mark(const rb_execution_context_t *ec) } /* mark machine stack */ - if (ec->machine.stack_start && ec->machine.stack_end) { + if (ec->machine.stack_start && ec->machine.stack_end && + ec != GET_EC() /* marked for current ec at the first stage of marking */ + ) { rb_gc_mark_machine_stack(ec); rb_gc_mark_locations((VALUE *)&ec->machine.regs, (VALUE *)(&ec->machine.regs) +