今日は 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 の日付更新。
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 についてのテストを追加しています。