From: Hidetoshi NAGAI Date: 2009-07-09T18:28:52+09:00 Subject: [ruby-dev:38755] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 永井@知能.九工大です. From: oshida@bb-next.net Subject: [ruby-dev:38754] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 Date: Thu, 9 Jul 2009 16:39:06 +0900 Message-ID: <1247125129.4a559e89e67b8@u1.div.rasch.jp> > ext/tk/lib/tk.rb だけ revert して patch し直しまして、 > trunk@23996 での結果は、いぜん動作せず、でして・・・ > > /usr/local/lib/ruby/1.9.1/tk.rb:1410:in `_invoke': Interrupt > from /usr/local/lib/ruby/1.9.1/tk.rb:1410:in `' > from /usr/local/lib/ruby/1.9.1/tk.rb:1149:in `' > from ext/tk/sample/tkcombobox.rb:6:in `require' > from ext/tk/sample/tkcombobox.rb:6:in `
' > Tcl_Release couldn't find reference for 0x10341550 > Aborted (core dumped) > > ダンプ内容は、、、省略します。 ダメでしたか.(;_;) 1.9 なので,native thread 絡みの部分だろうとは思うのですが... わずかな可能性として,require 'tk' の前に ------------------------------------------------------- module TkCore RUN_EVENTLOOP_ON_MAIN_THREAD = true end ------------------------------------------------------- を実行するようにしてみていただけませんか? Ruby 1.9 でこれを設定すると, Tk.mainloop は main thread でしか実行できなくなりますが ( Thread.new{Tk.mainloop} はうまく機能しません ), eventloop と nativethread の絡みで hang up しているようなケースは 回避できる可能性があります. もしこれで回避できるなら,Cygwin 環境ではこの設定としておくことで 当面の回避策としたいと思います. これでもダメなら,目前は対応が間に合いそうにないので 残念ながら Cygwin 環境での Ruby 1.9 の Ruby/Tk は非サポート (少なくとも当面は) とさせていただこうと思います. -- 永井 秀利 (nagai@ai.kyutech.ac.jp) 九州工業大学 大学院情報工学研究院 知能情報工学研究系 知能情報メディア部門