Skip to content
  • Alan Wu's avatar
    08b3a45b
    Push a real iseq in rb_vm_push_frame_fname() · 08b3a45b
    Alan Wu authored
    
    
    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>
    08b3a45b
    Push a real iseq in rb_vm_push_frame_fname()
    Alan Wu authored
    
    
    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