From e8cee4915b280dab57ca4f916f36bea4eb7ebdf1 Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Fri, 4 Dec 2020 14:59:12 +0900 Subject: fix initialize order `captured->code.val` should be initialize before because it can be a GC point by another ractor because `RB_OBJ_WRITE` can issue VM locking. --- vm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'vm.c') diff --git a/vm.c b/vm.c index bc3ec98c1a..bdca822ab2 100644 --- a/vm.c +++ b/vm.c @@ -905,8 +905,8 @@ vm_proc_create_from_captured(VALUE klass, VM_ASSERT(VM_EP_IN_HEAP_P(GET_EC(), captured->ep)); /* copy block */ - RB_OBJ_WRITE(procval, &proc->block.as.captured.self, captured->self); RB_OBJ_WRITE(procval, &proc->block.as.captured.code.val, captured->code.val); + RB_OBJ_WRITE(procval, &proc->block.as.captured.self, captured->self); rb_vm_block_ep_update(procval, &proc->block, captured->ep); vm_block_type_set(&proc->block, block_type); -- cgit v1.2.3