** Description changed:

  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!"
                  progress.pulse
          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.
+ 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

-- 
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

Reply via email to