Ruby tk: ruby 1.8.2 bug in TclTkIp with "exit 0" ...?

I have a little wrapper around TclTkIp to do tcl interpreting with a ruby program. It's super useful and has worked great -- until 1.8.2.

Now, it appears that calling the 'exit' command in tcl with an argument raises an exception for some reason. You can call 'exit', just not 'exit 0' or 'exit 1'.

Has something changed that makes this the desired behavior, or is this a bug? The tcltk that was built against handles 'exit 0' just fine.

Here are the details:

#!/usr/bin/env ruby

require 'tcltklib'

···

###
# The TclInterp class wraps up a few useful calls to the tcl interp
###########################################################################
class TclInterp
   class TclError < RuntimeError
   end

   ######## I N S T A N C E M E T H O D S ########

   def initialize(name = 'default')
     @interp = TclTkIp.new(name, nil) #nil disables tk
   end

   def get(varname)
     val = self.raw_get(varname)
     return val
   end

   def set(varname, val)
     val = self.eval("set #{varname} #{val}")
     return val
   end

   def eval(str)
     begin
       val = @interp._eval(str)
     rescue => exc
       raise TclError, exc.message + "\n" + self.get('errorInfo')
     end
     return val
   end

   def source(filename)
     return self.eval("source #{filename}")
   end

   def raw_get(varname)
     val = @interp._eval("set __ruby_dummy_var $#{varname}")
     @interp._eval("unset __ruby_dummy_var")
     return val
   end
end

interp = TclInterp.new
interp.eval("exit 0")

Both of these are compiled against tcltk 8.3, linux/i386 (RHEL).

In Ruby 1.8.1:
darkshore:/tmp> ruby -v
ruby 1.8.1 (2003-12-25) [i386-linux]
darkshore:/tmp> ruby t.rb
darkshore:/tmp> echo $?
0

This works as expected. However, with Ruby 1.8.2, this fails (even though the interpreter works for everything else I can find):

darkshore:/tmp> ruby -v
ruby 1.8.2 (2004-12-25) [i386-linux]
darkshore:/tmp> ruby t.rb
t.rb:32:in `eval': (TclInterp::TclError)

     while executing
"exit 0" from t.rb:49
darkshore:/tmp> echo $?
1

Hello.

I have a little wrapper around TclTkIp to do tcl interpreting with a
ruby program. It's super useful and has worked great -- until 1.8.2.

Now, it appears that calling the 'exit' command in tcl with an argument
raises an exception for some reason. You can call 'exit', just not
'exit 0' or 'exit 1'.

Has something changed that makes this the desired behavior, or is this a
bug? The tcltk that was built against handles 'exit 0' just fine.

Bug. This is patch for CVS HEAD.

Index: tcltklib.c

···

===================================================================
RCS file: /src/ruby/ext/tk/tcltklib.c,v
retrieving revision 1.16
diff -u -w -b -p -r1.16 tcltklib.c
--- tcltklib.c 22 Apr 2005 08:35:40 -0000 1.16
+++ tcltklib.c 23 Apr 2005 10:40:39 -0000
@@ -2860,16 +2860,17 @@ ip_RubyExitCommand(clientData, interp, a

     case 2:
#if TCL_MAJOR_VERSION >= 8
- if (!Tcl_GetIntFromObj(interp, argv[1], &state)) {
+ if (Tcl_GetIntFromObj(interp, argv[1], &state) == TCL_ERROR) {
             return TCL_ERROR;
         }
         param = Tcl_GetString(argv[1]);
#else /* TCL_MAJOR_VERSION < 8 */
         state = (int)strtol(argv[1], &endptr, 0);
- if (endptr) {
+ if (*endptr) {
             Tcl_AppendResult(interp,
                              "expected integer but got \"",
                              argv[1], "\"", (char *)NULL);
+ return TCL_ERROR;
         }
         param = argv[1];
#endif

I'll fix this on CVS soon. Probably included in 1.8.3 preview1.

H.Yamamoto wrote:

Hello.

I have a little wrapper around TclTkIp to do tcl interpreting with a ruby program. It's super useful and has worked great -- until 1.8.2.

Now, it appears that calling the 'exit' command in tcl with an argument raises an exception for some reason. You can call 'exit', just not 'exit 0' or 'exit 1'.

Has something changed that makes this the desired behavior, or is this a bug? The tcltk that was built against handles 'exit 0' just fine.

Bug. This is patch for CVS HEAD.

Many thanks!

I have another one which is proving much more difficult to lock down, as it doesn't recreate in a simple test case.

Do you know any reason why I might get the following when using a TkOptionMenuButton:

bgerror failed to handle background error.
     Original error: NameError: invalid command name `tk_optionMenu'
     Error in bgerror: invalid command name "bgerror"

