Kouhei Sutou
kou****@cozmi*****
2008年 9月 9日 (火) 20:48:45 JST
須藤です。 In <61b10****@mail*****> "[Kazehakase-devel 2908] Re: 起動時に~/.kazehakase/clip.xmlがある場合にsegfault" on Tue, 9 Sep 2008 17:48:11 +0900, "Noritada Kobayashi" <norit****@gmail*****> wrote: > >> 起動時に~/.kazehakase/clip.xmlがあるとRuby関連のsegfaultが起きる、 > >> というバグで、バックトレースも同バグのバグ報告に収められています。 > > > > clip.xmlは単にGCのタイミングに関連しているだけかと思います。 > > 例えば、こうすると、clip.xmlがあってももう少し先に進みそうな気がします。 > > 確かにGCはタイミングの問題なので、clip.xmlはあまり関係なさそうですね……。 前は手元でも落ちた気がするんですが、今は落ちないんですよね。 (amd64/sid) とりあえず、kazehakase-init-pre.rbの中でだけGCを止めて切り抜 けるとその後も動きつづけるということはないですか? > > バックトレースをみると、 > > #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ということでお願い します。たぶん、使っている人はいないと思いますし。 といっても、手元で再現しないので直せる気がしないのですが。。。 > # なんかruby1.8にreassignしたんですが、 > # libgtk-ruby1.8のほうにreassignされちゃいました……。 まぁ、どれにいっても私なので。。。