[#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:11921] Re: core dump with GC and Ruby/zlib

From: Ueno Katsuhiro <unnie@...>
Date: 2001-01-05 05:51:45 UTC
List: ruby-dev #11921
うえの@ぶるーすかいです。

On Fri, 5 Jan 2001 05:43:00 +0900
matz@zetabits.com (Yukihiro Matsumoto) wrote:

> |> ruby は [BUG] だと述べていますが、これは Ruby と Ruby/zlib のどちらの
> |> BUG なのでしょう?
> |
> |Ruby のバグっぽいです。
> |g が解放 (= close) される前に f が解放されています。
>
> これを「Rubyのバグ」と呼んじゃうのはRubyが(or 私が ^^;;;)か
> わいそうです。gもfもすでにゴミである以上、依存関係が保存され
> ることを期待してはいけないのではないかと思います。

失礼致しました m(_ _)m

確かに依存関係がループしていると解放できなくなってしまうんですが、
とすると、別のオブジェクトに依存しているオブジェクトは
自身の finalizer の中で依存先のオブジェクトを操作/参照しては
ならない、ということでしょうか。


> |core を吐くのは、スクリプト終了時の最後の GC で finalizer の中で
> |例外が起きると prot_tag が 0 のために JUMP_TAG で segv になるのが
> |原因のようです。
>
> これはバグでしょう。ruby_finalize()の中身をPUSH_TAG/POP_TAG
> でくくることで解決するのではないでしょうか?

うーん、こっちのほうは、C レベルの finalizer 中では例外を
発生させてはならないという Ruby の仕様かな、と思ったものですから。

PUSH_TAG/POP_TAG で括っても finalizer 中で例外が発生すると
それより後に解放されるはずのオブジェクトは解放されなくなるわけですから、
segv にならないってだけで結局は五十歩百歩のような気がします。



-=====--===-
   うえの かつひろ @ BLUE-SKYNET    <unnie@blue.sky.or.jp>  --=
---=----===-                    http://www.blue.sky.or.jp/  -==

In This Thread