きりかノート 3冊め

おあそびプログラミング

MacPortsのport:ruby19を1.9.3-p327に(セキュリティ修正あり)

リリースされてたので更新しました。CVE-2012-5371 "ハッシュ飽和攻撃によってサービスを停止させることができる脆弱性"の修正が含まれています。詳細はリリースアナウンスを見てください。

test_interrupt(TestBignum) で1F

いちおう毎回make test-allの結果を確認してるんだけど、今回は見たことないエラーがでた。

   % make TESTS="-j1 ruby/test_bignum.rb" test-all
   ./miniruby -I./lib -I. -I.ext/common  ./tool/runruby.rb --extout=.ext  -- --disa
   ble-gems "./test/runner.rb" --ruby="./miniruby -I./lib -I. -I.ext/common  ./tool
   /runruby.rb --extout=.ext  -- --disable-gems" -j1 ruby/test_bignum.rb
   Run options: "--ruby=./miniruby -I./lib -I. -I.ext/common  ./tool/runruby.rb --e
   xtout=.ext  -- --disable-gems" -j1
     :
   Finished tests in 2.133764s, 21.0895 tests/s, 154.6563 assertions/s.

     1) Failure:
   test_interrupt(TestBignum) [/.../ruby-1.9.3-p327/test/ruby/test_bignum.rb:510]:
   Failed assertion, no message given.

該当のテストのコードは、

 def interrupt
   time = Time.now
   start_flag = false
   end_flag = false
   thread = Thread.new do
     start_flag = true
     yield
     end_flag = true
   end
   sleep 1
   thread.raise
   thread.join rescue nil
   start_flag && !end_flag && Time.now - time < 10
 end

 def test_interrupt
   assert(interrupt { (65536 ** 65536).to_s })
 end

なんだけど、65536 ** 65536って数字に特別な意味があるんじゃなければ、この処理が見込みよりも時間かからなくなって抜けちゃってるんだと思う。数字増やしたらテスト通るようになったし。

これはどうしたらよいかねえ、、