[#18440] racc segv revisited — "Akinori MUSHA" <knu@...>

 次のバグの件なんですが、現時点では原因究明を含めて未解決という

24 messages 2002/10/02
[#18617] Re: racc segv revisited — "Akinori MUSHA" <knu@...> 2002/11/02

At Wed, 2 Oct 2002 23:19:59 +0900,

[ruby-dev:18519] Re: Segmentaion fault of miniruby

From: "U.Nakamura" <usa@...>
Date: 2002-10-15 08:06:02 UTC
List: ruby-dev #18519
こんにちは、なかむら(う)です。

In message "[ruby-dev:18518] Re: Segmentaion fault of miniruby"
    on Oct.15,2002 16:43:31, <nobu.nakada@nifty.ne.jp> wrote:
| > @@ -356,4 +356,4 @@ rb_global_entry(id)
| >  	entry = ALLOC(struct global_entry);
| > -	st_add_direct(rb_global_tbl, id, entry);
| >  	var = ALLOC(struct global_variable);
| > +	st_add_direct(rb_global_tbl, id, entry);
| >  	entry->id = id;
| 
| これだとやっぱり*entryは初期化されてないのでは。

最初そう思ってなかださんのパッチのようにしてたんですけど、後
で考え直してこうしてみました。
つまり、私の修正の形で、st_add_direct()してからentryやvarを初
期化し終わるまでの間にGCが走ることがあるかどうか、ってことな
んですが、実際にはどうなんでしょう?

st_add_direct()の中でならありえるけど、その時点ではまだrb_global_tbl
に登録されてないのでやっぱり大丈夫と解釈してます。
いつものように私が間違ってるのでしょうか?


| # NoMemoryErrorが起きたときにentryやvarがリークしそうな気がしな
| # くもないんですが。

そこまで具体的には考えなかったんですが、同じ懸念を抱きました。
でもそれなら1.6とかでもentryがリークするパターンがあるような
気がするので思考停止しました ^^;


それでは。
-- 
U.Nakamura <usa@osb.att.ne.jp>



In This Thread