そう言えば

うちの環境*1
binmodeじゃないまま改行がLFのファイルを開いて何度もIO#tell呼んだら
落ちた。
具体的にはこんな感じ。

buf = []
File.open('example.txt') do |f|
  buf.push f.tell
  f.each do |line|
    buf.push f.tell
  end
end
p buf

これでeachの中で落ちる。
ActivePerlでも似たようなことは起きて、落ちはしなかったけど
tell()がマイナス値を返してくれやがっていたのである。

Rubyのio.cのrb_io_tell()読んだらそのマイナス値が原因っぽいな。
どっちもbinmodeにしたら滞りなく動くんだが…

ちなみにMinGW PerlCygwin Perlではこんなことはなかった。
ははーん、犯人はVCか。

*1:ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]