>>>>> "Y" == Yukihiro Matsumoto <matz / ruby-lang.org> writes:

Y> We have two problems, one that crash, and the other that block.  The
Y> former is not related at all with pthread.  It's a bug in Ruby.
Y> I think it's fixed by the following patch.  The bug I'm suspecting to
Y> be LinuxThread bug is the latter.

 Well, the backtrace when it block (I send it ^C when it don't display
 keys) 

Program received signal SIGINT, Interrupt.
0x42075047 in malloc_consolidate () from /lib/i686/libc.so.6
(gdb) bt
#0  0x42075047 in malloc_consolidate () from /lib/i686/libc.so.6
#1  0x420746b7 in _int_malloc () from /lib/i686/libc.so.6
#2  0x42073d81 in malloc () from /lib/i686/libc.so.6
#3  0x4027f3df in TclpAlloc () from /usr/lib/libtcl.so.0
#4  0x40283ff6 in Tcl_Alloc () from /usr/lib/libtcl.so.0
#5  0x402b840e in TclExpandTokenArray () from /usr/lib/libtcl.so.0
#6  0x402b8399 in ParseTokens () from /usr/lib/libtcl.so.0
#7  0x402b7e7e in Tcl_ParseCommand () from /usr/lib/libtcl.so.0
#8  0x402b8d56 in Tcl_EvalEx () from /usr/lib/libtcl.so.0
#9  0x402b9185 in Tcl_Eval () from /usr/lib/libtcl.so.0
#10 0x40282813 in Tcl_GlobalEval () from /usr/lib/libtcl.so.0
#11 0x401cdb78 in Tk_BindEvent () from /usr/lib/libtk.so.0
#12 0x401d2525 in TkBindEventProc () from /usr/lib/libtk.so.0
#13 0x401d7d02 in Tk_HandleEvent () from /usr/lib/libtk.so.0
#14 0x401d82c8 in WindowEventProc () from /usr/lib/libtk.so.0
#15 0x402b6355 in Tcl_ServiceEvent () from /usr/lib/libtcl.so.0
#16 0x402b6583 in Tcl_DoOneEvent () from /usr/lib/libtcl.so.0
#17 0x400169f0 in lib_eventloop_core (check_root=1, check_var=0x0)
    at tcltklib.c:426
#18 0x40016cf1 in lib_eventloop_main (check_rootwidget=2) at tcltklib.c:520
#19 0x0805a60d in rb_ensure (b_proc=0x40016cc4 <lib_eventloop_main>, data1=2, 
    e_proc=0x40016d04 <lib_eventloop_ensure>, data2=0) at eval.c:4717
#20 0x40016e79 in lib_eventloop_launcher (check_rootwidget=2) at tcltklib.c:555
#21 0x40016edc in lib_mainloop (argc=1, argv=0xbfffec20, self=1075273536)
    at tcltklib.c:576
#22 0x080653f7 in call_cfunc (func=0x40016e9c <lib_mainloop>, recv=1075273536, 
    len=128, argc=1, argv=0x826ca70) at eval.c:4929
#23 0x0805af55 in rb_call0 (klass=1075273296, recv=1075273536, id=10353, oid=2, 
    argc=1, argv=0xbfffec20, body=0x40175e3c, nosuper=0) at eval.c:5066
#24 0x0805b73d in rb_call (klass=1075273296, recv=1075273536, mid=10353, argc=1, 
    argv=0xbfffec20, scope=0) at eval.c:5287
#25 0x08056e81 in rb_eval (self=1075264456, n=0x2) at eval.c:3078
#26 0x0805b23e in rb_call0 (klass=1075270816, recv=1075264456, id=10353, oid=2, 
    argc=0, argv=0x0, body=0x4007f670, nosuper=0) at eval.c:5194
#27 0x0805b73d in rb_call (klass=1075270816, recv=1075264456, mid=10353, argc=0, 
    argv=0x0, scope=0) at eval.c:5287
#28 0x08056e81 in rb_eval (self=1074436664, n=0x2) at eval.c:3078
#29 0x0805385c in ruby_exec () at eval.c:1436
#30 0x0805389d in ruby_run () at eval.c:1457
#31 0x08051d79 in main () at main.c:50
#32 0x420158f7 in __libc_start_main () from /lib/i686/libc.so.6
(gdb) 



Guy Decoux