[#11915] core dump with GC and Ruby/zlib — Tanaka Akira <akr@...17n.org>
次のスクリプトが core を吐きます。
9 messages
2001/01/04
[#11916] Re: core dump with GC and Ruby/zlib
— Ueno Katsuhiro <unnie@...>
2001/01/04
うえの@ぶるーすかいです。
[#11918] Re: core dump with GC and Ruby/zlib
— matz@... (Yukihiro Matsumoto)
2001/01/04
まつもと ゆきひろです
[#11919] Managing Ruby docs in the CVS repository — "Akinori MUSHA" <knu@...>
At Sun, 31 Dec 2000 00:04:00 +0900,
11 messages
2001/01/04
[#11960] Re: Managing Ruby docs in the CVS repository
— matz@... (Yukihiro Matsumoto)
2001/01/10
まつもと ゆきひろです
[#11925] -d をつけると rescue できない — Kazuhiro NISHIYAMA <zn@...>
-dをつけるとThread#joinで再発生した例外がrescueできなくなります。
8 messages
2001/01/06
[#11950] [PATCH] inline function — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
3 messages
2001/01/10
[#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
[#11963] Re: CVS branches (Re: Re: NORETURN)
— WATANABE Hirofumi <eban@...>
2001/01/10
わたなべです.
[#11964] Re: CVS branches (Re: Re: NORETURN)
— matz@... (Yukihiro Matsumoto)
2001/01/10
まつもと ゆきひろです
[#11968] Re: CVS branches (Re: Re: NORETURN)
— "Akinori MUSHA" <knu@...>
2001/01/10
At Wed, 10 Jan 2001 18:17:50 +0900,
[#11971] Re: CVS branches (Re: Re: NORETURN)
— matz@... (Yukihiro Matsumoto)
2001/01/10
まつもと ゆきひろです
[#11977] Re: CVS branches (Re: Re: NORETURN)
— matz@... (Yukihiro Matsumoto)
2001/01/11
まつもと ゆきひろです
[#11972] download tarball using cvsweb — Katsuyuki Komatsu <komatsu@...>
小松です。
2 messages
2001/01/10
[#11988] [PATCH] mswin32 system problem — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
12 messages
2001/01/11
[#11994] Re: [PATCH] mswin32 system problem
— matz@... (Yukihiro Matsumoto)
2001/01/12
まつもと ゆきひろです
[#11995] Re: [PATCH] mswin32 system problem
— WATANABE Hirofumi <eban@...>
2001/01/12
わたなべです.
[#11996] Re: [PATCH] mswin32 system problem
— "Nobuyoshi.Nakada" <nobu.nakada@...>
2001/01/12
なかだです。
[#11997] Re: [PATCH] mswin32 system problem
— matz@... (Yukihiro Matsumoto)
2001/01/12
まつもと ゆきひろです
[#12001] m17n: encoding module dynamic load — Yasushi Shoji <yashi@...>
At Fri, 12 Jan 2001 11:06:05 +0900,
4 messages
2001/01/12
[#12015] RWiki + CVS — "Akinori MUSHA" <knu@...>
ruby-dev に振り直します。フォローはこちらにお願いします。
7 messages
2001/01/14
[#12035] misc/*.el — "Akinori MUSHA" <knu@...>
misc/*.el を独立モジュールとして管理するというのはいかがでしょうか。
7 messages
2001/01/18
[#12040] repo guide — "Akinori MUSHA" <knu@...>
CVS repository 利用のガイドラインの英語版を出しました。今後は、
9 messages
2001/01/18
[#12041] Re: repo guide
— "K.Kosako" <kosako@...>
2001/01/19
Akinori MUSHAさんの<86n1covdl7.wl@archon.local.idaemons.org>から
[#12044] Re: repo guide
— "Akinori MUSHA" <knu@...>
2001/01/19
At Fri, 19 Jan 2001 10:34:28 +0900,
[#12054] break from proc-closure (Re: [ruby-list:27277]) — Masatoshi SEKI <m_seki@...>
6 messages
2001/01/21
[#12059] Re: break from proc-closure (Re: [ruby-list:27277])
— matz@... (Yukihiro Matsumoto)
2001/01/22
まつもと ゆきひろです
[#12063] 構文木表示 — toyofuku@...
豊福です。
6 messages
2001/01/22
[#12076] GC 内部で落ちる件 — "T.Shimomura" <redbugml@...>
T.Shimomura です。
14 messages
2001/01/26
[#12078] Re: GC 内部で落ちる件
— Shugo Maeda <shugo@...>
2001/01/26
前田です。
[#12079] Re: GC 内部で落ちる件
— "T.Shimomura" <redbugml@...>
2001/01/26
T.Shimomura です。
[#12084] [patch] mswin32 system() — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
10 messages
2001/01/27
[#12097] Re: [patch] mswin32 system()
— nobu.nakada@...
2001/01/27
なかだです。
[#12085] DATA and __END__ on RubyWin — Masaki Suketa <CQN02273@...>
助田です。
7 messages
2001/01/27
[#12087] string#index, gsub, []= のバグ? — Beyond <beyond@...>
18 messages
2001/01/27
[#12091] Re: string#index, gsub, []= のバグ?
— matz@... (Yukihiro Matsumoto)
2001/01/27
まつもと ゆきひろです
[#12093] Re: string#index, gsub, []= のバグ?
— nobu.nakada@...
2001/01/27
なかだです。
[#12107] Re: string#index, gsub, []= のバグ?
— matz@... (Yukihiro Matsumoto)
2001/01/28
まつもと ゆきひろです
[#12119] return from passed block — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだ@風邪っぴきです。
7 messages
2001/01/29
[ruby-dev:11916] Re: core dump with GC and Ruby/zlib
From:
Ueno Katsuhiro <unnie@...>
Date:
2001-01-04 15:32:56 UTC
List:
ruby-dev #11916
うえの@ぶるーすかいです。
On Thu, 4 Jan 2001 19:48:10 +0900
Tanaka Akira <akr@m17n.org> wrote:
> 次のスクリプトが core を吐きます。
>
> Z(2):akr@flux% cat tst
> #!/usr/local/bin/ruby
>
> require 'zlib';
>
> f = open('z', 'w')
> p f.id
>
> s = "a"
> begin
> s = s.dup
> end while s.id < f.id
>
> g = GzipWriter.new(f)
> p g.id
>
> print "script ends.\n"
snip..
> ruby は [BUG] だと述べていますが、これは Ruby と Ruby/zlib のどちらの
> BUG なのでしょう?
Ruby のバグっぽいです。
g が解放 (= close) される前に f が解放されています。
で、gc.c (in ruby-1.6.2.tar.gz) の 1247 行目付近の
else if (BUILTIN_TYPE(p) == T_FILE) {
p->as.free.flag = 0; ← コレ
rb_io_fptr_finalize(RANY(p)->as.file.fptr);
}
で f の型が T_FILE でなくなり、さらにその後 g が解放されるときに
すでに解放されている f の write メソッドを呼んでしまい、
io.c の 236 行付近のテストにひっかかり
if (TYPE(io) != T_FILE) {
/* port is not IO, call write method for it. */
return rb_funcall(io, id_write, 1, str);
}
無限ループしてしまっているようです。
T_DATA を解放した後で T_FILE を解放するようにすればいいのかな?
--- gc.c.orig Fri Dec 22 12:21:56 2000
+++ gc.c Fri Jan 5 00:24:33 2001
@@ -1242,7 +1242,13 @@
p->as.free.flag = 0;
(*RANY(p)->as.data.dfree)(DATA_PTR(p));
}
- else if (BUILTIN_TYPE(p) == T_FILE) {
+ p++;
+ }
+ }
+ for (i = 0; i < heaps_used; i++) {
+ p = heaps[i]; pend = p + HEAP_SLOTS;
+ while (p < pend) {
+ if (BUILTIN_TYPE(p) == T_FILE) {
p->as.free.flag = 0;
rb_io_fptr_finalize(RANY(p)->as.file.fptr);
}
core を吐くのは、スクリプト終了時の最後の GC で finalizer の中で
例外が起きると prot_tag が 0 のために JUMP_TAG で segv になるのが
原因のようです。
これも
> # ちなみに、これと直接には関係ありませんが
> # ruby -e 'require "zlib"; f = GzipWriter.new(1); f.print "a\n"'
> # が core を吐くのは Ruby/zlib の問題だと思う。
同じ原因です。
finalize 中に Fixnum#write を呼んだために NameError 例外が発生しています。
うーん、finalizer の中では例外が起きるようなことは
しないほうがいいんでしょうか?
-=====--===-
うえの かつひろ @ BLUE-SKYNET <unnie@blue.sky.or.jp> --=
---=----===- http://www.blue.sky.or.jp/ -==