SRU verification for Karmic: I have reproduced the problem with ruby-gnome2 0.19.0-2ubuntu4 in karmic and have verified that the version of ruby-gnome2 0.19.0-2ubuntu4.1 in -proposed fixes the issue.
I have run the 2 test cases in the description and the test in the upstream report. I have modified the 2nd test case provided by Mike in order to reproduce the blocking wait. I have also tested rbbr and fantasdic, which one is much more responsive with the new version of the library, and I haven't noticed any regression. Marking as verification-done ** Tags added: verification-done ** Tags removed: verification-needed -- Multithreaded Gtk applications using Ruby bindings freeze https://bugs.launchpad.net/bugs/514899 You received this bug notification because you are subscribed to Ubuntu. Status in “ruby-gnome2” package in Ubuntu: Fix Released Status in “ruby-gnome2” source package in Karmic: Fix Committed Bug description: Binary package hint: libgtk2-ruby In Ubuntu 9.10 with the version of libgtk2-ruby from the repositories (0.19.0), new threads cause the Gtk main loop to freeze. As an example, the following code will never produce any output: ===== Impact ===== I don't know which program available directly within Ubuntu is written in Ruby-GTK+, but those which do and which are using the Ruby Thread class are broken, and of course developing such a program is broken too. The fix is available in ruby-gnome2 since version 0.19.2 and was introduced through SVN revisions 3692[1] and 3694[2]. Both are within the attachment "ruby-gnome2-gtk-thread-patch.debdiff" in comment #1. [1] http://ruby-gnome2.svn.sourceforge.net/viewvc/ruby-gnome2?view=rev&revision=3692 [2] http://ruby-gnome2.svn.sourceforge.net/viewvc/ruby-gnome2?view=rev&revision=3694 TEST CASE: require 'gtk2' Thread.new do sleep 1 # Look busy exit # Finished, exit end # Main loop loop do # Process all currently pending events Gtk.main_iteration while Gtk.events_pending? print '.' end However, when the latest version of the bindings is installed (0.19.3) the program works as expected, filling the screen with dots. TEST CASE 2: Here is another example for reproducing this bug: require "gtk2" include Gtk, GLib # Create widgets window = Window.new vbox = VBox.new(false, 2) button = Button.new("Run Thread") progress = ProgressBar.new # Pack widgets window.add(vbox) vbox.add(button) vbox.add(progress) # Set default window size window.default_width = 120 window.default_height = 50 window.show_all # Connect signals button.signal_connect("clicked") do Thread.new do puts "Thread started!" loop do progress.pulse sleep 1 end end end window.signal_connect("destroy") { main_quit } # Show all and run main # start the GTK+ main loop The test program shows a window with a button and a progress bar. Clicking the button will execute a Ruby Thread object, and the GUI visual elements/the GTK+ main loop will remain freezed. REGRESSION: The following applications use libgtk2-ruby and threads: fantasdic-1.0beta7 geekast-0.1.3 kazehakase-0.5.8 mhc-0.25.1+20090120 rbbr-0.6.0 xnetcardconfig-0.2.1 The example in the bug description is supposed to print dots, and instead it doesn't. This problem is also reported at: http://sourceforge.net/mailarchive/forum.php?thread_name=dc3bf8581001120746kb5da118udd0a74439cc4dcd9%40mail.gmail.com&forum_name=ruby-gnome2-devel-en _______________________________________________ Pkg-ruby-extras-maintainers mailing list Pkg-ruby-extras-maintainers@lists.alioth.debian.org http://lists.alioth.debian.org/mailman/listinfo/pkg-ruby-extras-maintainers