[ruby-cvs:71892] ko1:r64800 (trunk): escape all env properly.

ko1 at ruby-lang.org ko1 at ruby-lang.org
Fri Sep 21 15:41:08 JST 2018


ko1	2018-09-21 15:41:07 +0900 (Fri, 21 Sep 2018)

  New Revision: 64800

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=64800

  Log:
    escape all env properly.
    
    * vm_backtrace.c (rb_debug_inspector_open): escape all env using
      `rb_vm_stack_to_heap()` before making bindings.
      [Bug #15105]
    
      There is a complicated story of this issue:
      Without this patch, IFUNC frame does not escaped. A IFUNC frame
      points to CFUNC ep as previous ep. However, CFUNC ep can be escaped
      because of making bindings of Ruby level frames.
      IFUNC's ep can points to invalidated ep and `rb_iter_break()` will
      fail. This is why `any?` fails.
    
    * test/-ext-/debug/test_debug.rb: add a test.

  Modified files:
    trunk/test/-ext-/debug/test_debug.rb
    trunk/vm_backtrace.c


More information about the ruby-cvs mailing list