Bug #7638
closedtrunk で rails の activesupport のテストが失敗してしまう
Description
Ruby のバグとは言い切れませんが、ある時期から activesupport のテストが落ちるようになってしまいました。
Ruby と Rails のどちらを直すべきか判断できないので、何か教えて頂けると助かります。
落ちてしまうテストは
https://github.com/rails/rails/blob/master/activesupport/test/core_ext/marshal_test.rb
です。テストの実行方法は以下の通りです。
% git clone git://github.com/rails/rails.git
% cd rails
% gem install bundler --pre
% bundle
% cd activesupport
% bundle exec ruby -Itest:lib test/core_ext/marshal_test.rb
テストを実行すると Thread の deadlock が発生しますが、Thread.abort_on_exception = true で実行すると
https://github.com/rails/rails/blob/master/activesupport/lib/active_support/testing/isolation.rb#L31
の method_missing 部分で marshal_load が @calls に追加され、この @calls が L26 で send されて NoMethodError で落ちていることがわかりました。
いつから落ち始めたかを調べたところ、
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=38175
の変更によって、_dump が @calls に追加されるようになり、rails のテストが落ちはじめ
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=38568
の変更で _dump ではなく marshal_load が @calls に追加されるようになって今も落ち続けているという状態です。
Rails のコードに marshal_load と marshal_dump を定義すればテストは落ちなくなるのですが、38175 より前では
発生していなかった現象が発生するようになった原因など教えて頂けないでしょうか。