ruby-trunk-changes r59644 - r59649

今日は deined? や finalizer での不具合修正などがありました。

nobu: r59644 2017-08-22 22:21:18 +0900

parse.y の空のかっこ '()' のアクションで値 $$ に 0 を入れていたところがあったので NEW_BEGIN(0) に修正しています。 defined? に渡した時に SEGV することがあったそうです。 fuzz testing でみつけたそうですが、よくみつけるなぁ。 [ruby-core:82447] [Bug #13836]

ko1: r59645 2017-08-23 11:23:47 +0900

r59557 で追加した fiber_status_set() にデバッグ用のバックトレース出力が残っていたので削除しています。

svn: r59646 2017-08-23 11:23:48 +0900

version.h の日付更新。

nobu: r59647 2017-08-23 11:26:02 +0900

r59155 で run_finalizer() の TH_EXEC_TAG() の扱いを変更した時に、大域脱出を検出したら残りの finalizer が実行されなくなっていたのを修正しています。

nobu: r59648 2017-08-23 12:14:05 +0900

ObjectSpace.define_finalizer のテストで、finalizer が実行されなかった時に skip するようにしています。 finalizer は GC を強制しても保守的GCのため必ずしも実行されないから、かな。

nobu: r59649 2017-08-23 13:01:39 +0900

finalizer 内で例外が発生した時に cfp consistency エラーが発生していたので、run_finalizer() で cfp を退避しておいて finalizer 実行後に復旧するようにしています。 [ruby-core:82432] [Bug #13832]