[#23332] to_str再考 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

15 messages 2004/04/05

[#23380] [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

17 messages 2004/04/15
[#23400] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。落ちる場所がわかりました。

[#23402] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。

[#23403] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — nobu.nakada@... 2004/04/16

なかだです。

[#23405] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。

[#23407] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。

[ruby-dev:23363] memory leak ? in Dir.glob with block

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2004-04-09 08:43:24 UTC
List: ruby-dev #23363
山本です。

先ほど気づいたのですが、Dir.glob をブロックつきで呼び出した場合、ブロックから例外などが出ると
メモリリークしている気がします。

dir.c 1500 行目で free(buf) とあるのですが、その前に

dir.c 1493 行目で push_globs(ary, buf, flags); とあり、

static void
push_globs(ary, s, flags)
    VALUE ary;
    const char *s;
    int flags;
{
    rb_glob2(s, flags, push_pattern, ary);
}

で、rb_glob2(path, flags, func, arg) の 1365 行目で

    if (status) rb_jump_tag(status);

としているので、大域脱出が起こると free(buf) が実行されずにリークする気がします。
GC で保護されるのは、VALUE だけですよね?(自信なし)

# [ruby-dev:23361] は先ほどコミットしました。

In This Thread

Prev Next