これを報告するのは、以前は機能していたが、リリースされたばかりのRuby 2.0.0-p0
.
テンプレートがDOMのタグに.erb
埋め込む文字列を生成するSinatraアプリケーションがあります。data-
前述のとおり、Ruby 2.0 にアップグレードするまでは問題なく動作していました。を使用2.0.0-p0
すると、通常、プログラムを 5 ~ 20 回実行した後に、セグメンテーション違反エラーが発生します。Ruby 1.9 に戻すと、再び完全に動作し、プログラムを何百回も問題なく実行できます。
これらのエラーから得られる結果の例を次に示します。これは、エラー リストの「制御フレーム情報」セクションの最初の数行です。
-- Control frame information -----------------------------------------------
c:0061 p:0028 s:0315 e:000303 METHOD terrain_001.rb:509
c:0060 p:0012 s:0298 e:000296 BLOCK terrain_001.rb:494 [FINISH]
c:0059 p:---- s:0294 e:000293 CFUNC :each
c:0058 p:0008 s:0291 e:000290 BLOCK terrain_001.rb:493 [FINISH]
c:0057 p:---- s:0288 e:000287 CFUNC :each
c:0056 p:0023 s:0285 e:000284 METHOD terrain_001.rb:492
c:0055 p:0068 s:0281 e:000279 BLOCK /home/john/Desktop/stra-dams/views/index.erb:3 [FINISH]
エラーが発生した場所として示されている行番号は、常に次のコード内にあり、メソッド内の行によってメソッドが呼び出された後のハッシュの定義内のどこかにありvalues{}
ます。encode
str << encode(hex)
terrain_string
def terrain_string
str = ""
@terrain = build_terrain
@terrain.each do |t|
t.each do |hex|
str << encode(hex)
end
end
str
end
# encode elevation values to a one-character code
def encode(elev)
values = {
:elev_10 => "a",
:elev_20 => "b",
:elev_30 => "c",
:elev_40 => "d",
:elev_50 => "e",
:elev_60 => "f",
:elev_70 => "g",
:elev_80 => "h",
おそらく、他の人がまったく新しい Ruby 2.0 リリースを試した後、他の人が同様のエラーを報告するでしょう。2.0.0-p0
それまでの間、リリースの問題を特定するのに役立つ可能性がある、他に確認すべきことはありますか?