IP Library Granted Patent US 7,207,047
Granted Patent B2
US 7,207,047 · App. 09/903,100 · Granted Apr 17, 2007

System and method for recovering applications

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,207,047
App. No.
09/903,100
Granted
Apr 17, 2007
Kind
B2
Abstract

An operating system has a top level exception handler which terminates an application as a default action upon receipt of any exceptions. An application recovery system traps an exception which is dispatched to the top level exception handler before it reaches the top level exception handler. In the event, an exception cannot be resolved, the application recovery system terminates a thread that caused the exception, and continues execution of the application.

Claims (61)

1. A method for recovering an application from a runtime fault, the method comprising steps of:

receiving an exception caused due to a runtime fault in a thread executing an instruction of a C++ based application;

dispatching the exception to an exception handler;

trapping the exception before the exception reaches the exception handler when the exception handler is a top level exception handler which terminates the application;

translating the trapped exception into a C++ exception that the C++ based application is capable of handling, wherein the trapped exception is translated into the C++ exception which is able to be resolved by an application defined C++ exception handler;

determining if there is an application based C++ exception handler which is capable of resolving the translated exception;

terminating the thread that caused the exception when there is no C++ based exception handler which is capable of resolving the translated exception;

calling an application defined callback that supplies application-specific handling which re-executes the instruction and continues at a next line of code of the application; and

continuing execution of the application.

2. The method recited in claim 1 , wherein the continuing step allows continuing execution of the application after the thread is terminated.

3. The method recited in claim 1 further comprising a step of logging state information representing the state that the application was in before occurrence of the exception caused the termination of the thread.

4. The method recited in claim 3 further comprising a step of forwarding the logged information to a remote database over a computer network.

5. The method recited in claim 4 further comprising steps of:

receiving a recommendation from the remote database; and

informing the recommendation to the user.

6. The method recited in claim 3 further comprising a step of forwarding a bug report to a bug report centre over a computer network.

7. A method for recovering an application from a runtime fault in a thread, the application being executed under an operating system having one or more low level exception handlers and a top level exception handler, the method comprising steps of:

trapping an exception that is dispatched to the top level exception handler before the exception reaches the top level exception handler, the exception being caused due to a runtime fault in a thread executing an instruction of a C++ based application, a default action of the top level exception handler being to terminate the application upon receipt of exceptions;

translating the trapped exception into a C++ exception that the C++ based application is capable of handling, wherein the trapped exception is translated into the C++ exception which is able to be resolved by an application based C++ exception handler;

the method further comprises a step of determining if there is an application based C++ exception handler which is capable of resolving the translated exception;

terminating the thread that caused the exception when there is no C++ based exception handler which is capable of resolving the translated exception;

calling an application defined callback that supplies application-specific handling which re-executes the instruction and continues at a next line of code of the application; and

continuing execution of the application.

8. The method recited in claim 7 further comprising a step of logging state information representing the state that the application was in before occurrence of the exception caused the termination of the thread.

9. The method recited in claim 8 further comprising a step of forwarding the logged information to a remote database over a computer network.

10. The method recited in claim 9 further comprising steps of:

receiving a recommendation from the remote database; and

informing the recommendation to the user.

11. The method recited in claim 8 further comprising a step of forwarding a bug report to a bug report centre over a computer network.

12. An application recovery system for recovering an application from a runtime fault, the application recovery system comprising:

a processor;

an exception dispatcher for receiving an exception caused due to a runtime fault in a thread executing an instruction of a C++ based application, and dispatching the exception to an exception handler;

an exception trapper for trapping the exception before the exception reaches the exception handler when the exception handler is a top level exception handler and causes termination of the application;

an exception translator for translating the exception trapped by the exception trapper into a C++ exception that the C++ based application is capable of handling;

a trapped exception handler for handling the trapped exception, the trapped exception handler having:

an exception handler selector for determining if there is an application based C++ exception handler that is capable of resolving the exception translated by the exception translator;

