From: ABE Shigeru Date: 2002-12-25T13:25:53+09:00 Subject: [ruby-dev:19186] Process::times による SEGV?  こんにちは。阿部です。  次のようなコードで Segmentation Fault が発生しました。原因がまったく 予想できません。 def time_block () t = Process::times u1, s1 = t.utime, t.stime ret = yield t = Process::times u2, s2 = t.utime, t.stime u = u2 - u1 s = s2 - s1 $time = Struct::Tms.new( u, s, 0, 0 ) return ret end 10000.times do time_block do 100.times do a = 10 b = 20 c = a * b end end end Black@host ~$ ruby ~/temp/test.rb /home/Black/temp/test.rb:14: [BUG] Segmentation fault ruby 1.7.3 (2002-11-22) [i386-cygwin] Aborted (core dumped)   Process::times をグローバルメソッドでラップしたり、 $time = Struct::Tms.new( u2 - u1, s2 - s1, 0, 0 ) とすると、エラーが Black@host ~$ ruby ~/temp/test.rb /home/Black/temp/test.rb:14:in `-': method `coerce' called on terminated object (0x100d0500) (NotImplementedError) from /home/Black/temp/test.rb:14:in `time_block' from /home/Black/temp/test.rb:29 from /home/Black/temp/test.rb:22:in `times' from /home/Black/temp/test.rb:22 となったりします。   Ruby 1.6 では、正常に終了します。 Black@host ~$ ruby16 ~/temp/test.rb Black@host ~$ ruby16 -v ruby 1.6.7 (2002-09-12) [i686-cygwin] -------- Black / 阿部 茂