次のように、とある例外オブジェクトが marshal 出来ないことに気がつきました。

% ruby -ve '
begin
eval("x")
rescue Exception
p Marshal.dump($!)
end'
ruby 1.9.0 (2004-01-16) [i686-linux]
-e:5:in `dump': singleton can't be dumped (TypeError)
        from -e:5

なぜか、p $! を入れただけで marshal 出来るようになるのが不思議なところ
です。

% ruby -e '
begin
eval("x")
rescue Exception
p $!
p Marshal.dump($!)
end'
#<NameError: (eval):1: undefined local variable or method `x' for main:Object>
"\004\010o:\016NameError\010:\abt[\006\"\t-e:3:\tmesg\"E(eval):1: undefined local variable or method `x' for main:Object:\tname:\006x"
-- 
[田中 哲][たなか あきら][Tanaka Akira]