CN101023411A - 用于最小化计算机应用程序中的丢失的方法和*** - Google Patents

用于最小化计算机应用程序中的丢失的方法和*** Download PDF

Info

Publication number
CN101023411A
CN101023411A CNA2005800242211A CN200580024221A CN101023411A CN 101023411 A CN101023411 A CN 101023411A CN A2005800242211 A CNA2005800242211 A CN A2005800242211A CN 200580024221 A CN200580024221 A CN 200580024221A CN 101023411 A CN101023411 A CN 101023411A
Authority
CN
China
Prior art keywords
applied algorithm
computer applied
mistake
described computer
application program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2005800242211A
Other languages
English (en)
Other versions
CN100498725C (zh
Inventor
S·谢弗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Softricity Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Softricity Inc filed Critical Softricity Inc
Publication of CN101023411A publication Critical patent/CN101023411A/zh
Application granted granted Critical
Publication of CN100498725C publication Critical patent/CN100498725C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)

Abstract

在软件应用程序的执行期间,用户将通常创建表示他们试图完成的工作的重要数据。此外,使用应用程序的动作将创建该程序内反映使用期间所执行的操作的状态。在众多情形中,由于应用程序、***或网络故障,这种数据可能丢失。本发明提供经由(a)响应于故障将程序执行重定向到来自程序的表示保存和/或退出的已知代码路径,(b)挂起程序并在错误修复之后还原,以及(c)摄取应用程序状态快照以便在应用程序故障之后还原的弹性手段。

Description

