永井@知能.九工大です.

From: 門脇 修司 <kadowaki.shuji / jp.fujitsu.com>
Subject: [ruby-list:46810] Re: TkTable.rbで"[BUG] Segmentaion fauilt"発生
Date: Mon, 25 Jan 2010 13:47:31 +0900
Message-ID: <20100125134722.A3B1.DA7C2934 / jp.fujitsu.com>
> tktable.rbの変更をやり直しましたところ、動くようになりました。
> (GC.disable/enableを追加することでsegmentation faultが発生しなく
>  なった)

良かったです.

> このtktable.rbの変更を当面の回避策として使い続けて良いでしょうか?

メモリ消費が少し大きくなるかもしれませんが,
当面はそれでかまわないと思います.

問題となっている _setup_subst_table() は,
イベントのコールバック処理などにおける Tcl/Tk の % 置換を
どのようにして Ruby のオブジェクトに変換するかを定義したテーブルを
作成するためのものです.
% 置換は entry widget の内容の validation などでも用いられますから,
_setup_subst_table() はいくつものクラスで使用されています.

そのため,tktable.rb 以外でも同じように SEGV する可能性がありますが,
それらについても応急処置として GC.disable/GC.enable で囲んでください.

もちろん,今後 _setup_subst_table() のバグは修正しますが,
修正は SVN 上の trunk と ruby_1_8 に対して行なわれます.
ruby 1.8.7 等へのバックポート (パッチリリースでの fix) がどうなるかは
それらの branch の管理者次第となりますことを御了承ください.
-- 
永井 秀利  (nagai / ai.kyutech.ac.jp)
九州工業大学 大学院情報工学研究院 知能情報工学研究系 知能情報メディア部門