ruby-trunk-changes r58649 - r58663

今日は Process.spawn や Kernel#system に :gid オプションでグループ名を指定した時の不具合修正などがありました。

eregon: r58649 2017-05-10 23:17:58 +0900

spec/rubyspec/core/process/fixtures/kill.rb で子プロセスで ruby を起動して Process.kill でシグナル送信させるテストで system の引数に配列で渡すようにしています。shell が間にはさまるのを避けるためかな。

eregon: r58650 2017-05-10 23:18:10 +0900

r58649 と同じく spec/rubyspec/core/process/fixtures/kill.rb で子プロセスからシグナルを送信する pid を Process.getpgrp でプロセスグループを取得するようにしています。

eregon: r58651 2017-05-10 23:18:23 +0900

同じく spec/rubyspec/core/process/fixtures/kill.rb のテストで Signal.trap のハンドラが呼ばれたかのチェックに Mutex#locked? を利用するようにしています。なんとロックを掛けっぱなしにするのか。シグナルが再送されるとメインスレッドがデッドロックすると思うけど…。けどその作りは元からですね。大丈夫なのかなこれ……。まあこのスクリプト自体子プロセスとして起動されるものみたいなので短命なのでしょうけど。

nobu: r58652 2017-05-10 23:25:03 +0900

ruby_sized_xrealloc() で指定されたサイズが負の値だったら例外を発生させるようにしています。逆に objspace_xrealloc() ではサイズチェックつきの objspace_xmalloc() でなくチェックなしの objspace_xmalloc0() を直接呼ぶようにしているけど、こっちはなんでだろ?

eregon: r58653 2017-05-10 23:35:24 +0900

rubyspec の修正で、ruby を起動するためのコマンドを返す ruby_cmd というメソッドがあるみたいで、RUBY_EXE を独自に参照していたコードを ruby_cmd を使うようにリファクタリングしています。

eregon: r58654 2017-05-10 23:35:38 +0900

spec/rubyspec/core/process/fixtures/kill.rb では ruby 起動コマンドは環境変数 RUBY_EXE と RUBY_FLAGS で参照するようにしています。

stomar: r58655 2017-05-11 04:03:07 +0900

標準添付ライブラリ uri の rdoc 用コメントの typo 修正。 https://github.com/ruby/ruby/pull/1604

svn: r58656 2017-05-11 04:03:07 +0900

version.h の日付更新。

naruse: r58657 2017-05-11 04:19:38 +0900

rubygems のテスト用の test/rubygems/test_gem_gem_runner.rb で require "rubygems/gem_runner" で例外発生時に環境変数 GEM_HOME の配下のファイルリストを表示するようにしています。これも CI のデバッグ用ですね。

nobu: r58658 2017-05-11 08:18:07 +0900

Process.spawn や Kernel#system で gid にグループ名を与えた時に rb_alloc_tmp_buffer() でスタックにバッファを割り当てていたのを rb_str_tmp_new() でバッファとして文字列オブジェクトを作成するようにしています。 frozen string を変更しようとしてエラーになっていたようです。 [ruby-core:81084] [Bug #13554]

nobu: r58659 2017-05-11 08:34:33 +0900

getpwnam_r() と getgrnam_r() の errno としてリトライすべきものを判定するためにマクロ GETPWNAM_R_RETRY_P() に切り出して __APPLE__ が定義されていたら 0 の時もリトライ可と判定するようにしています。

naruse: r58660 2017-05-11 08:38:28 +0900

r58657 のデバッグコードの追加で、環境変数 GEM_HOME の配下のファイルリストをメッセージとして例外を発生させるようにしています。

nobu: r58661 2017-05-11 08:52:14 +0900

r57167 の追加修正。テストの --repeat-count オプションの対応で、エラーが発生したら繰り返しを停止するようにしています。

nobu: r58662 2017-05-11 11:38:09 +0900

r58659 の再修正。 errno ではなくて getpwnam_r() や getgrnam_r() の戻り値のチェックを追加しています。

shugo: r58663 2017-05-11 16:56:52 +0900

標準添付ライブラリ net/imap の Net::IMAP#disconnect で既に切断済みだったらチェックして再実行しないようにしています。