Noritada Kobayashi
norit****@gmail*****
2008年 9月 9日 (火) 21:17:05 JST
小林です。 2008/09/09 20:48 Kouhei Sutou <kou****@cozmi*****>: >> >> 起動時に~/.kazehakase/clip.xmlがあるとRuby関連のsegfaultが起きる、 >> >> というバグで、バックトレースも同バグのバグ報告に収められています。 >> > >> > clip.xmlは単にGCのタイミングに関連しているだけかと思います。 >> > 例えば、こうすると、clip.xmlがあってももう少し先に進みそうな気がします。 >> >> 確かにGCはタイミングの問題なので、clip.xmlはあまり関係なさそうですね……。 > とりあえず、kazehakase-init-pre.rbの中でだけGCを止めて切り抜 > けるとその後も動きつづけるということはないですか? はい、書き忘れましたが、最初のメールにあったとおりkazehakase-init-pre.rbを 書き換えると動き続けます。 > 前は手元でも落ちた気がするんですが、今は落ちないんですよね。 > (amd64/sid) ちなみに、報告者のマシンは分かりませんが、ぼくのマシンはi386/lennyです。 i386/sidとあまり変わらないと思いますが……。 >> > バックトレースをみると、 >> > #4 0xb6dff787 in str_alloc (klass=3067261960) at string.c:67 >> > #5 0xb6dff80c in str_new (klass=8, ptr=0x81141f8 ":", len=1) at string.c:89 >> > となっていて、ソースをみるとstr_new()のklassはそのままstr_alloc()の >> > klassとして渡されるだけなのに大きく値が違っているので、もっと別の >> > 場所で何かが壊れているのだと思います。 >> > >> > >> > それは別として、Rubyのend_procsたちは初期化されていてもよさそう >> > な気がします。そうすれば >> > #1 0xb6d8ad2b in rb_mark_end_proc () at eval.c:7989 >> > の中でwhile (link)でループに入ることもなく、gc_mark()も呼ばれないよ >> > うな気もします。 >> > >> > ということでRubyにこのパッチを当てると挙動は変わりますか? >> >> ありがとうございます。 >> 当ててインストールしてみたのですが変わりませんでした……。 > > Rubyがバグっていなくてよかったです。 > たぶん、というか、当然というか、風の方がヘボっているんだと思 > います。 > > 直せなかったら、最悪、Ruby拡張はdeprecatedということでお願い > します。たぶん、使っている人はいないと思いますし。 最悪disableにしたものをlennyに入れてもらうことにします。 > といっても、手元で再現しないので直せる気がしないのですが。。。 そうですね……。開発者の手元で再現しないのは痛いです。 -- Noritada Kobayashi <norit****@gmail*****>