이전에 작동 한 다른 코드 보고서를 찾지 못했지만 지금은 방금 출시 된 Ruby 2.0.0-p0
으로 업그레이드 한 후 임의의 Ruby 세그먼트 오류 오류가 발생하기 때문에이를보고합니다.Ruby 2.0으로 업그레이드 한 후 Sinatra에서 Segfault 오류가 발생했습니다
.erb
템플릿이 DOM에 data-
태그에 포함 된 문자열을 생성하는 Sinatra 응용 프로그램이 있습니다. 앞에서 말했듯이 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]
줄 번호 :이 오류 목록의 '제어 프레임 정보'섹션의 처음 몇 줄입니다 encode
방법은 terrain_string
방법에 선 str << encode(hex)
에 의해 호출 된 후 values{}
해시 :
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",
, 다른 사람이 비슷한 오류를보고합니다. 그 동안에도 2.0.0-p0
릴리스의 문제점을 찾아내는 데 도움이 될만한 것이 있습니까?
Sinatra없이 실행하면 동일한 오류가 발생하는지 IRB의 루프에서 확인할 수 있습니다. 나는 당신이 [버그 리포트 제출] (http://bugs.ruby-lang.org/)보다 나을 것이라고 생각합니다. 핵심 팀이 나에게 좋을 것 같습니다. 오류가있는 것으로 밝혀지면 걱정할 필요가 없습니다. 세분화 오류가 발생하지 않을 가능성이 거의 없으며 .0 릴리스에서 기대할 수 있습니다. 물론 Sinatra를 사용하지 않을 때 문제가 사라지면 먼저 [이슈 추적기] (https://github.com/sinatra/sinatra/issues?direction=desc&milestone=10&sort=created&state=open)를 누르십시오! – iain
고마워요, 이안. 이것을 게시 한 후 Sinatra없이 루비 파일을 독립 실행 형으로 실행했는데 정상적으로 작동했습니다. –
좋아, 다행이되어 가고있어! Ruby 2에서 제대로 작동하지 않는 코드가있는 경우 Sinatra를 사용하여 문제를 열어 보는 것이 가장 좋습니다. – iain