Well… I have built a tiny canvas program using Ruby/Tk.
Essentially it has many rectangles on the canvas. With mouse ‘enter’ a
rectangle,
I would show a info about it and when mouse ‘leave’ the rectangle. The
info would go away.
The info is embeded inside a repeatedly created and destroyed
rectangle.
I got
/usr/lib/ruby/1.9/tk/event.rb:434: [BUG] Segmentation fault
ruby 1.9.0 (2006-04-21) [i486-linux]
on the 27 tries of ‘enter-leave’ every single time.
I have also used the ‘cheating’ method which is generate one single
rectangle
and hide/show by moving the rectangle outside and inside the visiable
canvas.
again… the same error message (yes, line 4343) but I could always
tries 56 times. 
Any good idea how to go around this problem?
And since it is a segmentation fault, I guess there is no way to catch
and rescue
it by restarting another process running the same application?
Thank you.
Tee
From: “teeshift” [email protected]
Subject: event.rb line 434 : problem occurs while repeated creating and
deleteing objects
Date: Sat, 25 Nov 2006 04:49:19 +0900
Message-ID: [email protected]
/usr/lib/ruby/1.9/tk/event.rb:434: [BUG] Segmentation fault
ruby 1.9.0 (2006-04-21) [i486-linux]
Could you try the followings?
-
Please check consistency of native-thread support between
Ruby and Tcl/Tk.
-
Please try the latest version of Ruby/Tk.
-
Please send me your Tcl/Tk’s version and your code which
causes SEGV.
Well… I have tried several times without success so here it is …
Linux source 2.6.15-27-386 #1 PREEMPT Sat Sep 16 01:51:59 UTC 2006 i686
GNU/Linux
Ubuntu, Edgy
Ruby and Tk is all 1.9
I have modified to find out the shortest code possible that will
generate the same error.
If you move around mouse frequently enough, like continuously for about
30 seconds,
the program will crash.
So here is the code: ( it is really simple… and it crashes…
)
#!/usr/bin/ruby1.9
class Draw
require 'dec2ox'
def initialize(root, width, height)
@canvas = TkCanvas.new(root)
@canvas.width = width
@canvas.height = height
@canvas.background = '#FFFFFF'
@canvas.pack
TkcText.new(@canvas, 100,200, 'text' => ' ', 'tags' =>
'text')
@canvas.bind('Motion', proc{|e| @canvas.itemconfigure('text',
'text' => e.x.to_s + " " + e.y.to_s)})
end
end
require 'tk'
monitor_width = 500
monitor_height = 250
root = TkRoot.new
Draw.new(root, monitor_width, monitor_height)
Tk.mainloop
oh… you don’t really need dec2ox.
it still crashes… it is a library code I forgot to delete
Well… it seems odd that the simple code will fail.
I didn’t realize that Ruby 1.9 is not stable yet. ( It is on the list
of Synaptic software manager!)
I simply installed the stable version of both Ruby and Tcl/Tk… and
wola!
it works. All the previous problems are gone. 
Tee