ruby-trunk-changes r50643 - r50652

今日は BigDecimal での潜在的メモリリークの修正などがありました。

nobu: r50643 2015-05-27 09:38:11 +0900

拡張ライブラリ openssl の OpenSSL::ASN1::ObjectId の rdoc 用コメントの typo 修正。 https://github.com/ruby/ruby/pull/913

svn: r50644 2015-05-27 09:38:42 +0900

version.h の日付更新。

normal: r50645 2015-05-27 09:43:02 +0900

標準添付ライブラリ drb で IO#fcntl で O_CLOEXEC を付加するようになっていたのですが、2.0 以降デフォルトで O_CLOEXEC は付くようになっているので削除しています。 [ruby-core:69128] [Feature #11137]

normal: r50646 2015-05-27 10:09:11 +0900

拡張ライブラリ openssl で変数に volatile をつけるかわりに RB_GC_GUARD() で最適化からの変数の保護をするように修正しています。 [ruby-core:69371] [Bug #11185]

nobu: r50647 2015-05-27 11:08:29 +0900

デバッグ用にコンパイルした時に GC.add_stress_to_class と GC.remove_stress_to_class で Class を指定して、その Class のインスタンスの作成時にのみ NoMemoryError を発生させるようにできるようにしています。

nobu: r50648 2015-05-27 14:55:00 +0900

r50647 の続きでクラスの配列を保持する stress_to_class を GC の mark の対象とするようにしています。

nobu: r50649 2015-05-27 17:02:20 +0900

r50647 でデバッグ用にビルドした時だけ追加した add_stress_to_class が存在するかどうか判定するメソッドをテスト用ユーティリティ EnvUtil に追加しています。

nobu: r50650 2015-05-27 17:02:28 +0900

拡張ライブラリ bigdecimal でも r50507 や r50510 と同様にオブジェクトの struct RVALUE が wrap する構造体のメモリを先に確保していたため、潜在的メモリリークがあったのを、先にオブジェクトを確保するように修正しています。なるほどー、このテストのために r50647、r50648 で特定のクラスのオブジェクト確保だけ失敗するようにできるようにしていたのですね。

nobu: r50651 2015-05-27 19:56:33 +0900

r50650 のテストでメモリリークのチェックのループ回数としきいちを厳しめに調節しています。 しきいち 1.1 って結構きびしいと思うんですけど単体実行でも通るんですかね。

nobu: r50652 2015-05-27 22:36:27 +0900

拡張ライブラリ tk で TclTkIp#initialize の実装で、send などで2重に呼ばれた時に既に wrap しているポインタが確保済みだったらメモリリークを防ぐため ArgumentError を発生させるようにしています。