From: kazuki@... Date: 2014-10-11T10:58:16+00:00 Subject: [ruby-dev:48616] [ruby-trunk - Bug #10368] [Assigned] GC mark miss on bindings Issue #10368 has been reported by Kazuki Tsujimoto. ---------------------------------------- Bug #10368: GC mark miss on bindings https://bugs.ruby-lang.org/issues/10368 * Author: Kazuki Tsujimoto * Status: Assigned * 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: REQUIRED, 2.1: REQUIRED ---------------------------------------- 以下のコードで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/