2008年7月 7日

[ruby-list:45207] Re: ソース:インストール:MacOSX10.3.9

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

# まとめて返信させていただきますが,ご容赦ください.

From: Ryutaro Amano <wn9r-amn@xxxxx>
Subject: [ruby-list:45198] Re: ソース:インストール:MacOSX10.3.9
Date: Sun, 6 Jul 2008 08:08:15 +0900
Message-ID: <07A24EA9-8B6C-4AD5-91DB-CDB47D5E48ED@xxxxx>

> module TkCore; RUN_EVENTLOOP_ON_MAIN_THREAD = true; end
> require 'tk'
>
> で、エラーが出ないのを確認しました。
> うちのPowerPCMac + 10.5.4 において
> AquaTclTk-8.5.2および8.5.2をソースからインストールの環
> 境で、どちらも上記のやり方でエラーなしでした。

確認をありがとうございます.

> ---------------------------------------------------------
> require 'tcltklib'
> ip = TclTkIp.new
> ip._eval('after 1 {destroy .}')
> TclTkLib.mainloop
> ip.delete
> ip = nil # for GC
> require 'tk'
> ---------------------------------------------------------
>
> は、以下のようになります。
>
> :10: [BUG] Segmentation fault
> ruby 1.9.0 (2008-06-20 revision 17482) [powerpc-darwin9.3.0]


From: wei <weimayamiew@xxxxx>
Subject: [ruby-list:45196] Re: ソース:インストール:MacOSX10.3.9
Date: Sat, 5 Jul 2008 23:43:15 +0900
Message-ID: <CA7038B5-80A1-46E9-B456-2EEE17089B7E@xxxxx>
> 試した所、一瞬Windowが出て
>
> Tcl_Release couldn't find reference for 0x107c10
> Abort
>
> と出てすぐに終了しました。

あ゛...
すみません.別のバグを掘り出したみたいですね.(^_^;
多分,インタープリタの破棄時に不必要にインタープリタの Tcl_Release を
してしまっているということだと思いますので,修正します.

とりあえず,テストコードから
---------------------------------------------------------
ip.delete
ip = nil # for GC
---------------------------------------------------------
の2行を取り除いて試してみるとどうなるでしょうか?

> ちなみに10.5.4上で、ruby-1.9.0-2を以下のオプショ
> ンでインストールすると
>
> ./configure --enable-shared --enable-pthread
> 普通に require 'tk' で問題ありません。この場合は、デ
> フォルトでインストールされている8.4.7が呼ばれています。

Tcl/Tk のソースを見てみると,問題となっている個所は
8.4.9 と 8.4.10 の間で変更されています.
動くか動かないかの差はそれが理由だったようですね.
8.4.10 以降では,event loop は main thread でしか
動かせないということになるようです.

とはいえ,8.4.7 では動いているということは,
きっと何かの方法自体は存在するのでしょうね.
その方法が,TkAqua 側で何とかしてもらうしかどうしようもないのか,
あるいは Ruby/Tk 側で何とかすることが可能なものなのかは
恥ずかしながらまだ分からないのですが...
--
永井 秀利 (nagai@xxxxx)
九州工業大学 大学院情報工学研究院 知能情報工学研究系


投稿者 xml-rpc : 2008年7月 7日 14:37
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/75042
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。