[#11952] NORETURN — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

24 messages 2001/01/10
[#11956] Re: NORETURN — WATANABE Hirofumi <eban@...> 2001/01/10

わたなべです.

[#11957] Re: NORETURN — matz@... (Yukihiro Matsumoto) 2001/01/10

まつもと ゆきひろです

[#11958] Re: NORETURN — WATANABE Hirofumi <eban@...> 2001/01/10

わたなべです.

[#11959] CVS branches (Re: Re: NORETURN) — matz@... (Yukihiro Matsumoto) 2001/01/10

[#12087] string#index, gsub, []= のバグ? — Beyond <beyond@...>

18 messages 2001/01/27
[#12091] Re: string#index, gsub, []= のバグ? — matz@... (Yukihiro Matsumoto) 2001/01/27

まつもと ゆきひろです

[ruby-dev:11918] Re: core dump with GC and Ruby/zlib

From: matz@... (Yukihiro Matsumoto)
Date: 2001-01-04 20:43:00 UTC
List: ruby-dev #11918
まつもと ゆきひろです

In message "[ruby-dev:11916] Re: core dump with GC and Ruby/zlib"
    on 01/01/05, Ueno Katsuhiro <unnie@blue.sky.or.jp> writes:

|> ruby は [BUG] だと述べていますが、これは Ruby と Ruby/zlib のどちらの
|> BUG なのでしょう?
|
|Ruby のバグっぽいです。
|g が解放 (= close) される前に f が解放されています。

これを「Rubyのバグ」と呼んじゃうのはRubyが(or 私が ^^;;;)か
わいそうです。gもfもすでにゴミである以上、依存関係が保存され
ることを期待してはいけないのではないかと思います。

今回の修正は「たまたま」T_DATAがT_FILEに依存していたから添付
のパッチのような修正で対応できましたが、今後発生しうるあらゆ
る依存関係に対応しようとしたら、ゴミに対してもなんらかのscan
を行う必要があり、結果としてGCコストの増大を招くだけだと思い
ます。

この件に関してはRuby/zlib側で対処してもらいたいなあ。かなら
ずcloseすることを義務づけた上で、finalizerではfが解放されて
たら(flags==0なら)writeしないとか。

|core を吐くのは、スクリプト終了時の最後の GC で finalizer の中で
|例外が起きると prot_tag が 0 のために JUMP_TAG で segv になるのが
|原因のようです。

これはバグでしょう。ruby_finalize()の中身をPUSH_TAG/POP_TAG
でくくることで解決するのではないでしょうか?

                                まつもと ゆきひろ /:|)

In This Thread