[Kazehakase-devel 2910] Re: 起動時に~/.kazehakase/clip.xmlがある場合にsegfault

Back to archive index

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*****>


Kazehakase-devel メーリングリストの案内
Back to archive index