From: Yusuke Endoh Date: 2010-11-04T01:01:23+09:00 Subject: [ruby-dev:42524] [Ruby 1.9-Bug#4020][Open] Fiber#initialize causes memory leaks Bug #4020: Fiber#initialize causes memory leaks http://redmine.ruby-lang.org/issues/show/4020 起票者: Yusuke Endoh ステータス: Open, 優先度: Normal カテゴリ: core ruby -v: ruby 1.9.3dev (2010-11-03 trunk 29679) [i686-linux] 遠藤です。 Fiber#initialize を複数回呼ぶとメモリリークします。 f = Fiber.new {} loop { f.send(:initialize) { } } #=> メモリ無限消費 diff --git a/cont.c b/cont.c index b0b3f41..56ae843 100644 --- a/cont.c +++ b/cont.c @@ -971,6 +971,10 @@ fiber_t_alloc(VALUE fibval) rb_fiber_t *fib; rb_thread_t *th = GET_THREAD(); + if (DATA_PTR(fibval) != 0) { + rb_raise(rb_eRuntimeError, "cannot initialize twice"); + } + THREAD_MUST_BE_RUNNING(th); fib = ALLOC(rb_fiber_t); memset(fib, 0, sizeof(rb_fiber_t)); -- Yusuke Endoh ---------------------------------------- http://redmine.ruby-lang.org