A simple test case this works, so I am just asking vaguely first in the hopes it will give me where to start looking (this cropped up in stable code with the 1.8.2 upgrade).

Hi,

···

From: Brett Williams <brett_williams@agilent.com>
Subject: tk_optionMenu bug in 1.8.2 (WAS: Re: ruby tk: ruby 1.8.2 bug in TclTkIp with "exit 0" ... ? )
Date: Tue, 26 Apr 2005 02:04:28 +0900
Message-ID: <1114448454.321968@cswreg.cos.agilent.com>

I have another one which is proving much more difficult to lock down, as
   it doesn't recreate in a simple test case.

Do you know any reason why I might get the following when using a
TkOptionMenuButton:

bgerror failed to handle background error.
     Original error: NameError: invalid command name `tk_optionMenu'
     Error in bgerror: invalid command name "bgerror"

This is a kind of autoload trouble on Tcl/Tk.
On some commands, TclTkIp._invoke fails to autoload.

# In your case, fails to autoload 'bgerror' also.

TclTkIp._eval doesn't fail to autoload.
Probably, the following can hide the trouble.
-----------------------------
begin
  TkOptionMenubutton.new(....)
rescue NameError
  begin
    TkCore::INTERP._eval('tk_optionMenu')
  rescue
  end
  retry # or call TkOptionMenubutton.new(....)
end
-----------------------------

Yes. Of course I know that is NOT good.
However, if I cannot find better way to avoid the autoload trouble,
I may apply similar patch to tk/menu.rb.
--
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)

Hello.

Do you know any reason why I might get the following when using a
TkOptionMenuButton:

bgerror failed to handle background error.
     Original error: NameError: invalid command name `tk_optionMenu'
     Error in bgerror: invalid command name "bgerror"

