|
[ruby-list:42429] Re: toplevel ウィジェットにイベントがわたらない?: msg#00083lang.ruby.japanese
永井@知能.九工大です. From: Hiroshi Kimura <Hiroshi.Kimura-eMmSpT1cY+jdXrUUVAUsAc8NsWr+9BEh@xxxxxxxxxxxxxxxx> Subject: [ruby-list:42428] toplevel ウィジェットにイベントがわたらない? Date: Tue, 20 Jun 2006 15:43:59 +0900 Message-ID: <20060620064357.C25E3D324-EFsdYZzTZAp4yZKlPVxj6N1etRRUBSwBzw2xav70ESE@xxxxxxxxxxxxxxxx> > で起動します。表れたウィンドウのエントリー上でマウスをクリック、しかし、 > キーボードをタイプしてもエントリーには何も表示されず、 > ターミナル側にも反応がありません。ボタンは有効に機能します。 (snip) > さらに不思議なのは、プログラムが期待どおりに動かないのはわたしの回りで > は1種類のPC(HP compaq dc5000)だけで、悪いことにそのPCと同じ構成のPCが > 100台、大学の一斉授業で学生が使うPCなんです。 かなり困った状況のようですね. 私のところでも試してみましたが,問題の再現ができませんでした. > PCは debian/sarge をインストールしており、カーネルは 2.6.8-2-686 を > apt-get しました。 私は debian のことは分からないのですが, > ii libreadline-ru 1.8.2-1 Readline interface for Ruby > ii libreadline-ru 1.8.2-7sarge2 Readline interface for Ruby 1.8 > ii libruby1.8 1.8.2-7sarge2 Libraries necessary to run Ruby 1.8 > ii libtcltk-ruby 1.8.2-1 Tcl/Tk interface for Ruby > ii libtcltk-ruby1 1.8.2-7sarge2 Tcl/Tk interface for Ruby 1.8 > ii ruby 1.8.2-1 An interpreter of object-oriented scripting > ii ruby-elisp 1.8.2-1 Emacs-lisp ruby-mode for Ruby > ii ruby1.8 1.8.2-7sarge2 Interpreter of object-oriented scripting lan これは二つのバージョンが混在しているということなのでしょうか? Ruby/Tk におけるハングアップなどの挙動不審は 例外が絡んだりライブラリ周りに不整合 (Tcl/Tk のライブラリは pthread サポートなのに Ruby のバイナリはサポートしていないなど) があったり する場合に発生することが多いです. 今回のケースでは例外は絡んでいませんから,Tcl/Tk のライブラリとの 整合性,特に pthread 周りの整合性が気になります. もし二つのバージョンが混在しているのであれば,なおさらです. # 例外が絡む場合は SEGV となる可能性の方が高いです. # 例外に絡む SEGV はかなり減ってきてはいますが, # まだすべてのケースを潰しきれてはいなさそうです. ruby 本体,tcltklib.so ( と tkutil.so ),Tcl/Tk のライブラリで, すべて正しいものが読み込まれているか, 各バイナリでの pthread サポートに不整合がないかを 確認してみていただけますでしょうか. 例えば ---------------------------------------------------------------- $ ldd /usr/local/lib/ruby/1.8/i686-linux/tcltklib.so libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40015000) libm.so.6 => /lib/libm.so.6 (0x400de000) libdl.so.2 => /lib/libdl.so.2 (0x40101000) libpthread.so.0 => /lib/libpthread.so.0 (0x40104000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x4011a000) libc.so.6 => /lib/libc.so.6 (0x40148000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) $ ldd /usr/local/lib/libtcl8.4.so libdl.so.2 => /lib/libdl.so.2 (0x400ad000) libpthread.so.0 => /lib/libpthread.so.0 (0x400b0000) libm.so.6 => /lib/libm.so.6 (0x400c7000) libc.so.6 => /lib/libc.so.6 (0x400e9000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) ---------------------------------------------------------------- などと調べれば pthread を link するようになっているかは 確認できるでしょうし, TclTkLib::RELEASE_DATE ,TkUtil::RELASE_DATE ,Tk::RELASE_DATE を 見ればそれぞれのリリース日がわかります. ご利用のものが 1.8.2 のリリース版に基づくものであれば, それぞれ '2004-12-23', '2004-12-23', '2004-12-24' と なっているのではないかと思います. また,TclTkLib::COMPILE_INFO も出力させてみてください. 例えば ---------------------------------------------------------------- "tcltklib 2006-04-25 :: Ruby1.8.4 (2006-06-11) with pthread :: Tcl8.4.4(with stub)/Tk8.4.4(with stub) unknown tcl_threads" ---------------------------------------------------------------- などというように,コンパイル時の情報の一部として pthread サポート指定やコンパイル時の Tcl/Tk のバージョン, stub をサポートしていたかどうかといったことを得られると思います. P.S. > entry.pack #1 > button.pack #2 > Tk.mainloop > > 不思議なのは、entry と button のパックの順番(上の#1と#2)を入れ換える > と、エントリーには入力したキーが表示され、ターミナル側にはキーイベント > の情報がプリントされることです。 button.pack(:side=>:bottom) entry.pack(:side=>:bottom) とすると,応急処置的には回避できたりしますか? -- 永井 秀利 (九工大 知能情報) nagai-iKxUiVHJP4pSXnIrXG/8Ww@xxxxxxxxxxxxxxxx
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ruby-list:42428] toplevel ウィジェットにイベントがわたらない?, Hiroshi Kimura |
|---|---|
| Next by Date: | [ruby-list:42431] Re: toplevel ウィジェットにイベントがわたらない?, Yukiharu Yabuki |
| Previous by Thread: | [ruby-list:42428] toplevel ウィジェットにイベントがわたらない?, Hiroshi Kimura |
| Next by Thread: | [ruby-list:42439] ans: toplevel ウィジェットにイベントがわたらない?, Hiroshi Kimura |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |