[Ruby-gnome2] possible bug in memory management

Hi all.

I have found a reproducible bug, but I don’t know if it is in Gtk2
library, Ruby or Ruby-gtk2.

You can execute this little program:

···

#!/usr/bin/ruby

require 'glib2’
require ‘gtk2’

def bucle
100000.times do |i|
p i
v = Gtk::Window.new.show_all
v.destroy
end
end

Gtk::init

ventana = Gtk::Window.new
ventana.set_title(“Creating windows”)
ventana.signal_connect(‘delete_event’) {exit}

vbox = Gtk::VBox::new(true, 10)

boton = Gtk::Button.new(’_loop’, true)
boton.signal_connect(‘clicked’) do bucle end
vbox.pack_start(boton, true, true, 0)

ventana.add(vbox)

ventana.show_all

Gtk.main

Depending of system memory, program fails before or after. Error
consist in program freeze.

You can argument than program situation is not realist, but I have
reproduced same error in very stardard conditions, with a database
application that fails 2-3 times in a day when you open a new window.

Is this a Gtk2 error? Ruby-gtk2?..

Thanks for any info.

						David

Hi,

Hi all.

I have found a reproducible bug, but I don’t know if it is in Gtk2
library, Ruby or Ruby-gtk2.

You can execute this little program:

You’re script works fine(100000 times loops) on my linux box.
It seems there are no errors and no memory leaks.

Fedora Core 1
ruby 1.9.0 (2004-02-14) [i686-linux]
ATK 1.4.0
GLib 2.2.3
Pango 1.2.5
GTK±2.2.4
Ruby-GNOME2-0.9.1

···

On Tue, 16 Mar 2004 22:49:43 +0900 David Espada davinciSINSPAM@escomposlinux.org wrote:


.:% Masao Mutohmutoh@highway.ne.jp

Hi David,

···

On Tue, 2004-03-16 at 13:49, David Espada wrote:

Hi all.

I have found a reproducible bug, but I don’t know if it is in Gtk2
library, Ruby or Ruby-gtk2.

You can execute this little program:


#!/usr/bin/ruby

require ‘glib2’
require ‘gtk2’

def bucle
100000.times do |i|
p i
v = Gtk::Window.new.show_all
v.destroy
end
end

Gtk::init

ventana = Gtk::Window.new
ventana.set_title(“Creating windows”)
ventana.signal_connect(‘delete_event’) {exit}

vbox = Gtk::VBox::new(true, 10)

boton = Gtk::Button.new(‘_loop’, true)
boton.signal_connect(‘clicked’) do bucle end
vbox.pack_start(boton, true, true, 0)

ventana.add(vbox)

ventana.show_all

Gtk.main

Depending of system memory, program fails before or after. Error
consist in program freeze.

If I understand correctly the problem is that you’re executing an
operation which takes some time in the main thread, which takes care of
periodically refreshing the UI. So it’s quite normal if the program
freezes. You should start the signal code in a separate thread.


Laurent

Hi all.

I have found a reproducible bug, but I don’t know if it is in Gtk2
library, Ruby or Ruby-gtk2.

You can execute this little program:

I tried it, and well, it didn’t freeze, but Enlightenment has a hard time
displaying and destroying so many windows, so it looked like X was frozen,
while it wasn’t. In fact GKrellm was running as usual, but I could not
move windows arround, or change virtual desktop.

Maybe you have an infinite loop creating and destroying windows somewhere
causing the window manager to eat all CPU ?

···

Le Tue, 16 Mar 2004 13:49:28 +0000, David Espada a écrit :

Thanks for any info.

  					David

I seems that I have a twisted problem. Actually I have made this
script trying to locate a bug I get in my database application in four
different machines. I have executed script ONLY in my development
machine and now I am probing in another (very slowww; patience)…
emmm… ¡Good! or ¡Bad! It has frozen :frowning:

Have you probed running script various times in a loaded machine?
What version of Linux kernel do you have? I have probed with
2.6.4 and 2.4.23, and the result is freeze in both cases.

Only probably causes I can think is a failure in a Debian library, or
faulting memory chips in ALL my machines, or a very obscure memory
error in Gtk, but I accept any other plausible explication.

Thanks and sorry for extreme imprecision.

						David
···

El martes 16 de marzo, Masao Mutoh escribió:

I have found a reproducible bug, but I don’t know if it is in Gtk2
library, Ruby or Ruby-gtk2.

You’re script works fine(100000 times loops) on my linux box.
It seems there are no errors and no memory leaks.

I have found a reproducible bug, but I don’t know if it is in Gtk2
library, Ruby or Ruby-gtk2.

You can execute this little program:

If I understand correctly the problem is that you’re executing an
operation which takes some time in the main thread, which takes care of
periodically refreshing the UI. So it’s quite normal if the program
freezes.

Example script freezes gui and I see that as normal. But problem is
not that, but instead absolute program freeze.

You should start the signal code in a separate thread.

How can I do that? Threads from Ruby and from Gtk are compatible? Can
I make a threading application free of freezes in gui (independently
of the error I get now)?

Thanks.

						David
···

El martes 16 de marzo, Laurent Sansonetti escribió:

Hi,

I have found a reproducible bug, but I don’t know if it is in Gtk2
library, Ruby or Ruby-gtk2.

You’re script works fine(100000 times loops) on my linux box.
It seems there are no errors and no memory leaks.

Have you probed running script various times in a loaded machine?

2 or 3 times, though I finished 100000 times once(others I quited it
with ctrl+c).

What version of Linux kernel do you have? I have probed with
2.6.4 and 2.4.23, and the result is freeze in both cases.

2.4.22-1.2115.nptl

···

On Wed, 17 Mar 2004 18:54:33 +0900 David Espada davinciSINSPAM@escomposlinux.org wrote:


.:% Masao Mutohmutoh@highway.ne.jp