次のように String#crypt の結果を finalizer からすりかえられるのは、よ
ろしくないんじゃないかと思います。

Z:akr@boron% for n in {6000..7000}
do
echo $n
./ruby -e '
def fin(&block) ObjectSpace.define_finalizer(Object.new, &block) end
fin { "zzz".crypt("AA") }
'$n'.times { Object.new }
Object.new
crypted = "abc".crypt("AA")
if crypted != "AA75xC/4BNCm."
  p crypted
  exit 1
end
' || break
done
6000
6001
...
6447
6448
"AAPHigUjeJ9wE"
-- 
[田中 哲][たなか あきら][Tanaka Akira]