用于最小化计算机应用程序中的丢失的方法和***
相关申请的交叉引用
本申请要求于2004年7月20日提交的美国临时专利申请第60/589,262号的优先权,该申请通过引用包含在此。
技术领域
本发明涉及计算机软件应用程序的一般容错度,以及用于使得单个应用程序能够在未被编程或预期的错误情形中操作。
背景
计算机***和软件应用程序日益复杂并分布广泛。这些因素均导致数据丢失的常见问题。当最终用户操作软件应用程序时,他们通常将操作的结果保存在一个或多个数据文件中,保存到数据库或其它地方。提交这些操作的动作创建了***中的状态改变,这可有效地用作检查点。应用程序程序员花费大量时间来确保他们的软件程序按预期将在这些检查点处执行,或者提交或者拒绝改变。
然而,通常状态改变在这些检查点之间累积。在大多数软件应用程序中,在提交之间可能存在相当多的经过的时间或采取的操作。如果应用程序在该间隔期间发生故障,则由用户采取的动作可能丢失,回到上一检查点。用户必须然后重新打开应用程序,研究其可查看状态来理解丢失了什么,并重新创建所采取的那些动作。
应用程序故障可由于若干原因导致,包括网络故障、硬件故障、服务器或***故障或其它操作故障。在新软件模式中,当用户将膝上型计算机或其它移动设备从网络中断开,或当应用程序被流化或分块传递给客户计算机时,故障的可能性增加。众多应用程序未被设计成当从网络断开时操作,或在程序及其资源的完整性在运行时不存在的情况下操作。
期望提供调节或克服这些和其它形式的故障的手段,在无需费用和时间高昂的应用程序重写或考虑各种形式的故障的情况中消除在检查点处或检查点之间的丢失的工作。提出了一组简单、通用的方法以便在无需对任何软件应用程序进行修改或访问软件应用程序代码或设计的情况下提供期望的弹性。
提出了各种方法来实现为特定应用或目的在设计时对这个问题的解决方案,诸如授予Walker等人的名为Method for Saving a Document Using a Background SaveThread(使用背景保存线程保存文档的方法)的美国专利第6,014,681号中所述的方法。授予Huang的名为Apparatus and Method for Fault-Tolerant Computing(容错计算的装置和方法)的美国专利第5,748,882号公开了创建来供应用程序开发员使用的容错例程库。本发明的方法克服了需要应用程序通过使用这样的库被设计和构建来容错的限制。本发明提供了用于处理以往、目前和将来软件***的众多需求的可扩展的解决方案架构。
概述
本发明提供用于当错误或潜在错误在计算机应用程序中发生时防止或最小化数据丢失的方法和***。本发明的方法和***可在无需对使用中的应用程序的代码进行任何修改或访问的情况下最小化或防止数据丢失。
在本发明中,提供帮助者应用程序来监视运行在目标计算机上的主应用程序以检测主应用程序中的错误或潜在错误的存在。当检测到错误时,帮助者应用程序选择用于处理该错误的方法,然后执行所选方法。
帮助者应用程序通过截取对主应用程序的调用并检查调用的结果来监视主应用程序。帮助者应用程序监视应用程序的内部操作(诸如逻辑故障)和/或外部操作(诸如网络连接的丢失、应用程序所需的外部服务的故障、连接的设备的故障以及对等或服务器网络的故障)。
如果标识了错误,则帮助者应用程序确定哪一错误处理器是最适当的。在本发明的较佳实施例中,提供了包括重定向处理器、挂起处理器和快照处理器的错误处理器。***可扩展来提供为不同目的利用任何数量的不同处理器的能力。其它处理器的示例可以是自动重启处理器或倒带处理器。
如果选择了重定向处理器,则重定向处理器调用主应用程序的保存逻辑。可通过(a)直接调用主应用程序保存入口点,(b)将程序计数器复位到保存入口点,或(c)***跳转指令来强制调用保存来调用保存逻辑。
如果选择了挂起处理器,则挂起处理器挂起应用程序,等待恢复可进行的通知。一旦它获取了该通知之后,挂起处理器进行(a)恢复主应用程序或(b)复位主应用程序的程序计数器或(c)重新调用原始错误API中的任一种。挂起处理器在主应用程序通过使得主应用程序仅可通过预定手段控制来被挂起的同时防止对主应用程序的偏离恢复(stray resumption)。可在错误持续时间内挂起主应用程序,或它可在预期错误状态的情况下由用户接口挂起。
如果选择了快照处理器,则快照处理器响应于主应用程序中错误或潜在错误的存在挂起主应用程序的进程和线程。快照处理器然后摄取主应用程序的存储器快照,将存储器存储到非易失性存储,终止主应用程序,并在调用之后,还原主应用程序。快照处理器防止主应用程序在错误被清除或由用户明确确认之前被再次调用。
在上述实施例中,帮助者应用程序对它将处理哪组错误以及它将调用何种处理器进行分类。***可通过各种技术离线或在线地获取这种知识。在最基本的***中,处理器仅登记来检测所有的错误。
根据本发明的另一方面,采取附加的步骤来对主应用程序代码执行静态分析以确定其组成和其错误的可能性以及诸如“保存”或“退出”的其常见程序入口点。在分析完成之后,分析器可呈现可恢复和不可恢复的那些错误的列表以及关于处理的建议。对这两类错误,然后可禁止用于配置错误处理器的动作。对不可恢复的那些错误,通常使用重定向处理器。如果没有“保存”代码存在或可标识,则***可设置成仅得体地退出,而数据不必保存。
为了分析程序入口点,帮助者应用程序可使用平台知识来发现源。在替换实施例中,可使用动态分析标识错误和入口点。从而程序可在其执行期间被跟踪以便标识这些签名。
附图简述
图1示出了本发明的***和方法的一个实施例的示意图;
图2示出了图1中所示的本发明的***和方法中所利用的错误检测过程的示意图;
图3示出了图1中所示的本发明的***和方法中的程序计数器的操作的示意图;
图4示出了图1中所示的本发明的***和方法所使用的程序分析器的示意图;以及
图5示出了图1中所示的本发明的方法所执行以检测和处理错误的步骤的流程图。
较佳实施例的详细描述
如图1中所示,软件应用程序100在目标计算机101上执行。帮助者应用程序102并发地在同一计算机上执行,而它也可整体或部分地作为服务程序存在于替换计算机103上。该帮助者应用程序102可作为注入到主应用程序的存储器空间内的独立进程驻留,或作为计算机的操作的***的一部分作为设备驱动程序等。不必重新编译或修改主应用程序100。主应用程序100可作为独立程序存在,或与网络中的一个或多个对等或服务器计算机通信而存在。
参考图2,帮助者应用程序102包括错误检测器201、错误处理器203、以及知识库203。当主应用程序100执行时,错误检测器201监视主应用程序100以试图检测错误的存在性。错误检测在响应于主应用程序100的内部操作和在响应诸如网络连接的丢失、应用程序所需的外部服务的故障、诸如打印机和调制解调器等连接的设备的故障、其网络中对等或服务器计算机的故障等其它外部因素时完成。为调节内部出错,错误检测器截取各种消息和主应用程序100所采取的动作。在一个示例方法(图2中所示)中,帮助者应用程序102监视主应用程序对存储器分配例程的调用,诸如使用标准C运行时程序库中的malloc()和failed()。如果malloc()例程不能分配所请求的存储器,则将发生存储器错误。
在该示例中,主应用程序对malloc()例程的调用由错误检测器201截取。注意,在本发明的替换实施例中,错误检测器可按照这样一种方式操作,它实际上不截取例程调用,而监视诸如异常、坏返回代码或其它不正确行为等对错误的输出。所截取的调用被转发给malloc()例程。反过来(on return),错误检测器将检查调用的结果。此时,错误检测器将分支,并且将控制返回给主应用程序100或者调用错误处理器202。错误处理器202可包含静态编码决策和/或诸如可配置知识库(203)(如图2中所示)的***以便基于大量行为和探试调用错误处理例程。
在一个实施例中,知识库203包含可配置成响应于各种故障情形的一组规则和行为。作为规则库,它也可随时间扩展。单单通过添加规则,可扩展***处理新错误、采用新行为或基于可用信息作出不同决策的能力。错误处理器将使用关于当前错误的可用信息查询知识库。在当前示例中,错误处理器可向知识库发送信号,指示在当前程序内发生了malloc_failed(malloc故障)事件。知识库然后调用其规则库以便基于它所具有的关于应用程序和机器当前状态、所发生的错误类型、该错误可用的任何严重性或扩展的出错信息、或任何应用程序专用错误处理规则的任何规则作出决策。知识库可按照各种方式实现,包括决策树、基于范例的推论器、或各种技术的组合。知识库处理的结果是响应于该错误选择要采取的一动作或不采取动作。该返回指令将向错误处理器指示如何处理当前错误。
错误检测器201也响应于目标计算机101上或其作为一部分的网络中的外部事件。例如,如当移动设备靠电池运行时,目标计算机101可指示其电力低下。错误检测***201可观察该事件并调用错误处理器以便经由知识库选择适当的恢复动作。在其它实现中,错误检测器201可被配置成响应网络连接的丢失、应用程序所需的外部服务的故障、诸如打印机和调制解调器的连接设备的故障、其网络中的对等或服务器计算机的故障、和其它重要事件。接着可看到,错误检测器包含两个不同的模块,一个用于观察应用程序专属错误,另一个用于观察一般***故障或环境问题。
错误检测器201可结合能够从网络中断开的移动设备使用。在这种类型的设备中,网络中断可能是经常的,主应用程序100的代码可能未对移动性进行设计。此外,在移动设备中,主应用程序100的代码可被流化,即其中主应用程序100被分解成操作主应用程序100的某些功能所需的代码片段的传递模式。这些代码片段及时被传递给移动设备,使得主应用程序100可使用最小覆盖区(footprint)迅速部署。以此模式,移动设备操作员通常请求在离线使用期间可能不可用的主应用程序100的功能。在该功能被请求时,代码片段将不存在,且将不可从网络访问。
在本发明的一个实施例中,如果移动设备操作***发出指示访问主应用程序的***代码页的故障的页错误,则错误检测器201捕获该错误,并调用错误处理器202。在替换实施例中,错误检测器201被嵌入到移动设备操作***内,作为用于流化应用程序的***的一部分。在该***中,错误可在页错误发生之前当对数据包的网络请求失败时被检测出,且错误行为被直接检测。
由于移动设备可从网络中断开,它可能丢失与网络资源的接触或不能接触网络资源。如果主应用程序100试图连接至网络并失败,则可发生另一类错误。在该类错误的情况下,错误检测器201可截取对网络的请求,并执行对于故障的适当的错误行为。
如上所述,当检测出错误之后,错误处理器202确定哪一错误处理器是最适当的。在某些情况中,错误处理器将调用帮助者应用程序102来允许用户决定动作过程,或调用可由帮助者应用程序配置的动作。帮助者应用程序可向用户通知错误的存在、内部将错误记入日志、或将错误通知转发给诸如SNMP、WMI或WindowsEvent Log等各种监视***。帮助者应用程序也可询问用户他们是选择来处理错误还是允许故障发生,且当多种动作可能时还要求用户选择适当的一个动作。
主错误处理器包括重定向处理器、挂起处理器和快照处理器。现在将在以下详细描述这些错误处理器中的每一个。
重定向处理器
当调用重定向处理器时,重定向处理器将主应用程序重定向到主应用程序的“保存并退出”逻辑,然后退出。使用重定向处理器的本发明的实施例在图3中示出。在错误发生时,主应用程序100在错误检测器201的截取例程内部运行。操作***的程序计数器当前指向该截取例程,且当调用错误API之后正常地继续执行下一指令。重定向处理器或者将调用应用程序的保存逻辑302,然后退出主应用程序100。通过(a)直接调用主应用程序100的保存入口点,(b)将程序计数器复位到保存入口点,或者(c)在调用程序中***跳转指令以强制调用保存并退出逻辑来实现对保存逻辑的这种调用。
在图3中所示的示例中,主应用程序试图调用API call_thesaurus()。该例程的代码片段还未由操作***303调入页。以此,操作***303截取该调用,并查询其虚拟存储器管理器304来检索代码页。当这发生故障时,操作***303将发出页错误,正常终止主应用程序100。该页错误然后由重定向处理器306截取。或者,重定向处理器306可从例程直接接收“不能检索代码”页。
在某些情况中,主应用程序可具有保存并退出的若干变型。可能存在封装保存功能的“保存为”、“断开连接”或“退出”。错误处理器306确保,向用户给予保存已经完成的工作并从应用程序中退出而避免应用程序的错误和/或崩溃的安全的手段。用户可在退出之后重启应用程序,但他/她将了解可能发生了错误且错误可再次发生。
在错误处理器的一个实施例中,主应用程序调用其“保存”逻辑,但其数据文件将被重定向至本地数据源或代理存储,使得主应用程序可在其中或者数据文件损坏并引起写故障或者数据文件是网络文件且网络不可用的任一情况中完成其保存操作。正常地,当程序不能与网络文件服务器通信或有效保存其文件时可生成其它错误。在重新连接时,数据文件或代理存储可与源数据文件同步化或替换它。
挂起处理器
当调用挂起处理器时,挂起处理器挂起包括主应用程序100的所有进程、子进程和线程。一旦主应用程序100被挂起之后,挂起处理器等待恢复可进行(即,诸如网络被重新建立、或用户选择指示其继续的期望的控制的事件)的通知。当请求继续时,挂起处理器可(a)直接恢复主应用程序,(b)复位程序计数器,或(c)重新调用原始错误API。
在挂起期间,主应用程序100将保持以其完整形式存在,并仍将作为目标计算机101上的应用程序可见。在一个实施例中,挂起处理器可防止通过诸如Windows Task Manager等简单的***工具对主应用程序的偏离(stray)恢复。它将主应用程序挂起以便仅可通过明确的手段或通过内部帮助者应用程序102控制。
挂起处理器常用于其中不存在明确“保存”功能的应用程序。这些应用程序将其状态保存为一连串副作用,或通过与外部服务器、数据库或其它***的通信保存。在一个示例中,应用程序是超文本应用程序,且对HTTP服务器的连接丢失。在此示例中,可存储超文本应用程序的用户侧状态,或者可存储整个超文本浏览器应用程序。当服务器回到在线时,应用程序可使用其所保存的状态继续。
快照处理器
如果错误指示长期的问题,则挂起将不能从问题持续时间恢复,因为目标计算机可能经受动力循环(power cycle),或遭受其它错误,因而调用快照处理器。在这种情形中,期望备份主应用程序的运行状态以便稍后还原。
当调用快照处理器时,快照处理器挂起主应用程序的进程和线程,摄取主应用程序的存储器快照,包括不是应用程序的一部分但用于将其还原成进程的内核数据结构。该存储器快照然后可被写至磁盘,供稍后恢复使用。在替换方法中,快照处理器可周期性、主动地对主应用程序摄取快照以提供更细粒度的恢复手段。为了避免过多的开销,可迅速摄取存储器快照,并在后台中将存储器存储到磁盘或其它非易失性存储。如果由于长期的问题而摄取快照,则一旦完成快照之后,快照处理器然后可终止主应用程序。
一旦终止了主应用程序之后,帮助者应用程序102然后可用于防止应用程序在错误清除或用户已明确确认该用户想要应用程序被再次调用之前被再次调用。在调用之后,帮助者应用程序然后可还原主应用程序100,或仅允许主应用程序的另一实例被代替创建。或者,帮助者应用程序可将快照图像传送给网络中的对等或服务器计算机以便从那里恢复。
在还原之后,错误处理器映射回进程的存储器,并复位内部操作***内核数据结构以确保程序能够精确地在其曾停止的位置继续。作为示例,如果应用程序100在错误时打开了若干文件,则快照处理器将需要重新打开这些文件,并重新分配已知文件句柄,使得主应用程序不会生成试图使用其旧的文件句柄的错误。而且,如果文件句柄为流访问而设置,则它们必须指向文件中的适当偏移量。
图5示出了本发明的帮助者应用程序的一个实施例的流程图。在步骤501、502中调用潜在错误API,帮助者应用程序102在步骤504中询问调用是否成功或者错误是否发生。如果未有错误发生,则应用程序在步骤505中返回API结果。如果错误发生,则帮助者应用程序102标识错误处理器,在重定向处理器和挂起处理器之间选择。如果在步骤508中选择了挂起处理器,则帮助者程序询问主应用程序是否可被恢复。如果程序被恢复,则它在步骤505中返回API结果。如果主应用程序未被恢复,则帮助者应用程序在步骤510中询问是否重新调用API。如果不重新调用API,则帮助者应用程序询问是否有快照可用。如果在步骤511中有快照可用,则帮助者应用程序在步骤513中将PC回复到快照。如果无快照可用,则在步骤512中复位程序计数器。
在本发明的又一实施例中,帮助者应用程序102也还原外部连接,诸如至数据库、TCP/IP槽或其它IPC机制的连接。为此,帮助者应用程序102也可向用户要求协助,诸如使用数据库登录或使用HTTP服务器认证。如上所述,***可能需要复位某些主应用程序内部构件或将句柄重定向到经改变的实体,如槽描述器。在替换实施例中,可提供用户界面来允许用户在不考虑错误的存在与否的情况下明确地调用这种行为。
帮助者应用程序除分类它可调用何种处理器以外还分类它将处理哪一类错误。帮助者应用程序通过各种技术离线或在线地获取这种知识。在一个示例中,错误处理器将登记来检测所有的错误。
在本发明的另一实施例中,采取附加的步骤来对主应用程序代码执行静态分析以确定其组成和错误的可能性、以及诸如“保存”或“退出”等其常见的程序入口点。在对潜在错误的检查中,分析例程寻找对一组公共API的使用,诸如对文件的访问、或经由ODBC对数据库的访问、或如上所述的对诸如malloc()和free()等存储器例程的使用或者对诸如socket()或Windows GetNamedPipe()的IPC例程的使用。
当分析完成之后,分析器403可提供被认为可经由***可用错误处理器恢复和不可恢复的错误的列表以及用于处理错误的建议(见图4)。对这两类错误,随后可禁止用于配置错误处理器的动作。对那些不可恢复的错误,通常使用重定向处理器。如果不存在或不可标识“保存”代码,则***可被设置成仅得体地退出。
为了分析程序入口点,***可使用平台知识来发现源。例如,在MicrosoftWindows平台上,可响应WM_EXIT消息的消息处理器可对应于程序的“退出”例程。因此,对WM_EXIT的搜索将指示该功能点。或者,资源文件可描述File:Exit菜单命令以及在调用时它将生成的Windows消息。如果这些指示符不存在,则分析器可进一步寻找对诸如Windows ExitProcess()或exit()功能等API的使用。在搜索“保存”例程时,分析器可寻找对文件或外部数据源的任何使用。
在替换实施例中,可使用动态分析标识错误和入口点。可在程序执行期间跟踪程序以标识这些签名。在一个实施例中,使用以类似于宏记录的方式记录入口点的入口点标识符UI 404进行动态分析。当用户指示将标识“保存”功能时,标识符记录所有UI和程序活动。从这些签名中,可标识入口点和相关联的代码。对其中应用程序离线使用的流化的应用程序,以“保存”和“退出”功能标识的代码被特别标记以指示它必须总是被流化且以离线模式提供以确保这种行为可被调用。
本发明也提供允许在没有工作丢失的情况下调节应用程序使用中的中断或错误的手段。正常地,应用程序使用期间的故障可使得在该程序中进行的某些工作无论完成与否都被丢弃。本发明的***和方法不仅提供对程序的简单恢复,而且允许确保不遭受数据丢失的手段。而且,这是在无需对软件的任何修改、重新编译或重新设计的情况下完成的,且允许在考虑该范例的情况下构建新软件。
尽管结合某些较佳实施例描述了本发明,但可以理解,本发明不旨在被限于这些特定实施例。相反,它旨在也覆盖替换、修改和等效实施方式。提及了某些具体分量、外形和某种类型的材料,但可以理解,这样的分量值、材料的尺度和类型仅作为示例给出,且不旨在以任何方式限制本发明的范围。

