[#46732] ヒアドキュメント内の変数展開が正常に行われない — ShingoKintaka <kamuycikap@...>

Ruby  :1.8.7 (Ubuntu9.10)

12 messages 2010/01/05
[#46733] Re: ヒアドキュメント内の変数展開が正常に行われない — rubikitch@... 2010/01/06

From: ShingoKintaka <kamuycikap@tulip.ocn.ne.jp>

[#46800] DLモジュールの使い方 — kouichi_someya@...

染谷と申します。

12 messages 2010/01/20
[#47678] プログラム実行時に「[BUG] Segmentation fault」 — 染谷 康一 <kouichi_someya@...> 2010/12/09

染谷と申します。

[ruby-list:46807] Re: TkTable.rbで"[BUG] Segmentaion fauilt"発生

From: 門脇 修司 <kadowaki.shuji@...>
Date: 2010-01-25 00:57:56 UTC
List: ruby-list #46807
門脇です。

ありがとうございます。

> 必ず同じに生じるわけではないということは,
> 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 環境でも同じに生じるかを見てみたいと思います.

ありがとうございます。後ほど送らせていただきますので、よろしく
お願い致します。

-----------
門脇


In This Thread