From: "U.Nakamura" Date: 2002-10-15T17:06:02+09:00 Subject: [ruby-dev:18519] Re: Segmentaion fault of miniruby こんにちは、なかむら(う)です。 In message "[ruby-dev:18518] Re: Segmentaion fault of miniruby" on Oct.15,2002 16:43:31, 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