Issue #10368 has been updated by Usaku NAKAMURA.

Backport changed from 2.0.0: REQUIRED, 2.1: DONE to 2.0.0: DONE, 2.1: DONE

Backported into `ruby_2_0_0` at r48048.

----------------------------------------
Bug #10368: GC mark miss on bindings
https://bugs.ruby-lang.org/issues/10368#change-49549

* Author: Kazuki Tsujimoto
* Status: Closed
* Priority: Normal
* Assignee: Koichi Sasada
* Category: 
* Target version: 
* ruby -v: ruby 2.2.0dev (2014-10-11 trunk 47881) [x86_64-linux]
* Backport: 2.0.0: DONE, 2.1: DONE
----------------------------------------
以下のコードでSEGVすることがあります。
mに渡したブロックがGCされてしまうのが原因です。

~~~ruby
def m
  binding
end

GC.stress = true
b = nil
tap do 
  b = m {}
end
GC.start
0.times.to_a
b.eval('yield')
~~~

ブロックに対応するProcオブジェクトをrb_binding_tに持たせるようにするパッチを添付します。

---Files--------------------------------
0001-add-blockprocval-to-rb_block_t.patch (4.87 KB)
0002-use-rb_vm_make_binding-instead-of-rb_binding_new_with_cfp.patch (1.9 KB)


-- 
https://bugs.ruby-lang.org/