a thread terminator for terminating the thread when there is no C++ based exception handler that is capable of handling the translated exception;

a crash recovery manager for calling an application defined callback that supplies application-specific handling which re-executes the instruction and continues at a next line of code of the application; and

an executor for continuing execution of the application.

13. The application recover system as claimed in claim 12 , wherein the exception trapper is provided in place of a top level exception handler which terminates the application.

14. An application recovery system for recovering an application from a runtime fault caused in a thread, the application running under an operating system on a processor having an exception dispatcher, one or more low level exception handlers and a top level exception handler which terminates the application, the application recovery system comprising:

an exception trapper placed between the exception dispatcher and the top level exception handler for trapping an exception before the exception reaches the top level exception handler; the exception being caused due to a runtime fault in a thread executing an instruction of a C++ based application;

an exception translator for translating the trapped exception trapper into a C++ exception that the C++ based application is capable of handling; and

a trapped exception handler for handling the trapped exception, the trapped exception handler having:

an exception handler selector for determining if there is an application based C++ exception handler that is capable of resolving the exception translated by the exception translator;

a thread terminator for terminating the thread when there is no C++ based exception handler that is capable of handling the translated exception; and

a crash recovery manager for calling an application defined callback that supplies application-specific handling which re-executes the instruction and continues at a next line of code of the application.

15. The application recovery system recited in claim 14 , wherein the trapped exception handler further comprises a state restorer for restoring the state that the application was in before the fault occurred to continue the execution of the application.

16. The application recovery system recited in claim 14 further comprising a state information logger for logging information of the state that the application was in before the fault occurred.

17. The application recovery system recited in claim 16 further comprising a query generator for generating a query including the state information to query a recommendation from a remote database over a computer network.

18. The application recovery system as claimed in claim 17 further comprising a user advisor for receiving a recommendation from the remote database and informing the user of the recommendation.

19. The application recovery system as claimed in claim 17 wherein the query generator has a bug report generator for forwarding a bug report with the state information to a bug report centre.

20. A computer readable memory element storing the instructions or statements for use in the execution in a computer of a method for recovering an application from a runtime fault, the method comprising steps of:

receiving an exception caused due to a runtime fault in a thread executing an instruction of a C++ based application;

dispatching the exception to an exception handler;

trapping the exception before the exception reaches the exception handler when the exception handler is a top level exception handler which terminates the application;

translating the trapped exception into a C++ exception that the C++ application is capable of handling, wherein the trapped exception is translated into the C++ exception which is able to be resolved by an application defined C++ exception handler;

determining if there is an application based C++ exception handler which is capable of resolving the translated exception;

terminating the thread that caused the exception when there is no C++ based exception handler which is capable of resolving the translated exception;

calling an application defined callback that supplies application-specific handling which re-executes the instruction and continues at a next line of code of the application; and

continuing execution of the application.

