|
From: Kouhei S. <ko...@co...> - 2013-06-04 14:39:05
|
須藤です。 In <201...@ll...> "[ruby-gnome2-devel-ja] gtk3/sample/gtk-demo のプログラムでウィンドウを操作するとプログラムが落ちる" on Mon, 3 Jun 2013 03:30:48 +0900, "S. Kitagawa" <ch...@ll...> wrote: > こんにちは、北川といいます。先日はgtk3のGtk::ActionGroup#add_radio_actionsの > 件対応していただいてありがとうございました。 いえいえ、こちらこそ報告ありがとうございました。 > 今度はgtk3/sample/gtk-demoのデモプログラムについてなのですが、Windows 7の > Ruby 2.0 or 1.9.3で、main.rbを実行して以下のいずれかの操作を行うと以下のエラー > のどちらかが出てプログラムが落ちます。どのような時にどちらのエラーが出るかはよく > わかりません。またgtk2のデモプログラムではこの不具合は起きません。 おぉ。。。 > (1)メインウィンドウを外枠をドラッグしてリサイズする > (2)メインウィンドウ左のリストから開けるウィンドウをタイトルバーをつかんで移動する > (しつこくやってるとエラーが出て落ちます) > (3)メインウィンドウ左のリストから開けるウィンドウを外枠をドラッグしてリサイズする ちょっと試した感じではDebian GNU/Linuxでも落ちませんでした。 小さいプログラムでも再現させられればもう少し調べやすくなりそ うな気がしますが。。。 require "gtk3" window = Gtk::Window.new window.show_all Gtk.main さすがに↑くらい小さいやつだと再現しないですよねぇ。。。 > (エラー1) > ** > GLib:ERROR:gmain.c:3057:g_main_dispatch: assertion failed: (current-> > dispatching_sources == ¤t_source_link) > > This application has requested the Runtime to terminate it in an unusual way. > Please contact the application's support team for more information. イベントループのコールバックの中で別のイベントのコールバック が実行されたら起きそうな気がしますが、手動でイベントループを 回しているところはなさそうなんですよねぇ。。。 sample/gtk-demo/changedisplay.rbはGtk.main_iterationを呼んで いるので怪しいですけど、これを使っていなくても落ちますし ねぇ。。。 英語ですが、もしイベントループに興味があったら、参考までに。。。 「Customizing the main loop iteration」のところに図入りで説 明があります。 https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html#glib-The-Main-Event-Loop.description > (エラー2) > C:/Users/kita/mygit/ruby-gnome2-gtk3-sample/gtk3/sample/gtk-demo/main.rb: > 384: [BUG] Segmentation fault > ruby 2.0.0p195 (2013-05-14) [i386-mingw32] こっちは、Rubyがうまくバックトレースをとれたケースで、1と同 じ原因じゃないかなぁと思います。 |