Skip to content
  • nagachika's avatar
    2b2ab1a6
    merge revision(s) 08b3a45b: [Backport #21180] · 2b2ab1a6
    nagachika authored
    
    
    	Push a real iseq in rb_vm_push_frame_fname()
    
    	Previously, vm_make_env_each() (used during proc
    	creation and for the debug inspector C API) picked up the
    	non-GC-allocated iseq that rb_vm_push_frame_fname() creates,
    	which led to a SEGV when the GC tried to mark the non GC object.
    
    	Put a real iseq imemo instead. Speed should be about the same since
    	the old code also did a imemo allocation and a malloc allocation.
    
    	Real iseq allows ironing out the special-casing of dummy frames in
    	rb_execution_context_mark() and rb_execution_context_update(). A check
    	is added to RubyVM::ISeq#eval, though, to stop attempts to run dummy
    	iseqs.
    
    	[Bug #21180]
    
    Co-authored-by: default avatarAaron Patterson <tenderlove@ruby-lang.org>
    2b2ab1a6
    merge revision(s) 08b3a45b: [Backport #21180]
    nagachika authored
    
    
    	Push a real iseq in rb_vm_push_frame_fname()
    
    	Previously, vm_make_env_each() (used during proc
    	creation and for the debug inspector C API) picked up the
    	non-GC-allocated iseq that rb_vm_push_frame_fname() creates,
    	which led to a SEGV when the GC tried to mark the non GC object.
    
    	Put a real iseq imemo instead. Speed should be about the same since
    	the old code also did a imemo allocation and a malloc allocation.
    
    	Real iseq allows ironing out the special-casing of dummy frames in
    	rb_execution_context_mark() and rb_execution_context_update(). A check
    	is added to RubyVM::ISeq#eval, though, to stop attempts to run dummy
    	iseqs.
    
    	[Bug #21180]
    
    Co-authored-by: default avatarAaron Patterson <tenderlove@ruby-lang.org>
Loading