ruby-trunk-changes r49452 - r49462

今日は Linux でのスタックの伸長で SIGBUS が発生することがある問題の修正などがありました。

nobu: r49452 2015-01-31 12:06:26 +0900

thread_pthread.c に reserve_stack() という関数を追加して、alloca() を呼んでスタックサイズ分のメモリを確保しておくことで、一部の Linux 環境でスタックオーバフローで SIGBUS が発生する問題を回避しようとしています。pull request によるとスタックがヒープ領域の近くにある時にスタックの伸長で衝突することがあるのを回避するため、あらかじめ alloca() でメモリ領域を予約しておくことでこれを防ごうとしているようです。なるほどなぁ。Linux がスタック用領域の伸長サイズを見込んで避けてはくれないんですねぇ。 https://github.com/ruby/ruby/pull/822
これは多分 RubyCI での stack overflow のエラーにも関係しそうなので 2.2 だけじゃなく 2.1/2.0.0 にも backport したほうがいいかもしれませんね。

svn: r49453 2015-01-31 12:06:39 +0900

version.h の日付更新。

kazu: r49454 2015-01-31 13:35:21 +0900

r49437 の ChangeLog エントリの typo 修正。

nobu: r49455 2015-01-31 17:42:13 +0900

tool/rbinstall.rb で PROLOG_SCRIPT に埋め込む bindir を cd + pwd で取得するのをやめて、スクリプトを呼び出した時のパスをそのまま利用するようにしています。 symbolic link で呼ばれた時にその symbolic link の名前をそのまま使おうとしているようです。

nobu: r49456 2015-01-31 17:42:25 +0900

tool/rbinstall.rb で Windows 環境でコマンドの wrapper 用の .bat ファイルを作成する時に改行コードを調整する時にファイル末尾に CR が追加されていたのを抑制するようにしています。

nobu: r49457 2015-01-31 18:01:59 +0900

tool/rbinstall.rb で生成する .bat ファイルを bat ファイルとしても ruby スクリプトとしてもシェルスクリプトとしても実行できるようにしていしているそうです。

nobu: r49458 2015-01-31 18:07:17 +0900

tool/rbinstall.rb で $LOAD_PATH に標準ライブラリ用のパスを明示的に追加して require "rubygems" していたのを削除しています。既に重複していたようです。

usa: r49459 2015-01-31 20:40:43 +0900

tool/downloader.rb で rubygems.org からのダウンロード時に署名の検証の Gem::Security::LowSecurity#ui= でメッセージを抑制するようにしていたのですが、 ui= メソッドが未定義の時はスキップするようにしています。 このメソッドが実装されたのが最近の rubygems からなので、古い ruby のバージョンで実行すると存在しない可能性もあったみたいです。

nobu: r49460 2015-01-31 22:10:05 +0900

Kernel#caller_locations のテストに path と absolute_path をチェックするテストケースを追加しています。

nobu: r49461 2015-01-31 22:57:34 +0900

r49460 で追加した Kernel#caller_locations のテストをさらに path と absolute_path でテストメソッドを分割するようにしています。

nobu: r49462 2015-01-31 22:57:46 +0900

さらに Kernel#caller_locations のテストに lineno についてのテストを追加しています。