mieki256's diary



2013/08/01(木) [n年前の日記]

#1 [ruby] 例外をキャッチできず

RenderTarget に描画して画像保存をすると時々セグメントエラーが出る件。毎フレーム、RenderTarget を生成・使用・廃棄したらエラーが出なくなったので喜んだものの。何度か試してたらやっぱりエラーが発生して。

Ruby + DXRuby でセグメントエラー? Segmentation fault が発生した時は、begin 〜 rescue でキャッチできないのですな…。途中で強制終了してしまった。

こんな感じのメッセージが表示されて、止まってしまう。
c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/recseq.rb:384: [BUG] Segmentation fault
ruby 1.9.3p429 (2013-05-15) [i386-mingw32]

-- Control frame information -----------------------------------------------
c:0010 p:---- s:0061 b:0061 l:000060 d:000060 CFUNC  :save
c:0009 p:0525 s:0056 b:0056 l:000055 d:000055 METHOD c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/recseq.rb:384
c:0008 p:0494 s:0041 b:0041 l:000040 d:000040 METHOD c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/recseq.rb:128
c:0007 p:2496 s:0032 b:0032 l:000020 d:000031 BLOCK  main.rb:340
c:0006 p:---- s:0026 b:0026 l:000025 d:000025 FINISH
c:0005 p:---- s:0024 b:0024 l:000023 d:000023 CFUNC  :loop
c:0004 p:0629 s:0021 b:0021 l:000020 d:000020 METHOD main.rb:99
c:0003 p:0549 s:0006 b:0006 l:00214c d:0005bc EVAL   main.rb:362
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:00214c d:00214c TOP   

-- Ruby level backtrace information ----------------------------------------
main.rb:362:in `<main>'
main.rb:99:in `main'
main.rb:99:in `loop'
main.rb:340:in `block in main'
c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/recseq.rb:128:in `update_and_draw'
c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/recseq.rb:384:in `export_mode'
c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/recseq.rb:384:in `save'

-- C level backtrace information -------------------------------------------
C:\Windows\SysWOW64\ntdll.dll(ZwWaitForSingleObject+0x15) [0x779bf8b1]
C:\Windows\syswow64\kernel32.dll(WaitForSingleObjectEx+0x43) [0x77201194]
C:\Windows\syswow64\kernel32.dll(WaitForSingleObject+0x12) [0x77201148]
C:\ruby193mingw\bin\msvcrt-ruby191.dll(rb_vm_bugreport+0xf9) [0x62e5bb59]
C:\ruby193mingw\bin\msvcrt-ruby191.dll(rb_name_err_mesg_new+0x17a) [0x62d3a856]
C:\ruby193mingw\bin\msvcrt-ruby191.dll(rb_bug+0x2f) [0x62d3b533]
C:\ruby193mingw\bin\msvcrt-ruby191.dll(rb_check_safe_str+0x194) [0x62dee790]
 [0x004011e6]
 [0x02fba0d2]
C:\Windows\SysWOW64\ntdll.dll(RtlKnownExceptionFilter+0xb7) [0x77a174df]

-- Other runtime information -----------------------------------------------

* Loaded script: main.rb

* Loaded features:

    0 enumerator.so
    1 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/enc/encdb.so
    2 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/enc/shift_jis.so
    3 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/enc/trans/transdb.so
    4 C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/defaults.rb
    5 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/rbconfig.rb
    6 C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/deprecate.rb
    7 C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/exceptions.rb
    8 C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/defaults/operating_system.rb
    9 C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb
   10 C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems.rb
   11 C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/i386-msvcrt/dxruby.so
   12 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/win32ole.so
   13 C:/ruby193mingw/lib/ruby/1.9.1/win32ole.rb
   14 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/ayame.so
   15 C:/ruby193mingw/lib/ruby/1.9.1/thread.rb
   16 C:/ruby193mingw/lib/ruby/1.9.1/singleton.rb
   17 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/msgwdw.rb
   18 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/laps.rb
   19 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/seq.rb
   20 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/scroll.rb
   21 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/anime.rb
   22 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/exportexo.rb
   23 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/select.rb
   24 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/imagedata.rb
   25 C:/ruby193mingw/lib/ruby/1.9.1/forwardable.rb
   26 C:/ruby193mingw/lib/ruby/1.9.1/English.rb
   27 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/date_core.so
   28 C:/ruby193mingw/lib/ruby/1.9.1/date/format.rb
   29 C:/ruby193mingw/lib/ruby/1.9.1/date.rb
   30 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/stringio.so
   31 C:/ruby193mingw/lib/ruby/1.9.1/csv.rb
   32 C:/ruby193mingw/lib/ruby/1.9.1/prettyprint.rb
   33 C:/ruby193mingw/lib/ruby/1.9.1/pp.rb
   34 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/animekind.rb
   35 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/config.rb
   36 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/mnote.rb
   37 C:/ruby193mingw/lib/ruby/1.9.1/benchmark.rb
   38 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/bitmapfont.rb
   39 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/keyboardimage.rb
   40 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/keymapdisp.rb
   41 c:/home/prg/NetBeansProjects/RubyAnimePvEasyMaker/lib/recseq.rb
   42 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/enc/utf_16le.so
   43 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/enc/trans/utf_16_32.so
   44 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/enc/trans/japanese_sjis.so
   45 C:/ruby193mingw/lib/ruby/1.9.1/i386-mingw32/enc/trans/single_byte.so

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html


This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

Compilation exited abnormally with code 3 at Thu Aug 01 17:18:27
一応、その384行前後もメモ。
          @render.dispose unless @render.disposed?
          @render = RenderTarget.new(@scrw, @scrh)
          @anime.draw_rendertarget(@render)
          if @frame > 0 then
            begin
              img = @render.toImage
              img.save(fn, @outfmt) # ここが384行目。ここでエラーが出てる?
              img.dispose unless img.disposed?
            rescue
              # 保存に失敗
              @retry_count += 1
            else
              # 保存に成功
              @retry_count = 0
            end
            @anime.update_pos if @retry_count <= 0 # 座標更新
          end
          @render.dispose unless @render.disposed?
環境は、
上のリストを打っていて気になった点が。DXRuby に限らずだけど、Rubyのモジュール?の正確なバージョンを取得するのって、どうしたらいいんだろう…?

それはともかく。30FPSで全フレーム保存しようとしてるのだから、そりゃ落ちるだろ、と言われそうな気もする。でも、なんで落ちるのか、理由すら分からず。HDDへの書き込みが間に合わなくて落ちるとかそういうアレなんだろうか。

以上、1 日分です。

過去ログ表示

Prev - 2013/08 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project