From: Yukihiro Matsumoto Date: 2007-03-22T16:51:55+09:00 Subject: [ruby-dev:30667] $! assignment does not work properly まつもと ゆきひろです [ruby-core:10721]の [ ruby-Bugs-9451 ] Exception in Matrix inverse ですが、直接の原因は$!を代入してもそれが反映されない(ので、 $@へのアクセスがエラーになる)というものでした。具体的には errinfo_setterが GET_THREAD()->errinfo に代入しているのに、 get_errinfo()はそれを参照せずにコールスタックをスキャンして いるようです。 コールスタックの構造が分からないので私にはここまででした。 get_errinfo()の先頭に if (!NIL_P(th->errinfo)) return th->errinfo; というコードを足すととりあえずこの問題は回避できますが、それ が正しい対応かどうかは私には分かりません。