summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authornagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-08-20 16:52:33 +0000
committernagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-08-20 16:52:33 +0000
commitff089f50a11a1196f18135b5ef012fc812fa17f8 (patch)
tree955b7a5c631a04485b704cc6421b1bdbe7a01f76 /gc.c
parent447e1c4d199181bc02935e00589c3cc2668a5e1e (diff)
merge revision(s) r45542,r45543: [Backport #9717]
* gc.c (mark_current_machine_context): Call SET_STACK_END. This reverts a hunk of r40703 by ko1. This fixes [ruby-dev:48098] [Bug #9717]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47229 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gc.c b/gc.c
index 5dbf349669..b2d8bfb83e 100644
--- a/gc.c
+++ b/gc.c
@@ -3478,6 +3478,10 @@ mark_current_machine_context(rb_objspace_t *objspace, rb_thread_t *th)
/* This assumes that all registers are saved into the jmp_buf (and stack) */
rb_setjmp(save_regs_gc_mark.j);
+ /* SET_STACK_END must be called in this function because
+ * the stack frame of this function may contain
+ * callee save registers and they should be marked. */
+ SET_STACK_END;
GET_STACK_BOUNDS(stack_start, stack_end, 1);
mark_locations_array(objspace, save_regs_gc_mark.v, numberof(save_regs_gc_mark.v));