Can you show us the script code causing error? (if you don't mind)
I don't care if it's not simple.

This is a kind of autoload trouble on Tcl/Tk.
On some commands, TclTkIp._invoke fails to autoload.

# In your case, fails to autoload 'bgerror' also.

TclTkIp._eval doesn't fail to autoload.
Probably, the following can hide the trouble.

Maybe do you have the script code causing this error? I want to see it.

# I'm curious about why _eval succeeds but _invoke fails.

This is a kind of autoload trouble on Tcl/Tk.
On some commands, TclTkIp._invoke fails to autoload.

# In your case, fails to autoload 'bgerror' also.

TclTkIp._eval doesn't fail to autoload.
Probably, the following can hide the trouble.

Maybe do you have the script code causing this error? I want to see it.

# I'm curious about why _eval succeeds but _invoke fails.

Sorry, I had to try before asking you.

///////////////////////

require 'tk'
p TkCore::INTERP._eval('tk_optionMenu .om OM "Option 1" "Option 2" "Option 3" "Option 4"')

E:\>ruby d.rb
".om.menu"

///////////////////////

require 'tk'
p TkCore::INTERP._invoke('tk_optionMenu', '.om', 'OM', '"Option 1" "Option 2" "Option 3" "Option 4"')

E:\>ruby d.rb
e:/ruby/lib/ruby/1.8/tk.rb:2020:in `__invoke': invalid command name `tk_optionMe
nu' (NameError)
        from e:/ruby/lib/ruby/1.8/tk.rb:2020:in `_invoke'
        from d.rb:5

///////////////////////

Hi,

···

From: H.Yamamoto <ocean@m2.ccsnet.ne.jp>
Subject: Re: tk_optionMenu bug in 1.8.2
Date: Tue, 26 Apr 2005 12:00:12 +0900
Message-ID: <20050426115953.93542400.ocean@m2.ccsnet.ne.jp>

# I'm curious about why _eval succeeds but _invoke fails.

_invoke doesn't call '::unknown' command when the target command
cannot be found.
Maybe we should call '::unknown' at then.
--
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)

Message-ID: <20050426.125426.41653374.nagai@ai.kyutech.ac.jp>

Maybe we should call '::unknown' at then.

How about the following patch?

Index: ext/tcltklib/tcltklib.c

···

From: Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
Subject: Re: tk_optionMenu bug in 1.8.2
Date: Tue, 26 Apr 2005 12:54:48 +0900

RCS file: /var/cvs/src/ruby/ext/tcltklib/Attic/tcltklib.c,v
retrieving revision 1.49.2.39
diff -u -r1.49.2.39 tcltklib.c
--- ext/tcltklib/tcltklib.c 23 Apr 2005 11:04:00 -0000 1.49.2.39
+++ ext/tcltklib/tcltklib.c 26 Apr 2005 13:40:37 -0000
@@ -4,7 +4,7 @@
  * Oct. 24, 1997 Y. Matsumoto
  */

-#define TCLTKLIB_RELEASE_DATE "2005-04-23"
+#define TCLTKLIB_RELEASE_DATE "2005-04-26"

#include "ruby.h"
#include "rubysig.h"
@@ -6469,6 +6469,7 @@
     int thr_crit_bup;
     struct invoke_info inf;
     int status;
+ int unknown_flag = 0;
     VALUE ret;

#if TCL_MAJOR_VERSION >= 8
@@ -6505,23 +6506,56 @@
     DUMP2("call Tcl_GetCommandInfo, %s", cmd);
     if (!Tcl_GetCommandInfo(ptr->ip, cmd, &info)) {
         DUMP1("error Tcl_GetCommandInfo");
- /* if (event_loop_abort_on_exc || cmd[0] != '.') { */
- if (event_loop_abort_on_exc > 0) {
- /* Tcl_Release(ptr->ip); */
- rbtk_release_ip(ptr);
- /*rb_ip_raise(obj,rb_eNameError,"invalid command name `%s'",cmd);*/
- return create_ip_exc(interp, rb_eNameError,
- "invalid command name `%s'", cmd);
- } else {
- if (event_loop_abort_on_exc < 0) {
- rb_warning("invalid command name `%s' (ignore)", cmd);
+ DUMP1("try auto_load (call 'unknown' command)");
+ if (!Tcl_GetCommandInfo(ptr->ip,
+#if TCL_MAJOR_VERSION >= 8
+ "::unknown",
+#else
+ "unknown",
+#endif
+ &info)) {
+ DUMP1("fail to get 'unknown' command");
+ /* if (event_loop_abort_on_exc || cmd[0] != '.') { */
+ if (event_loop_abort_on_exc > 0) {
+ /* Tcl_Release(ptr->ip); */
+ rbtk_release_ip(ptr);
+ /*rb_ip_raise(obj,rb_eNameError,"invalid command name `%s'",cmd);*/
+ return create_ip_exc(interp, rb_eNameError,
+ "invalid command name `%s'", cmd);
             } else {
- rb_warn("invalid command name `%s' (ignore)", cmd);
+ if (event_loop_abort_on_exc < 0) {
+ rb_warning("invalid command name `%s' (ignore)", cmd);
+ } else {
+ rb_warn("invalid command name `%s' (ignore)", cmd);
+ }
+ Tcl_ResetResult(ptr->ip);
+ /* Tcl_Release(ptr->ip); */
+ rbtk_release_ip(ptr);
+ return rb_tainted_str_new2("");
             }
- Tcl_ResetResult(ptr->ip);
- /* Tcl_Release(ptr->ip); */
- rbtk_release_ip(ptr);
- return rb_tainted_str_new2("");
+ } else {
+#if TCL_MAJOR_VERSION >= 8
+ Tcl_Obj **unknown_objv;
+#else
+ char **unknown_argv;
+#endif
+ DUMP1("find 'unknown' command -> set arguemnts");
+ unknown_flag = 1;
+
+#if TCL_MAJOR_VERSION >= 8
+ unknown_objv = (Tcl_Obj **)ALLOC_N(Tcl_Obj *, objc+2);
+ unknown_objv[0] = Tcl_NewStringObj("::unknown", 9);
+ Tcl_IncrRefCount(unknown_objv[0]);
+ memcpy(unknown_objv + 1, objv, sizeof(Tcl_Obj *)*objc);
+ unknown_objv[++objc] = (Tcl_Obj*)NULL;
+ objv = unknown_objv;
+#else
+ unknown_argv = (char **)ALLOC_N(char *, argc+2);
+ unknown_argv[0] = strdup("unknown");
+ memcpy(unknown_argv + 1, argv, sizeof(char *)*argc);
+ unknown_argv[++argc] = (char *)NULL;
+ argv = unknown_argv;
+#endif
         }
     }
     DUMP1("end Tcl_GetCommandInfo");
@@ -6605,6 +6639,17 @@
#endif
     }
#endif /* ! wrap tcl-proc call */
+
+ /* free allocated memory for calling 'unknown' command */
+ if (unknown_flag) {
+#if TCL_MAJOR_VERSION >= 8
+ Tcl_DecrRefCount(objv[0]);
+ free(objv);
+#else
+ free(argv[0]);
+ free(argv);
+#endif
+ }

     /* exception on mainloop */
     if (pending_exception_check1(thr_crit_bup, ptr)) {

--
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)

Hidetoshi NAGAI wrote:

From: Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
Subject: Re: tk_optionMenu bug in 1.8.2
Date: Tue, 26 Apr 2005 12:54:48 +0900
Message-ID: <20050426.125426.41653374.nagai@ai.kyutech.ac.jp>

Maybe we should call '::unknown' at then.

How about the following patch?

Index: ext/tcltklib/tcltklib.c

Can't try as anon CVS is locked. In the 1.8.2 release, wasn't this file in the Attic? CVS Web interface says so... ?

Hidetoshi NAGAI wrote:

From: Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
Subject: Re: tk_optionMenu bug in 1.8.2
Date: Tue, 26 Apr 2005 12:54:48 +0900
Message-ID: <20050426.125426.41653374.nagai@ai.kyutech.ac.jp>

Maybe we should call '::unknown' at then.

How about the following patch?

Ok tracked down the new file and applied the patch.

It now works for the little test case H.Yamamoto wrote, but still
fails in our code with the same bgerror problem as before.

Message-ID: <1114543272.399518@cswreg.cos.agilent.com>

It now works for the little test case H.Yamamoto wrote, but still
fails in our code with the same bgerror problem as before.

Could you show me your code?

···

From: Brett Williams <brett_williams@agilent.com>
Subject: Re: tk_optionMenu bug in 1.8.2
Date: Wed, 27 Apr 2005 04:24:29 +0900
--
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)

It now works for the little test case H.Yamamoto wrote, but still
fails in our code with the same bgerror problem as before.

Maybe because second argument of TclTkIp.new is nil?

from [ruby-talk:139390]:

  def initialize(name = 'default')
    @interp = TclTkIp.new(name, nil) #nil disables tk
  end

////////////////////////////////

require 'tk'
ip = TclTkIp.new('hoge', '')
p ip._invoke('tk_optionMenu', '.om', 'OM', '"Option 1" "Option 2" "Option 3" "Option 4"')

E:\ruby-cvs\win32>ruby19 \d.rb
".om.menu"

////////////////////////////////

require 'tk'
ip = TclTkIp.new('hoge', nil)
p ip._invoke('tk_optionMenu', '.om', 'OM', '"Option 1" "Option 2" "Option 3" "Option 4"')

E:\ruby-cvs\win32>ruby19 \d.rb
E:/ruby-cvs/win32/.ext/tk.rb:2020:in `_invoke': invalid command name "tk_optionM
enu" (RuntimeError)
        from E:/ruby-cvs/win32/.ext/tk.rb:2020:in `_invoke'
        from /d.rb:4

Message-ID: <20050427134711.1A7CE290.ocean@m2.ccsnet.ne.jp>

>It now works for the little test case H.Yamamoto wrote, but still
>fails in our code with the same bgerror problem as before.

Maybe because second argument of TclTkIp.new is nil?

Hmmm... If so, that is a matter of course.

# Without Tk, "bgerror" command isn't defined also.

···

From: H.Yamamoto <ocean@m2.ccsnet.ne.jp>
Subject: Re: tk_optionMenu bug in 1.8.2
Date: Wed, 27 Apr 2005 13:47:31 +0900
--
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)

Hidetoshi NAGAI wrote:

From: H.Yamamoto <ocean@m2.ccsnet.ne.jp>
Subject: Re: tk_optionMenu bug in 1.8.2
Date: Wed, 27 Apr 2005 13:47:31 +0900
Message-ID: <20050427134711.1A7CE290.ocean@m2.ccsnet.ne.jp>

It now works for the little test case H.Yamamoto wrote, but still
fails in our code with the same bgerror problem as before.

Maybe because second argument of TclTkIp.new is nil?

Hmmm... If so, that is a matter of course.

# Without Tk, "bgerror" command isn't defined also.

The nil to the interpreter is not in this problem (completely different application).

I have attached a standalone file which does this.

Just run it and push any of the three add buttons to reproduce the error. Sorry it isn't smaller -- if this isn't good enough I can attempt to gut pieces of it at a time to see how small I can get it.

Thanks very much for your help so far.

pgui.rb (24.7 KB)

I have attached a standalone file which does this.

Just run it and push any of the three add buttons to reproduce the
error. Sorry it isn't smaller -- if this isn't good enough I can
attempt to gut pieces of it at a time to see how small I can get it.

I couldn't reproduce the same error, but another error occured.

  1. click any of the two add buttons on the left side

  2. click Cancel button in opened window

  3. following error is reported

RuntimeError: window ".w00087" was deleted before its visibility changed
---< backtrace of Ruby side >-----
E:/ruby-cvs/win32/.ext/tk.rb:2020:in `_invoke'
E:/ruby-cvs/win32/.ext/tk.rb:2020:in `_invoke'
E:/ruby-cvs/win32/.ext/tk.rb:3928:in `wait_visibility'
/pgui_orig.rb:194:in `make_add_button'
/pgui_orig.rb:94:in `call'
E:/ruby-cvs/win32/.ext/tk.rb:1104:in `eval_cmd'
E:/ruby-cvs/win32/.ext/tk.rb:1104:in `cb_eval'
E:/ruby-cvs/win32/.ext/tk.rb:1055:in `call'
E:/ruby-cvs/win32/.ext/tk.rb:1198:in `callback'
E:/ruby-cvs/win32/.ext/tk.rb:1197:in `catch'
E:/ruby-cvs/win32/.ext/tk.rb:1197:in `callback'
E:/ruby-cvs/win32/.ext/tk.rb:1418:in `mainloop'
E:/ruby-cvs/win32/.ext/tk.rb:1418:in `mainloop'
/pgui_orig.rb:367:in `initialize'
/pgui_orig.rb:662:in `new'
/pgui_orig.rb:662
---< backtrace of Tk side >-------
    invoked from within
"rb_out c00010"
    invoked from within
".w00002.w00029.w00031.w00037 invoke"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list $w invoke]"
    (procedure "tk::ButtonUp" line 24)
    invoked from within
"tk::ButtonUp .w00002.w00029.w00031.w00037"
    (command bound to event)

This error seems to happen because win.wait_visibility
wait for visibility changing to `false'. (not true as intended)

I think this is because window is already visible when this method is invoked.

This problem is solved by following patch.
Does this patch change your situation too?

--- E:\pgui_orig.rb Thu Apr 28 02:51:48 2005
+++ E:\pgui.rb Thu Apr 28 02:52:15 2005
@@ -191,7 +191,7 @@ module ACTMfg
               ok.pack('side' => 'left')
               cancel.pack('side' => 'left')

- win.wait_visibility
+# win.wait_visibility
               win.focus
             end
           end
@@ -245,7 +245,7 @@ module ACTMfg
               end
               TkGrid.configure(pkg_label, operator_label, ver_label)
               TkGrid.configure(pkg_entry, operator, ver_entry, ok, cancel)
- win.wait_visibility
+# win.wait_visibility
               win.focus
             end
           end

//////////////////////////////////////////

If not, and if this error is reported with an error dialog,

bgerror failed to handle background error.
    Original error: NameError: invalid command name `tk_optionMenu'
    Error in bgerror: invalid command name "bgerror"

please click "Details" button on the right side.
More detailed backtrace must be there.

If not, and if this error is reported with an error dialog,

bgerror failed to handle background error.
    Original error: NameError: invalid command name `tk_optionMenu'
    Error in bgerror: invalid command name "bgerror"

please click "Details" button on the right side.
More detailed backtrace must be there.

Sorry, forget about this. bgerror fails anyway ;-(

H.Yamamoto wrote:

I have attached a standalone file which does this.

Just run it and push any of the three add buttons to reproduce the error. Sorry it isn't smaller -- if this isn't good enough I can attempt to gut pieces of it at a time to see how small I can get it.

I couldn't reproduce the same error, but another error occured.

  1. click any of the two add buttons on the left side

  2. click Cancel button in opened window

  3. following error is reported

[snip]

--- E:\pgui_orig.rb Thu Apr 28 02:51:48 2005
+++ E:\pgui.rb Thu Apr 28 02:52:15 2005
@@ -191,7 +191,7 @@ module ACTMfg
               ok.pack('side' => 'left')
               cancel.pack('side' => 'left')

- win.wait_visibility
+# win.wait_visibility
               win.focus
             end
           end
@@ -245,7 +245,7 @@ module ACTMfg
               end
               TkGrid.configure(pkg_label, operator_label, ver_label)
               TkGrid.configure(pkg_entry, operator, ver_entry, ok, cancel)
- win.wait_visibility
+# win.wait_visibility
               win.focus
             end
           end

Makes no difference, I get the bgerror problem (it happens during the constructor of the TkMenuOptionButton which is before I even set win.wait_visibility). So this error might be lurking for us.

I'm disturbed that you cannot recreate this problem with my test case. Maybe a sanity check is in order... does this problem recreate for you prior to your previous patch being applied (i.e. on vanilla 1.8.2)? If so then perhaps my colleague didn't get the patch in quite right or something.

I am using tcl-tk version 8.3.2 on linux/i686 and hpux11.00/pa2.0.

Hi,

···

From: H.Yamamoto <ocean@m2.ccsnet.ne.jp>
Subject: Re: tk_optionMenu bug in 1.8.2
Date: Thu, 28 Apr 2005 03:11:54 +0900
Message-ID: <20050428031134.FBC63B30.ocean@m2.ccsnet.ne.jp>

I couldn't reproduce the same error, but another error occured.

I couldn't too. And couldn't reproduce the another error.
My environment is "ruby 1.8.2 (2005-04-25) [i686-linux]"
with "ActiveTcl8.4.9.0".
However, I'll try to find the reason of the trouble.
--
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)

Message-ID: <20050428031134.FBC63B30.ocean@m2.ccsnet.ne.jp>

I couldn't reproduce the same error, but another error occured.
  1. click any of the two add buttons on the left side
  2. click Cancel button in opened window
  3. following error is reported
RuntimeError: window ".w00087" was deleted before its visibility changed

"wait_visibility" is a little danger.
When the target widget had be finished to change its visibility,
the command may lock the application.
One of the more safe ways is to use Tk.after method.
For example,

···

From: H.Yamamoto <ocean@m2.ccsnet.ne.jp>
Subject: Re: tk_optionMenu bug in 1.8.2
Date: Thu, 28 Apr 2005 03:11:54 +0900
------------------------------------------
  top = TkToplevel.new{ withdraw }
  Tk.after(100){
     ... create widgets on the widget 'top' ...

     top.deiconify
  }
  top.wait_visibility.
------------------------------------------

Or one of the others is to use thread.
For example,
------------------------------------------
  top = TkToplevel.new{ withdraw }
  th = Thread.new{top.wait_visibility}.run # force context switch

  ... create widgets on the widget 'top' ...

  top.deiconify
  th.join
------------------------------------------

Please ensure that visibility change is occured after calling
'wait_visibility'.
--
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)

Message-ID: <20050428.113404.71101381.nagai@ai.kyutech.ac.jp>

I couldn't too. And couldn't reproduce the another error.
My environment is "ruby 1.8.2 (2005-04-25) [i686-linux]"
with "ActiveTcl8.4.9.0".

Sorry. My tcltklib.so was replaced with 2005-04-26 version.
I installed Tcl/Tk8.3.2 and used "1.8.2 (2005-04-27) [i686-linux]".
But unfortunately, I couldn't reproduce your trouble...

···

From: Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
Subject: Re: tk_optionMenu bug in 1.8.2
Date: Thu, 28 Apr 2005 11:34:24 +0900
--
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)