Assignments (20)
TERMINATION AND RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded May 6, 2026
From: CANTOR FITZGERALD SECURITIES, AS COLLATERAL AGENT
To: CLEARSLIDE INC.; COREL CORPORATION (AS SUCCESSOR IN INTEREST TO CASCADE BIDCO CORP.)
Reel/Frame 075522/0510 →
RELEASE OF SECURITY INTEREST Recorded May 5, 2026
From: CITIBANK, N.A., AS AGENT
To: COREL CORPORATION; CASCADE BIDCO CORP.; COREL INC.; CLEARSLIDE INC.
Reel/Frame 075559/0953 →
SECURITY INTEREST Recorded Jul 3, 2019
From: CASCADE BIDCO CORP.; COREL INC.; CLEARSLIDE INC.
To: CITIBANK, N.A.
Reel/Frame 049678/0950 →
SECURITY INTEREST Recorded Jul 3, 2019
From: CASCADE BIDCO CORP.; COREL INC.; CLEARSLIDE INC.
To: CANTOR FITZGERALD SECURITIES
Reel/Frame 049678/0980 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 13, 2019
From: COREL SOFTWARE LLC
To: COREL CORPORATION
Reel/Frame 048067/0586 →
CHANGE OF NAME Recorded Nov 29, 2018
From: 8324450 CANADA INC.
To: COREL SOFTWARE LLC
Reel/Frame 047675/0950 →
ENTITY DOMICILE CHANGE Recorded Dec 17, 2014
From: 8324450 CANADA INC.
To: 8324450 DELAWARE LLC
Reel/Frame 034651/0817 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE, AND REPLACE THE ASSIGNMENT PREVIOUSLY RECORDED ON REEL 030427 FRAME 0331. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT TO 8324450 CANADA INC. Recorded Aug 1, 2013
From: COREL CORPORATION
To: 8324450 CANADA INC.
Reel/Frame 030986/0268 →
RELEASE OF SECURITY INTEREST Recorded Jun 11, 2013
From: JPMORGAN CHASE BANK, N.A.
To: COREL CORPORATION; COREL INC.; COREL HOLDINGS CORPORATION; WINZIP COMPUTING LP; WINZIP INTERNATIONAL LLC; WINZIP COMPUTING LLC
Reel/Frame 030591/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 17, 2013
From: VECTOR CC HOLDINGS, SRL; VECTOR CC HOLDINGS III, SRL; VECTOR CC HOLDINGS IV, SRL
To: 8324450 CANADA INC.
Reel/Frame 030427/0403 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 16, 2013
From: COREL CORPORATION
To: VECTOR CC HOLDINGS, SRL; VECTOR CC HOLDINGS III, SRL; VECTOR CC HOLDINGS IV, SRL
Reel/Frame 030427/0331 →
ASSIGNMENT AND ASSUMPTION Recorded Dec 29, 2006
From: MORGAN STANLEY & COMPANY INCORPORATED
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 018688/0422 →
SECURITY AGREEMENT Recorded May 19, 2006
From: COREL CORPORATION; COREL INC.; COREL HOLDINGS CORPORATION; WINZIP COMPUTING LLC; WINZIP INTERNATIONAL LLC; WINZIP COMPUTING LP
To: MORGAN STANLEY & COMPANY INC.
Reel/Frame 017656/0072 →
RELEASE OF SECURITY INTERESTS Recorded May 17, 2006
From: CREDIT SUISSE TORONTO BRANCH (FKA CREDIT SUISSE FIRST BOSTON TORONTO BRANCH)
To: COREL CORPORATION; COREL US HOLDINGS, LLC
Reel/Frame 017636/0417 →
SECOND LIEN SECURITY AGREEMENT Recorded Aug 2, 2005
From: COREL CORPORATION; COREL US HOLDINGS, LLC
To: CREDIT SUISSE FIRST BOSTON TORONTO BRANON
Reel/Frame 016784/0245 →
SECURITY AGREEMENT Recorded Feb 28, 2005
From: COREL CORPORATION
To: CREDIT SUISSE FIRST BOSTON TORONTO BRANCH
Reel/Frame 016309/0733 →
RELEASE OF SECURITY INTEREST Recorded Feb 17, 2005
From: WELLS FARGO FOOTHILL, INC.
To: COREL INC.; COREL CORPORATION
Reel/Frame 015687/0779 →
SECURITY INTEREST Recorded Jul 22, 2004
From: COREL CORPORATION
To: WELLS FARGO FOOTHILL, INC.
Reel/Frame 015596/0932 →
SECURITY INTEREST Recorded Oct 6, 2003
From: COREL CORPORATION, AN ONTARIO CORPORATION
To: WELLS FARGO FOOTHILL, INC.
Reel/Frame 014560/0455 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2002
From: SUBRAMANIAN, RAMESH; BIRCHALL, JAMES; VAN BEEK, ANDREW
To: COREL CORPORATION
Reel/Frame 012654/0608 →