39307佐々木です。ありがとうございます。下記スクリプトを実行すると1.8(ちょっと古いのですが)では251回目でErrno::EMFILEとなってしまいました。例外オブジェクトが持つioがcloseされないようです。1.9では2000回まで行きました。|の様に書けば確実にcloseされるのなら問題ないですが、そうでもないようです。RubyのGCは保守的なのですべて回収されることは保証できません。|fdも開きっぱなしになるのではないかとおもいます。|(再現スクリプトでは1.9では開きっぱなしのfdの数が少ないです。GCは参照されていないオブジェクトを回収します。トがfdを持てば、それは自動的にcloseします。files」になったせいでした。filesにぶつかったのでした。RubyはEMFILEが発生すると自動的にGCを起動します。EMFILEが出ると言うことは、また別の問題を示唆しますね。