Don't reference update frames with VM_FRAME_MAGIC_DUMMY

Frames with VM_FRAME_MAGIC_DUMMY pushed by rb_vm_push_frame_fname have
allocated iseq, so we should not reference update it.
This commit is contained in:
Peter Zhu 2024-12-17 09:27:11 -05:00
parent 429b867d1b
commit 707c6420b1
Notes: git 2024-12-17 16:03:56 +00:00

2
vm.c
View File

@ -3367,6 +3367,7 @@ rb_execution_context_update(rb_execution_context_t *ec)
}
while (cfp != limit_cfp) {
if (VM_FRAME_TYPE(cfp) != VM_FRAME_MAGIC_DUMMY) {
const VALUE *ep = cfp->ep;
cfp->self = rb_gc_location(cfp->self);
cfp->iseq = (rb_iseq_t *)rb_gc_location((VALUE)cfp->iseq);
@ -3383,6 +3384,7 @@ rb_execution_context_update(rb_execution_context_t *ec)
VM_FORCE_WRITE(&ep[VM_ENV_DATA_INDEX_ME_CREF], rb_gc_location(ep[VM_ENV_DATA_INDEX_ME_CREF]));
}
}
}
cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
}