永井@知能.九工大です. From: 門脇 修司 <kadowaki.shuji / jp.fujitsu.com> Subject: [ruby-list:46813] Re: TkTable.rbで"[BUG] Segmentaion fauilt"発生 Date: Mon, 25 Jan 2010 17:16:48 +0900 Message-ID: <20100125171642.2AA0.DA7C2934 / jp.fujitsu.com> > > そのため,tktable.rb 以外でも同じように SEGV する可能性がありますが, > > それらについても応急処置として GC.disable/GC.enable で囲んでください. > > わかりました。まずはこの手で回避し、もしも他の部分で同じことがおきたら > 囲んでいきます。 ごめんなさい. いくら応急処置にしてもインストール済みのものの変更が必須というのは 良い回避策提示とは言えませんでしたね. ローカルの環境だけであればそれでもいいのでしょうけど, 作成したものを他所に提供する場合には困ります. 今回の回避策は monky patch で可能ですので, 他所でも動かすならその方がいいでしょう. その場合は,アプリケーション上で require 'tk' をした後に 次の記述を加えてください. -------------------------------------------------------- class << TkUtil::CallbackSubst alias _orig_setup_subst_table _setup_subst_table def _setup_subst_table(*args) st = GC.disable _orig_setup_subst_table(*args) GC.enable unless st end end -------------------------------------------------------- この程度の記述であれば,今後 bug fix が行なわれた後でも 特に問題を引き起こすことはないはずです. > ruby_1_8に対して提供いただけるだけでとてもうれしいです。 > (ruby_1_9だけ、と言われても不思議でない時期ですよね?) まだ暫くは ruby_1_8 への提供は終わらないと思います. リリース版が出てなくても, SVN サーバから ruby_1_8/ext/tk 以下を入手して置き換えて make, install すれば,新しいものを使えるはずです. -- 永井 秀利 (nagai / ai.kyutech.ac.jp) 九州工業大学 大学院情報工学研究院 知能情報工学研究系 知能情報メディア部門