From 456327390983ebf05712f9707cf01adb4803d40a Mon Sep 17 00:00:00 2001 From: ko1 Date: Sat, 28 Oct 2017 05:36:48 +0000 Subject: [PATCH] skip machine stack marking for current ec. * vm.c (rb_execution_context_mark): At the beggining of GC marking, mark_current_machine_context() marks running machine stack so that rb_execution_context_mark() should not mark machine stack if it is current ec. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- vm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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) +