なかだです。

At Thu, 12 Apr 2001 19:10:34 +0900,
Tachino Nobuhiro <tachino / open.nm.fujitsu.co.jp> wrote:
>   無関係かもしれませんけど、以下のスクリプトで
> 'プロセス肥大化'が起きるようです。
> 
> def func
>     t = Thread.start {}
>     t.join
> end
> 
> loop do
>     func {}
>     ObjectSpace.garbage_collect
> end

  なんとなくこの辺っぽいんですが、この修正で正しいかどうかは定
かではありません。


Index: eval.c =================================================================== RCS file: /cvs/ruby/src/ruby/eval.c,v retrieving revision 1.172 diff -u -2 -p -r1.172 eval.c --- eval.c 2001/03/28 08:43:24 1.172 +++ eval.c 2001/04/12 15:14:24 @@ -8049,4 +8049,14 @@ rb_thread_start_0(fn, arg, th_arg) POP_TAG(); status = th->status; + if (ruby_block && ruby_block->prev) { + struct BLOCK *data = ruby_block->prev; + while (data) { + struct BLOCK *tmp = data; + if (data->frame.flags & FRAME_MALLOC) + free(data->frame.argv); + data = data->prev; + free(tmp); + } + } if (th == main_thread) ruby_stop(state); rb_thread_remove(th);
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