# File lib/phusion_passenger/utils.rb, line 147
        def unmarshal_exception(data)
                hash = Marshal.load(data)
                if hash[:is_initialization_error]
                        if hash[:child_exception]
                                child_exception = unmarshal_exception(hash[:child_exception])
                        else
                                child_exception = nil
                        end
                        
                        exception = Marshal.load(hash[:exception])
                        exception.child_exception = child_exception
                        return exception
                else
                        begin
                                return Marshal.load(hash[:exception])
                        rescue ArgumentError, TypeError
                                return UnknownError.new(hash[:message], hash[:class], hash[:backtrace])
                        end
                end
        end