Claims (33)

1.一种在使用计算机应用程序的同时最小化数据丢失的方法,包括以下步骤:
监视所述计算机应用程序以便检测错误或潜在错误的存在;
选择用于处理所述错误或潜在错误的方法;以及
执行所选的用于处理错误或潜在错误的方法;
其中所述监视、选择和执行的步骤在无需访问或修改所述计算机应用程序的代码的情况下执行。
2.如权利要求1所述的方法,其特征在于,所述用于处理错误或潜在错误的方法是从以下方法中选出的:重定向所述计算机应用程序代码的执行;挂起所述计算机应用程序;以及摄取所述计算机应用程序的存储器快照。
3.如权利要求1所述的方法,其特征在于,所述执行所选的用于处理错误或潜在错误的方法的步骤包括调用所述计算机应用程序的保存逻辑以便保存数据。
4.如权利要求1所述的方法,其特征在于,所述执行所选的用于处理错误或潜在错误的方法的步骤包括:
挂起所述计算机应用程序;
为可进行恢复的指示而监视所述计算机应用程序;以及
选择恢复所述计算机应用程序或复位所述计算机应用程序的程序计数器之一。
5.如权利要求1所述的方法,其特征在于,所述执行所选的用于处理错误或潜在错误的方法步骤还包括:
挂起所述计算机应用程序;
摄取所述计算机应用程序的存储器快照;以及
将所述存储器快照存储到非易失性存储器装置中。
6.如权利要求1所述的方法,其特征在于,所述监视计算机应用程序的步骤包括:
截取对所述计算机应用程序的调用;
检查所述调用的结果;以及
选择是将控制返回给所述计算机应用程序还是选择用于处理所述错误或潜在错误的方法。
7.如权利要求1所述的方法,其特征在于,所述监视计算机应用程序的步骤包括监视所述计算机应用程序的内部操作。
8.如权利要求1所述的方法,其特征在于,所述监视计算机应用程序的步骤包括监视外部事件。
9.如权利要求1所述的方法,其特征在于,所述处理错误或潜在错误的步骤包括与所述计算机应用程序的用户进行关于所述错误或潜在错误的通信。
10.一种在使用计算机应用程序的同时最小化数据丢失的方法,包括:
监视计算机应用程序以检测错误或潜在错误的存在;以及
响应于检测到错误或潜在错误的存在而调用所述计算机应用程序的保存逻辑以便保存数据。
11.如权利要求10所述的方法,其特征在于,所述调用计算机应用程序的保存逻辑的步骤包括直接调用所述计算机应用程序的保存入口点。
12.如权利要求10所述的方法,其特征在于,所述调用计算机应用程序的保存逻辑的步骤包括将所述计算机应用程序的程序计数器复位到保存入口点。
13.如权利要求10所述的方法,其特征在于,所述调用计算机应用程序的保存逻辑的步骤包括将跳转指令***到现场代码流中以强制对保存的调用。
14.如权利要求10所述的方法,其特征在于,所述调用计算机应用程序的保存逻辑的步骤包括将所述计算机应用程序重定向到本地数据源或代理存储。
15.如权利要求10所述的方法,其特征在于,还包括在运行所述计算机应用程序的***内部记录所述错误或潜在错误。
16.如权利要求10所述的方法,其特征在于,还包括将错误通知转发给外部监视***。
17.如权利要求10所述的方法,其特征在于,还包括与所述计算机应用程序的用户进行关于所述错误或潜在错误的通信。
18.如权利要求17所述的方法,其特征在于,所述与计算机应用程序的用户进行关于错误或潜在错误的通信的步骤包括询问用户是想要处理所述错误或潜在错误还是应允许所述错误或潜在错误发生。
19.一种用于在使用计算机应用程序的同时最小化数据丢失的方法,包括:
监视计算机应用程序以检测错误或潜在错误的存在;
响应于检测到错误或潜在错误,挂起所述计算机应用程序;
为可进行恢复的指示而监视所述计算机应用程序;以及
选择进行恢复所述计算机应用程序或复位所述计算机应用程序的程序计数器的任一种。
20.如权利要求19所述的方法,其特征在于,还包括在所述计算机应用程序挂起的同时防止所述计算机应用程序的不需要的恢复。
21.如权利要求19所述的方法,其特征在于,所述防止计算机应用程序的不需要的恢复的步骤包括使得所述计算机应用程序仅可通过预定手段来控制。
22.如权利要求19所述的方法,其特征在于,还包括将所述计算机应用程序的状态作为一连串副作用来保存的步骤。
23.如权利要求19所述的方法,其特征在于,还包括通过与外部***的通信来保存所述计算机应用程序的状态的步骤。
24.如权利要求19所述的方法,其特征在于,所述计算机应用程序在检测到的错误的持续期间内挂起。
25.如权利要求19所述的方法,其特征在于,所述挂起计算机应用程序的步骤包括经由用户界面与用户通信以确定在预期到错误状态时所述用户是否希望挂起所述计算机应用程序的步骤。
26.一种用于在使用计算机应用程序的同时最小化数据丢失的方法,包括:
响应于计算机应用程序中错误或潜在错误的存在,挂起所述计算机应用程序;
摄取所述应用程序的存储器快照;以及
将所述存储器快照存储到辅助存储器设备。
27.如权利要求26所述的方法,其特征在于,还包括:
在所述存储器快照被存储之后,终止所述计算机应用程序;以及
在调用之后,进行还原所述计算机应用程序或允许创建所述计算机应用程序的另一实例的任一种。
28.如权利要求27所述的方法,其特征在于,所存储的存储器快照可在所述计算机应用程序的终止之后恢复。
29.如权利要求26所述的方法,其特征在于,还包括在挂起所述计算机应用程序之后防止所述计算机应用程序在检测到的错误或潜在错误被清除或由用户明确确认之前被调用。
30.如权利要求26所述的方法,其特征在于,所述还原计算机应用程序的步骤包括映射所述计算机应用程序的存储器并复位内部操作***内核数据结构。
31.如权利要求26所述的方法,其特征在于,还包括响应于检测到外部连接被断开的错误还原与其上使用所述计算机应用程序的计算机的外部连接的步骤。
32.如权利要求1所述的方法,其特征在于,还包括分析所述计算机应用程序的代码以标识常见入口点。
33.如权利要求32所述的方法,其特征在于,所述分析代码以标识常见入口点的步骤包括在所述应用程序执行期间跟踪它。
CNB2005800242211A 2004-07-20 2005-07-18 用于最小化计算机应用程序中的丢失的方法和*** Active CN100498725C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US58926204P 2004-07-20 2004-07-20
US60/589,262 2004-07-20

