Actual debian ruby packages are unuseable with tk

Dear debian ruby package maintainers,

I just tell here, that both the 1.6.8-6 and the 1.8.0-2 ruby packages
are break on this simple script:

···

require ‘tk.rb’

begin
raise "blah"
rescue
puts "rescued"
end

This script will never return with both versions of ruby. I am waiting
on the new versions. (I hope the bugfix was backported to 1.6.8; if not,
then I wait for the 1.8.0 version of DBI, too…)

Regards,
Circum

Dear debian ruby package maintainers,

I just tell here, that both the 1.6.8-6 and the 1.8.0-2 ruby packages
are break on this simple script:


require ‘tk.rb’

begin
raise “blah”
rescue
puts “rescued”
end

Hm, hangs for me with 1.6.8-7, too. Ruby/Tk experts around?

This script will never return with both versions of ruby. I am waiting
on the new versions. (I hope the bugfix was backported to 1.6.8; if
not, then I wait for the 1.8.0 version of DBI, too…)

Debian packages of DBI for Ruby 1.8.0 are already waiting in queue to
Debian/unstable. I will also put it up on people.d.o soon, as I think it
will take a couple more weeks to finish with Ruby 1.6 → 1.8 transition.

···

On Sun, Sep 14, 2003 at 04:01:17AM +0900, Ferenc Engard wrote:


Dmitry Borodaenko

I just tell here, that both the 1.6.8-6 and the 1.8.0-2 ruby packages
are break on this simple script:

What is your version of tcl/tk : if it's 8.4 try to downgrade to 8.3

pigeon% cat b.rb
require 'tk.rb'

begin
raise "blah"
rescue
puts "rescued"
end
pigeon%

pigeon% ruby b.rb
rescued
pigeon%

Guy Decoux

Hm, hangs for me with 1.6.8-7, too. Ruby/Tk experts around?

Not expert but apparently there is a dead-lock : not really sure if the
problem is in tcl

Guy Decoux

http://people.debian.org/~angdraug/

If you’re too lazy to fire up a browser, here is a relevant excerpt:

···

On Sun, Sep 14, 2003 at 06:33:40PM +0900, Dmitry Borodaenko wrote:

Debian packages of DBI for Ruby 1.8.0 are already waiting in queue to
Debian/unstable. I will also put it up on people.d.o soon, as I think it
will take a couple more weeks to finish with Ruby 1.6 → 1.8 transition.


Ruby 1.8.0 backport to Debian 3.0r1/woody by Vladimir Shahov:

deb Dmitry Borodaenko's Personal Hacks Collection stable main
deb-src Dmitry Borodaenko's Personal Hacks Collection stable main

apt-get install ruby1.8


Debian Ruby Policy-compliant packages of YAML4R, Ruby/DBI, PostgreSQL
(from Taku YASUI) and MySQL modules for Ruby 1.6 and 1.8:

deb Dmitry Borodaenko's Personal Hacks Collection unstable main
deb-src Dmitry Borodaenko's Personal Hacks Collection unstable main

apt-get install libyaml1.6-ruby libdbi-ruby libdbd-pg-ruby1.6
libdbd-pg-ruby1.8 libdbd-mysql-ruby1.6 libdbd-mysql-ruby1.8
libdbd-sqlite-ruby1.6 libdbd-sqlite-ruby1.8

I’ve checked these packages against Samizdat (which requires yaml and
dbi/pg), and it works fine both with 1.6 and with 1.8 versions.

Enjoy!


Dmitry Borodaenko

Dmitry Borodaenko wrote:

Dear debian ruby package maintainers,

I just tell here, that both the 1.6.8-6 and the 1.8.0-2 ruby packages
are break on this simple script:


require ‘tk.rb’

begin
raise “blah”
rescue
puts “rescued”
end

Hm, hangs for me with 1.6.8-7, too. Ruby/Tk experts around?

I have the strong feeling that it is the same problem which Hidetoshi
explained in 20030908.134849.41649609.nagai@ai.kyutech.ac.jp. (8.
Sep, “2 questions about TkVariable and ruby/tk” thread).

Circum

···

On Sun, Sep 14, 2003 at 04:01:17AM +0900, Ferenc Engard wrote:

ts wrote:

I just tell here, that both the 1.6.8-6 and the 1.8.0-2 ruby packages
are break on this simple script:

