I don't know when Redmine will be back up, so:

Exception objects allow an arbitrary object for the message:

>> RUBY_REVISION
=> 30240
>> FiberError.exception([]).message
=> []
>> Exception.new(Object.new).message
=> #<Object:0x00000002a283f0>

And Exception#to_s returns said object verbatim:

>> FiberError.exception([]).to_s
=> []

This breaks the contract of #to_s returning either a String or nil.