# File lib/phusion_passenger/utils.rb, line 120
        def marshal_exception(exception)
                data = {
                        :message => exception.message,
                        :class => exception.class.to_s,
                        :backtrace => exception.backtrace
                }
                if exception.is_a?(InitializationError)
                        data[:is_initialization_error] = true
                        if exception.child_exception
                                data[:child_exception] = marshal_exception(exception.child_exception)
                                child_exception = exception.child_exception
                                exception.child_exception = nil
                                data[:exception] = Marshal.dump(exception)
                                exception.child_exception = child_exception
                        end
                else
                        begin
                                data[:exception] = Marshal.dump(exception)
                        rescue ArgumentError, TypeError
                                e = UnknownError.new(exception.message, exception.class.to_s,
                                                        exception.backtrace)
                                data[:exception] = Marshal.dump(e)
                        end
                end
                return Marshal.dump(data)
        end