What is your version of tcl/tk : if it’s 8.4 try to downgrade to 8.3

I think it is quite impossible if I want to work with debian binaries.
ruby/tk depends on libtcltk-ruby debian package, and in this package
tcltklib.so links with libtk8.4.so.0. I do not want to recompile
libtcltk-ruby.

Ferenc

apt-get install libyaml1.6-ruby libdbi-ruby libdbd-pg-ruby1.6
^^^^^^^^^^^^^^^

Typo: should be libyaml-ruby1.6, of course.

···

On Sun, Sep 14, 2003 at 08:13:22PM +0900, Dmitry Borodaenko wrote:

libdbd-pg-ruby1.8 libdbd-mysql-ruby1.6 libdbd-mysql-ruby1.8 \
libdbd-sqlite-ruby1.6 libdbd-sqlite-ruby1.8


Dmitry Borodaenko

I have the strong feeling that it is the same problem which Hidetoshi
explained in <20030908.134849.41649609.nagai@ai.kyutech.ac.jp>. (8.
Sep, "2 questions about TkVariable and ruby/tk" thread).

Well, run your script under gdb, i.e.

   gdb ruby
   (gdb) r name_of_your_script.rb

when it hang, send it ^C (control-C) and run the command `bt' to see what
it do

   (gdb) bt

and send all output (specifically if it create POSIX thread)

Guy Decoux

Well, run your script under gdb, i.e.

(gdb) r …/test/test2.rb
Starting program: /usr/local/bin/ruby …/test/test2.rb
(no debugging symbols found)…(no debugging symbols found)…(no
debugging symbols found)…(no debugging symbols found)…
(no debugging symbols found)…(no debugging symbols found)…(no
debugging symbols found)…(no debugging symbols found)…
(no debugging symbols found)…(no debugging symbols found)…(no
debugging symbols found)…(no debugging symbols found)…[New Thread
16384 (LWP 15626)]
[New Thread 32769 (LWP 15627)]
[New Thread 16386 (LWP 15628)]

(no debugging symbols found)…(no debugging symbols found)…(no
debugging symbols found)…rescued
valami

Program received signal SIGINT, Interrupt.
[Switching to Thread 16384 (LWP 15626)]
0x404e7b88 in __pthread_sigsuspend () from /lib/libpthread.so.0
(gdb) bt
#0 0x404e7b88 in __pthread_sigsuspend () from /lib/libpthread.so.0
#1 0x404e7999 in __pthread_wait_for_restart_signal () from
/lib/libpthread.so.0
#2 0x404e7650 in pthread_onexit_process () from /lib/libpthread.so.0
#3 0x40138bb0 in exit () from /lib/libc.so.6
#4 0x40038ffb in ruby_stop () from /usr/lib/libruby1.6.so.1.6
#5 0x4003910f in ruby_run () from /usr/lib/libruby1.6.so.1.6
#6 0x080486ad in main ()
(gdb)

Ferenc

PS: I never debugged multi-threaded programs, but here is some more gdb
output:

0x404e7b88 in __pthread_sigsuspend () from /lib/libpthread.so.0
(gdb) info threads
3 Thread 16386 (LWP 15659) Couldn’t get registers: No such process.
(gdb) info threads
Couldn’t get registers: No such process.
Couldn’t get registers: No such process.
(gdb) info threads

  • 3 Thread 16386 (LWP 15659) Couldn’t get registers: No such process.
    2 Thread 32769 (LWP 15658) Couldn’t get registers: No such process.
    (gdb) info threads
    Couldn’t get registers: No such process.
    Couldn’t get registers: No such process.

After this it repeats this same pattern, and ‘bt’ returns the same error
message.

#0 0x404e7b88 in __pthread_sigsuspend () from /lib/libpthread.so.0
#1 0x404e7999 in __pthread_wait_for_restart_signal () from

Can you try : needless to say that it's just a "bricolage" before waiting
the correction :-(((

   require 'tk.rb'
   trap 0, proc { sleep 0.1 }

   begin
   raise "blah"
   rescue
   puts "rescued"
   end

Guy Decoux

ts wrote:
[…]

trap 0, proc { sleep 0.1 }

It solves this bug. Great. :)))) Also, it seems to solve my primary
problem that errors in tcl made the tk eventloop halt.

Now one ruby program creates 3 ruby processes, and eats up 100% CPU, but
at least now it works. :slight_smile:

Circum