門脇です。 ありがとうございます。 > 必ず同じに生じるわけではないということは, > GC との絡みなのかなという気がします. > > ActiveScriptRuby と同様の開発環境の手持ちがないので > 頭の痛いところなのですが, > 問題の箇所を GC.disable と GC.enable で挟むと > 状況が変化したりしますか? 永井さんの意図通りに挟んだかどうか自信がないのですが、 状況は変化し、syntax errorとなりました。 挟みかたの1 tktable.rbを挟みました。 tkextlib\tktable\tktable.rbの372行目と421行目の 「_setup_subst_table(KEY_TBL, PROC_TBL);」を囲んで次のように しました。 GC.disable _setup_subst_table(KEY_TBL, PROC_TBL); GC.enable この状態で実行すると次のようにsyntax errorとなります。 D:\X\demoA>demoa5-2.rb "ruby 1.8.7 (2009-06-12 patchlevel 174) [i386-mswin32]" C:/Program Files/ruby-1.8/lib/ruby/1.8/tkextlib/tktable.rb:14:in `require': C:/P rogram Files/ruby-1.8/lib/ruby/1.8/tkextlib/tktable/tktable.rb:372: syntax error , unexpected '\n', expecting '=' (SyntaxError) from C:/Program Files/ruby-1.8/lib/ruby/1.8/tkextlib/tktable.rb:14 from D:/X/SysproEternus/demoA/demoA5-2.rb:17:in `require' from D:/X/SysproEternus/demoA/demoA5-2.rb:17 D:\X\demoA> はさみ方を誤解しているように思うのですが、すみません、 どうするのが正しいはさみ方はわかりません。 挟みかたの2 スクリプトを挟みました。 tktable.rbを元に戻し(GC.disableとGC.enableを削除)、 スクリプトの問題部分の前後を挟みました。 4 cvs.bind('1', proc{|x,y| itemStartDrag cvs,x,y}, '%x %y') 5 def itemStartDrag(c,x,y) 6 # ドラッグされたオブジェクトを最前面にする 7 STDERR.print '...enter itemStartDrag' 8 $lastX = c.canvasx(x) 9 $lastY = c.canvasy(y) 10 c.gettags('current').each {|t| XX GC.disable # <--------------------- 追加 11 next if t=='all' !! t=='current' 12 t.raise XX GC.enable # <--------------------- 追加 13 } 14 STDERR.print '...exit itemStartDrag' 15 end 結果は変わりません。挟む前と同じライン番号が表示されます。 C:/Program Files/ruby-1.8/lib/ruby/1.8/tkextlib/tktable/tktable.rb:372: [BUG] Se gmentation fault > もし可能であれば,件のプログラムをダイレクトメールで送っていただけすか? > 手持ちの Linux 環境でも同じに生じるかを見てみたいと思います. ありがとうございます。後ほど送らせていただきますので、よろしく お願い致します。 ----------- 門脇