山本です。

>確認ですが,tcltklib はいつのものでしょうか.
>今日 (1/25) に commit していますが,そこで行った修正は
>以前にメールに添付したパッチよりも更に SEGV の原因を潰してあります.

すみません、ruby 1.8.2 (2004-12-24) [i386-bccwin32] という表記になって
いて紛らわしかったです。v_1_8_2 + tcltklib, tk のみ最新版という構成です。

HEADでも同じでした。

E:/ruby-cvs/ruby/.ext/tk.rb:1180: [BUG] Segmentation fault
ruby 1.9.0 (2005-01-25) [i386-bccwin32]


ext/tcltklib/tcltklib.c(ip_free) の 3404 行目

    if (Tcl_GetCommandInfo(ptr->ip, finalize_hook_name, &info)) {

で落ちているようです。

また試しに順番を入れ替えてみたら落ちなくなりましたが・・・意味ない
だろうなあ。

Index: tcltklib.c
===================================================================
RCS file: /src/ruby/ext/tcltklib/Attic/tcltklib.c,v
retrieving revision 1.75
diff -u -w -b -p -r1.75 tcltklib.c
--- tcltklib.c	25 Jan 2005 05:09:17 -0000	1.75
+++ tcltklib.c	25 Jan 2005 14:42:24 -0000
@@ -3393,17 +3393,17 @@ ip_free(ptr)
 
             Tcl_ResetResult(ptr->ip);
 
+            if (Tcl_GetCommandInfo(ptr->ip, finalize_hook_name, &info)) {
+                DUMP2("call finalize hook proc '%s'", finalize_hook_name);
+                Tcl_Eval(ptr->ip, finalize_hook_name);
+            }
+
             if (Tcl_Eval(ptr->ip, DEF_CANCEL_AFTER_SCRIPTS_PROC) == TCL_OK) {
                 if (Tcl_GetCommandInfo(ptr->ip, CANCEL_AFTER_SCRIPTS, &info)) {
                     DUMP2("call cancel after scripts proc '%s'", 
                           CANCEL_AFTER_SCRIPTS);
                     Tcl_Eval(ptr->ip, CANCEL_AFTER_SCRIPTS);
                 }
-            }
-
-            if (Tcl_GetCommandInfo(ptr->ip, finalize_hook_name, &info)) {
-                DUMP2("call finalize hook proc '%s'", finalize_hook_name);
-                Tcl_Eval(ptr->ip, finalize_hook_name);
             }
 
             /* del_root(ptr->ip); */