Project

General

Profile

Actions

Bug #4020

closed

Fiber#initialize causes memory leaks

Added by mame (Yusuke Endoh) over 14 years ago. Updated about 14 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.3dev (2010-11-03 trunk 29679) [i686-linux]
Backport:
[ruby-dev:42524]

Description

=begin
遠藤です。

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
=end

Actions #1

Updated by ko1 (Koichi Sasada) over 14 years ago

=begin
 ささだです。

(2010/11/03 16:01), Yusuke Endoh wrote:

Fiber#initialize を複数回呼ぶとメモリリークします。

 ご指摘ありがとうございます。コミットもお願いします。

--
// SASADA Koichi at atdot dot net

=end

Actions #2

Updated by mame (Yusuke Endoh) over 14 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
This issue was solved with changeset r29682.
Yusuke, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.

=end

Actions

Also available in: Atom PDF

Like0
Like0Like0