Publications (2)

Publication Number Publication Date
CN101023411A true CN101023411A (zh) 2007-08-22
CN100498725C CN100498725C (zh) 2009-06-10

Family

ID=35636751

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005800242211A Active CN100498725C (zh) 2004-07-20 2005-07-18 用于最小化计算机应用程序中的丢失的方法和***

Country Status (7)

Country Link
US (1) US7426661B2 (zh)
EP (1) EP1779245B1 (zh)
JP (1) JP5128944B2 (zh)
KR (2) KR101470712B1 (zh)
CN (1) CN100498725C (zh)
ES (1) ES2681522T3 (zh)
WO (1) WO2006020094A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102308285A (zh) * 2011-07-26 2012-01-04 华为技术有限公司 一种应用程序的内存错误修复方法
CN103593191A (zh) * 2013-11-19 2014-02-19 乐视致新电子科技(天津)有限公司 调用应用程序数据的方法和装置
CN113692577A (zh) * 2019-03-27 2021-11-23 亚马逊技术有限公司 延续工作流

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7137034B2 (en) * 2000-05-19 2006-11-14 Vir2Us, Inc. Self repairing computer having user accessible switch for modifying bootable storage device configuration to initiate repair
US7111201B2 (en) * 2000-05-19 2006-09-19 Self Repairing Computers, Inc. Self repairing computer detecting need for repair and having switched protected storage
US7096381B2 (en) * 2001-05-21 2006-08-22 Self Repairing Computer, Inc. On-the-fly repair of a computer
US20060277433A1 (en) * 2000-05-19 2006-12-07 Self Repairing Computers, Inc. Computer having special purpose subsystems and cyber-terror and virus immunity and protection features
US7392541B2 (en) * 2001-05-17 2008-06-24 Vir2Us, Inc. Computer system architecture and method providing operating-system independent virus-, hacker-, and cyber-terror-immune processing environments
US7849360B2 (en) * 2001-05-21 2010-12-07 Vir2Us, Inc. Computer system and method of controlling communication port to prevent computer contamination by virus or malicious code
US7536598B2 (en) * 2001-11-19 2009-05-19 Vir2Us, Inc. Computer system capable of supporting a plurality of independent computing environments
US7788699B2 (en) * 2002-03-06 2010-08-31 Vir2Us, Inc. Computer and method for safe usage of documents, email attachments and other content that may contain virus, spy-ware, or malicious code
US7395458B2 (en) * 2004-05-21 2008-07-01 Bea Systems, Inc. Diagnostic instrumentation
US7376534B2 (en) * 2004-05-21 2008-05-20 Bea Systems, Inc. Watches and notifications
US7379849B2 (en) * 2004-05-21 2008-05-27 Bea Systems, Inc. Diagnostic image
US7359831B2 (en) * 2004-05-21 2008-04-15 Bea Systems, Inc. Diagnostic context
US8490064B2 (en) 2004-05-21 2013-07-16 Oracle International Corporation Hierarchical debug
US8171479B2 (en) * 2004-09-30 2012-05-01 Citrix Systems, Inc. Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers
US8117559B2 (en) * 2004-09-30 2012-02-14 Citrix Systems, Inc. Method and apparatus for virtualizing window information
US8095940B2 (en) * 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US7752600B2 (en) * 2004-09-30 2010-07-06 Citrix Systems, Inc. Method and apparatus for providing file-type associations to multiple applications
US7853947B2 (en) * 2004-09-30 2010-12-14 Citrix Systems, Inc. System for virtualizing access to named system objects using rule action associated with request
US7680758B2 (en) * 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US8615482B1 (en) * 2005-06-20 2013-12-24 Symantec Operating Corporation Method and apparatus for improving the utilization of snapshots of server data storage volumes
US20070083620A1 (en) * 2005-10-07 2007-04-12 Pedersen Bradley J Methods for selecting between a predetermined number of execution methods for an application program
US20070083610A1 (en) * 2005-10-07 2007-04-12 Treder Terry N Method and a system for accessing a plurality of files comprising an application program
US7779034B2 (en) * 2005-10-07 2010-08-17 Citrix Systems, Inc. Method and system for accessing a remote file in a directory structure associated with an application program executing locally
US8131825B2 (en) * 2005-10-07 2012-03-06 Citrix Systems, Inc. Method and a system for responding locally to requests for file metadata associated with files stored remotely
WO2007048062A2 (en) * 2005-10-21 2007-04-26 Vir2Us, Inc. Computer security method having operating system virtualization allowing multiple operating system instances to securely share single machine resources
US7526677B2 (en) * 2005-10-31 2009-04-28 Microsoft Corporation Fragility handling
US20080072150A1 (en) * 2006-09-06 2008-03-20 Yahoo! Inc. Event-based display and methods therefor
US8775369B2 (en) 2007-01-24 2014-07-08 Vir2Us, Inc. Computer system architecture and method having isolated file system management for secure and reliable data processing
US7673178B2 (en) * 2007-01-31 2010-03-02 Microsoft Corporation Break and optional hold on failure
US7765432B2 (en) * 2007-03-07 2010-07-27 Microsoft Corporation Reporting diagnostic information for code of an application program interface
US8171483B2 (en) 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
US9225684B2 (en) * 2007-10-29 2015-12-29 Microsoft Technology Licensing, Llc Controlling network access
KR100936239B1 (ko) * 2007-12-18 2010-01-12 한국전자통신연구원 스트리밍 기반 이동형 소프트웨어 제공 시스템 및 방법
US7792934B2 (en) * 2008-01-02 2010-09-07 Citrix Systems International Gmbh Loading of server-stored user profile data
US8271751B2 (en) 2008-04-24 2012-09-18 Echostar Technologies L.L.C. Systems and methods for reliably managing files in a computer system
US7934129B2 (en) * 2008-09-05 2011-04-26 Microsoft Corporation Network hang recovery
US8291261B2 (en) * 2008-11-05 2012-10-16 Vulcan Technologies Llc Lightweight application-level runtime state save-and-restore utility
JP5359234B2 (ja) * 2008-12-09 2013-12-04 日本電気株式会社 ジョブ実行システム、及びジョブフロー引継ぎ制御プログラム
US8738621B2 (en) 2009-01-27 2014-05-27 EchoStar Technologies, L.L.C. Systems and methods for managing files on a storage device
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US8392750B2 (en) 2010-02-16 2013-03-05 Hewlett-Packard Development Company, L.P. Method and apparatus for crash recovery and resynchronization
US8823536B2 (en) 2010-04-21 2014-09-02 Microsoft Corporation Automated recovery and escalation in complex distributed applications
US8589733B2 (en) * 2010-08-13 2013-11-19 International Business Machines Corporation Saving operational state of open applications when unexpected shutdown events occur
US9116728B2 (en) 2010-12-21 2015-08-25 Microsoft Technology Licensing, Llc Providing a persona-based application experience
US9003543B2 (en) 2010-12-21 2015-04-07 Microsoft Technology Licensing, Llc Providing a security boundary
US9354852B2 (en) 2010-12-23 2016-05-31 Microsoft Technology Licensing, Llc Satisfying application dependencies
US8789138B2 (en) 2010-12-27 2014-07-22 Microsoft Corporation Application execution in a restricted application execution environment
US9176742B2 (en) 2010-12-27 2015-11-03 Microsoft Technology Licensing, Llc Converting desktop applications to web applications
US9189308B2 (en) 2010-12-27 2015-11-17 Microsoft Technology Licensing, Llc Predicting, diagnosing, and recovering from application failures based on resource access patterns
US8931037B2 (en) 2010-12-27 2015-01-06 Microsoft Corporation Policy-based access to virtualized applications
US8621441B2 (en) * 2010-12-27 2013-12-31 Avaya Inc. System and method for software immunization based on static and dynamic analysis
US9223611B2 (en) 2010-12-28 2015-12-29 Microsoft Technology Licensing, Llc Storing and resuming application runtime state
CN102521082A (zh) * 2011-12-08 2012-06-27 上海交通大学 一种星载实时操作***中的检查点恢复容错方法及***
US9483344B2 (en) * 2012-04-05 2016-11-01 Assurant, Inc. System, method, apparatus, and computer program product for providing mobile device support services
US9413893B2 (en) 2012-04-05 2016-08-09 Assurant, Inc. System, method, apparatus, and computer program product for providing mobile device support services
US20140067912A1 (en) * 2012-09-04 2014-03-06 Bank Of America Corporation System for Remote Server Diagnosis and Recovery
US20150242282A1 (en) * 2014-02-24 2015-08-27 Red Hat, Inc. Mechanism to update software packages
DE102014007244B4 (de) 2014-05-16 2024-08-29 Nidec Motors & Actuators (Germany) Gmbh Bürstenhaltevorrichtung für eine Kommutatormaschine
CN104794015B (zh) * 2015-04-16 2017-08-18 华中科技大学 一种实时流计算流速感知弹性执行容错***
US10002004B2 (en) * 2016-05-26 2018-06-19 International Business Machines Corporation Stream computing application shutdown and restart without data loss
US9971655B1 (en) * 2016-06-29 2018-05-15 EMC IP Holding Company LLC Primed application recovery
US10299311B2 (en) * 2016-09-21 2019-05-21 Carbyne Ltd. System and method for ensuring continuous communication between a user device and an emergency dispatcher unit
US20180082053A1 (en) * 2016-09-21 2018-03-22 Telefonaktiebolaget Lm Ericsson (Publ) Application token through associated container
JP6874706B2 (ja) * 2018-02-07 2021-05-19 オムロン株式会社 アプリケーションプログラムを生成する方法、装置、プログラム
US11074142B1 (en) * 2021-01-15 2021-07-27 Coupang Corp. Systems and methods for automatically resolving system failure through force supplying cached API data

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2032067A1 (en) 1989-12-22 1991-06-23 Douglas E. Jewett Fault-tolerant computer system with online reintegration and shutdown/restart
EP0683456B1 (en) * 1989-12-22 1998-07-22 Tandem Computers Incorporated Fault-tolerant computer system with online reintegration and shutdown/restart
JPH04137046A (ja) * 1990-09-28 1992-05-12 Toshiba Corp 電子計算機のオペレーティングシステム
DE69415593T2 (de) * 1993-06-30 1999-05-20 Microsoft Corp., Redmond, Wash. Verfahren zur Überprüfung eines nachrichtengesteuerten Betriebssystems
JPH07230380A (ja) * 1994-02-15 1995-08-29 Internatl Business Mach Corp <Ibm> 適用業務プログラムの利用管理方法およびシステム
EP0830611A4 (en) * 1995-06-02 2007-05-09 Cisco Systems Inc TELECONTROL OF COMPUTER PROGRAMS
JPH0922369A (ja) * 1995-07-07 1997-01-21 Fujitsu Ltd マルチタスキング方式のカーネルにおける不正動作検出方法
US6047123A (en) * 1997-03-27 2000-04-04 Hewlett-Packard Company Methods for recording a compilable graphics call trace
US5991856A (en) * 1997-09-30 1999-11-23 Network Associates, Inc. System and method for computer operating system protection
US6631480B2 (en) * 1999-11-10 2003-10-07 Symantec Corporation Methods and systems for protecting data from potential corruption by a crashed computer program
US6857085B1 (en) * 2000-05-15 2005-02-15 Microsoft Corporation Method and system for handling an unexpected exception generated by an application
US6708291B1 (en) * 2000-05-20 2004-03-16 Equipe Communications Corporation Hierarchical fault descriptors in computer systems
US6973643B2 (en) * 2001-08-17 2005-12-06 International Business Machines Corporation Method, system and program for handling errors occurring in function calls
US7076692B2 (en) * 2001-08-31 2006-07-11 National Instruments Corporation System and method enabling execution stop and restart of a test executive sequence(s)
US6928639B2 (en) * 2001-09-11 2005-08-09 International Business Machines Corporation Time-interval based monitor function for dynamic insertion into and removal from a running application
JP4125056B2 (ja) * 2002-06-28 2008-07-23 キヤノン株式会社 ログ取得方法
US7293201B2 (en) * 2003-01-17 2007-11-06 Microsoft Corporation System and method for active diagnosis and self healing of software systems

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102308285A (zh) * 2011-07-26 2012-01-04 华为技术有限公司 一种应用程序的内存错误修复方法
WO2012106931A1 (zh) * 2011-07-26 2012-08-16 华为技术有限公司 一种应用程序的内存错误修复方法
CN102308285B (zh) * 2011-07-26 2013-08-28 华为技术有限公司 一种应用程序的内存错误修复方法
US9483336B2 (en) 2011-07-26 2016-11-01 Huawei Technologies Co., Ltd. Method for correcting memory error of application program
CN103593191A (zh) * 2013-11-19 2014-02-19 乐视致新电子科技(天津)有限公司 调用应用程序数据的方法和装置
CN113692577A (zh) * 2019-03-27 2021-11-23 亚马逊技术有限公司 延续工作流

