From 3ba485c0bfcfc0be351ef8278cd27187f4c11906 Mon Sep 17 00:00:00 2001 From: "Urabe, Shyouhei" Date: Tue, 23 Apr 2019 18:02:24 +0900 Subject: zero-fill before GC mark Depending on architectures, setjmp might not fully fill a jmp_buf. On such machines the union can contain wobbly bits. They are then scanned during mark_locations_array(). This is bad. --- gc.c | 1 + 1 file changed, 1 insertion(+) (limited to 'gc.c') diff --git a/gc.c b/gc.c index b4ad456b41..f1715de7b7 100644 --- a/gc.c +++ b/gc.c @@ -4598,6 +4598,7 @@ mark_current_machine_context(rb_objspace_t *objspace, rb_execution_context_t *ec VALUE *stack_start, *stack_end; FLUSH_REGISTER_WINDOWS; + memset(&save_regs_gc_mark, 0, sizeof(save_regs_gc_mark)); /* This assumes that all registers are saved into the jmp_buf (and stack) */ rb_setjmp(save_regs_gc_mark.j); -- cgit v1.2.3