# File lib/phusion_passenger/utils.rb, line 608
        def unmarshal_and_raise_errors(channel, print_exception = nil, app_type = "rails")
                args = channel.read
                if args.nil?
                        raise EOFError, "Unexpected end-of-file detected."
                end
                status = args[0]
                if status == 'exception'
                        child_exception = unmarshal_exception(channel.read_scalar)
                        stderr = channel.read_scalar
                        exception = AppInitError.new(
                                "Application '#{@app_root}' raised an exception: " <<
                                "#{child_exception.class} (#{child_exception.message})",
                                child_exception,
                                app_type,
                                stderr.empty? ? nil : stderr)
                elsif status == 'exit'
                        child_exception = unmarshal_exception(channel.read_scalar)
                        stderr = channel.read_scalar
                        exception = AppInitError.new("Application '#{@app_root}' exited during startup",
                                child_exception, app_type, stderr.empty? ? nil : stderr)
                else
                        exception = nil
                end
                
                if print_exception && exception
                        if print_exception.respond_to?(:puts)
                                print_exception(self.class.to_s, child_exception, print_exception)
                        elsif print_exception.respond_to?(:to_str)
                                filename = print_exception.to_str
                                File.open(filename, 'a') do |f|
                                        print_exception(self.class.to_s, child_exception, f)
                                end
                        else
                                print_exception(self.class.to_s, child_exception)
                        end
                end
                raise exception if exception
        end