Also Published As

Publication number Publication date
JP2008507767A (ja) 2008-03-13
KR20120079847A (ko) 2012-07-13
US20060020858A1 (en) 2006-01-26
KR20070041579A (ko) 2007-04-18
WO2006020094A2 (en) 2006-02-23
JP5128944B2 (ja) 2013-01-23
ES2681522T3 (es) 2018-09-13
EP1779245A2 (en) 2007-05-02
WO2006020094A3 (en) 2006-04-27
US7426661B2 (en) 2008-09-16
EP1779245B1 (en) 2018-06-13
CN100498725C (zh) 2009-06-10
KR101470712B1 (ko) 2014-12-08

Similar Documents

Publication Publication Date Title
CN100498725C (zh) 用于最小化计算机应用程序中的丢失的方法和***
CN105357038B (zh) 监控虚拟机集群的方法和***
CN103201724B (zh) 在高可用性虚拟机环境中提供高可用性应用程序
US7802128B2 (en) Method to avoid continuous application failovers in a cluster
EP2386951B1 (en) Failsafe mechanism for dynamic instrumentation of software using callbacks
US8589727B1 (en) Methods and apparatus for providing continuous availability of applications
US7934129B2 (en) Network hang recovery
CN110807064B (zh) Rac分布式数据库集群***中的数据恢复装置
KR20160044484A (ko) 클라우드 배치 기반구조 검증 엔진
WO2016188100A1 (zh) 信息***故障场景信息收集方法及***
CN102141947A (zh) 一种对采用嵌入式操作***的计算机应用***中异常任务的处理方法及***
US20080288812A1 (en) Cluster system and an error recovery method thereof
CN111880906A (zh) 虚拟机高可用性管理方法、***以及存储介质
CN109286529A (zh) 一种恢复RabbitMQ网络分区的方法及***
CN110413432B (zh) 一种信息处理方法、电子设备及存储介质
CN109144789A (zh) 一种重启osd的方法、装置及***
EP2645635A1 (en) Cluster monitor, method for monitoring a cluster, and computer-readable recording medium
US7340594B2 (en) Bios-level incident response system and method
Chen et al. Survivability modeling and analysis of cloud service in distributed data centers
KR100953732B1 (ko) 테스크 관리 장치
US8595349B1 (en) Method and apparatus for passive process monitoring
Alho et al. Patterns for light-weight fault tolerance and decoupled design in distributed control systems
CN110289977A (zh) 物流仓库***的故障检测方法及***、设备和存储介质
Deconinck et al. A framework backbone for software fault tolerance in embedded parallel applications
KR100206472B1 (ko) 전전자교환기에서 시스템 장애관리 및 복구방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT CORP.

Free format text: FORMER OWNER: SOFTRICITY INC.

Effective date: 20110425

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: MASSACHUSETTS, THE USA TO: WASHINGTON, THE USA

TR01 Transfer of patent right

Effective date of registration: 20110425

Address after: Washington State

Patentee after: Microsoft Corp.

Address before: Massachusetts, USA

Patentee before: Softricity Inc.

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150429

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150429

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.