# \[Closed\] GC mark miss on bindings

**URL:** <https://www.ruby-forum.com/t/closed-gc-mark-miss-on-bindings/232616>\
**Category:** Development\
**Created:** [October 18, 2014, 1:47pm UTC](https://www.ruby-forum.com/t/closed-gc-mark-miss-on-bindings/232616 "2014-10-18T13:47:41Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![addis\_a](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c4cdca/32.png) [@addis\_a](https://www.ruby-forum.com/u/addis_a)\
**Post date:** [October 18, 2014, 1:47pm UTC](https://www.ruby-forum.com/t/closed-gc-mark-miss-on-bindings/232616/1 "2014-10-18T13:47:41Z")

</div>

Issue #10368 has been updated by Kazuki Tsujimoto.

Status changed from Assigned to Closed  
% Done changed from 0 to 100

Applied in changeset r48000.

* * *

- vm\_core.h, vm.c, proc.c: fix GC mark miss on bindings.  
[ruby-dev:48616] [Bug #10368]

- test/ruby/test\_eval.rb: add a test code.

* * *

Bug #10368: GC mark miss on bindings

> **[Bug #10368: GC mark miss on bindings - Ruby master - Ruby Issue Tracking System](https://bugs.ruby-lang.org/issues/10368#change-49516)**
>
> Redmine

- 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: 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)
