IP Library Granted Patent US 10,831,605
Granted Patent B2
US 10,831,605 · App. 16/019,234 · Granted Nov 10, 2020

System and method for detection of, prevention of, and recovery from software execution failure

Inventors: Todd Kulick (Mountain View, CA); Igor Pichkov (Mountain View, CA)
Assignee: Rovi Guides, Inc.
G06F11/1417G06F8/65G06F11/366
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 10,831,605
App. No.
16/019,234
Granted
Nov 10, 2020
Kind
B2
Abstract

Systems and methods are disclosed herein for monitoring, detecting, and mitigating hardware and software failures. An error detection module monitors the execution of software processes and detects failures of the monitored processes. The error detection module may monitor reboot events and correlate reboot events with failures of the monitored software processes. If a monitored process fails, the error detection module may log the failure and its cause. If the same process has failed numerous times, causing the user device to experience a reboot loop, remedial action may be taken based on the cause of the failure.

Claims (98)

1. A method for handling software execution failures on a user device, the method comprising:

monitoring execution of a software process on the user device;

detecting a first reboot of the user device;

determining whether the first reboot was caused by a first failure of the software process;

in response to determining that the first reboot was caused by the first failure of the software process:

determining a cause of the first failure; and

incrementing a counter associated with the cause of the first failure;

detecting, within a threshold period of time of the first reboot, a second reboot of the user device;

determining whether the second reboot was caused by a second failure of the software process; and

in response to determining that the second reboot was caused by the second failure of the software process:

determining a cause of the second failure;

determining whether the cause of the second failure is the same as the cause of the first failure and that the cause of the first and second failures is a prerequisite process not having been completed; and

in response to determining that the cause of the second failure is the same as the cause of the first failure, and that the cause of the first and second failures is a prerequisite process having not been completed:

incrementing the counter;

comparing the counter to a failure threshold;

determining, based on the comparing, whether the counter exceeds the failure threshold;

in response to determining that the counter exceeds the failure threshold, determining that the user device is experiencing a reboot loop; and

in response to determining that the user device is experiencing a reboot loop:

determining, based on the cause of the second failure, a remedial action, wherein the remedial action comprises slowing a speed at which the software process is executed to allow the prerequisite process to complete prior to execution of the software process; and

performing the remedial action.

2. The method of claim 1 , wherein the second failure prevents the execution of a subsequent process, the method further comprising:

determining whether the counter exceeds a low-failure threshold;

in response to determining that the counter exceeds the low-failure threshold, preventing execution of the software process; and

in response to determining that the counter exceeds both the low-failure threshold and a high-failure threshold, transmitting, to a server, a request for assistance.

3. The method of claim 1 , wherein:

determining the remedial action comprises determining to execute a limited boot process; and wherein

the method further comprises transmitting, to a server, a request for a software update.

4. The method of claim 1 , wherein:

monitoring execution of the software process comprises monitoring a plurality of steps of the software process; wherein

determining the cause of the second failure comprises detecting the second failure at a first step; and wherein

determining the remedial action comprises determining to begin the software process at a second step that follows the first step.

5. The method of claim 1 , wherein:

the software process processes a data file received from a server; wherein

determining the cause of the failure comprises determining that the data file cannot be processed by the software process; and wherein

determining the remedial action comprises determining to:

prevent the software process from processing the data file; and

transmit, to the server, a message indicating that the data file could not be processed.

6. The method of claim 1 , wherein determining the cause of the first failure further comprises:

determining a point during the software process at which the first failure occurred;

determining an action to be taken at the point during the software process at which the first failure occurred; and

determining, based on the action, that the cause of the first failure is associated with the action.

7. The method of claim 1 , wherein the software process stores status information related to the execution and failure of the software process in a data structure.

8. The method of claim 7 , wherein determining the cause of the first failure further comprises:

determining a time at which the first failure occurred;

accessing the data structure;

determining status information having a timestamp at or near the determined time at which the failure occurred; and

determining, based on the status information, the cause of the first failure.

9. The method of claim 1 , wherein the software process is a virtual software process encompassing a plurality of software processes.

10. A system for handling software execution failures on a user device, the system comprising a user device having:

memory; and

control circuitry configured to:

monitor execution of a software process on the user device;

detect a first reboot of the user device;

determine whether the first reboot was caused by a first failure of the software process;

in response to determining that the first reboot was caused by the first failure of the software process:

determine a cause of the first failure; and

increment a counter, stored in the memory, associated with the cause of the first failure;

detect, within a threshold period of time of the first reboot, a second reboot of the user device;

determine whether the second reboot was caused by a second failure of the software process; and

in response to determining that the second reboot was caused by the second failure of the software process:

determine a cause of the second failure;

determine whether the cause of the second failure is the same as the cause of the first failure and that the cause of the first and second failures is a prerequisite process not having been completed; and

in response to determining that the cause of the second failure is the same as the cause of the first failure and that the cause of the first and second failures is a prerequisite process not having been completed:

increment the counter;

compare the counter to a failure threshold;

determine, based on the comparing, whether the counter exceeds the failure threshold;

in response to determining that the counter exceeds the failure threshold, determine that the user device is experiencing a reboot loop; and

in response to determining that the user device is experiencing a reboot loop:

 determine, based on the cause of the second failure, a remedial action, wherein the remedial action comprises slowing a speed at which the software process is executed to allow the prerequisite process to complete prior to execution of the software process; and

 perform the remedial action.

11. The system of claim 10 , wherein the second failure prevents the execution of a subsequent process, and wherein the control circuitry is further configured to:

determine whether the counter exceeds a low-failure threshold;

in response to determining that the counter exceeds the low-failure threshold, prevent execution of the software process; and

in response to determining that the counter exceeds both the low-failure threshold and a high-failure threshold, transmit, to a server, a request for assistance.

12. The system of claim 10 , wherein:

the control circuitry is further configured, when determining the remedial action, to determine to execute a limited boot process; and wherein

the control circuitry is further configured to transmit, to a server, a request for a software update.

13. The system of claim 10 , wherein:

the control circuitry is further configured, when monitoring execution of the software process, to monitor a plurality of steps of the software process; wherein

the control circuitry is further configured, when determining the cause of the second failure, to detect the second failure at a first step; and wherein

the control circuitry is further configured, when determining the remedial action, to determine to begin the software process at a second step that follows the first step.

14. The system of claim 10 , wherein:

the software process processes a data file received from a server; wherein

the control circuitry is further configured, when determining the cause of the failure, to determine that the data file cannot be processed by the software process; and wherein

the control circuitry is further configured, when determining the remedial action, to:

prevent the software process from processing the data file; and

transmit, to the server, a message indicating that the data file could not be processed.

15. The system of claim 10 , wherein the control circuitry is further configured, when determining the cause of the first failure, to:

determine a point during the software process at which the first failure occurred;

determine an action to be taken at the point during the software process at which the first failure occurred; and

determine, based on the action, that the cause of the first failure is associated with the action.

16. The system of claim 10 , wherein the software process stores status information related to the execution and failure of the software process in a data structure.

17. The system of claim 16 , wherein the control circuitry is further configured, when determining the cause of the first failure, to:

determine a time at which the first failure occurred;

access the data structure;

determine status information having a timestamp at or near the determined time at which the failure occurred; and

determine, based on the status information, the cause of the first failure.

18. The system of claim 10 , wherein the software process is a virtual software process encompassing a plurality of software processes.

Assignments (7)
CHANGE OF NAME Recorded Oct 3, 2024
From: ROVI GUIDES, INC.
To: ADEIA GUIDES INC.
Reel/Frame 069106/0164 →
RELEASE OF SECURITY INTEREST Recorded Jun 5, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
Reel/Frame 053481/0790 →
RELEASE OF SECURITY INTEREST Recorded Jun 5, 2020
From: HPS INVESTMENT PARTNERS, LLC
To: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
Reel/Frame 053458/0749 →
SECURITY INTEREST Recorded Jun 1, 2020
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS INC.; VEVEO, INC.; INVENSAS CORPORATION; INVENSAS BONDING TECHNOLOGIES, INC.; TESSERA, INC.; TESSERA ADVANCED TECHNOLOGIES, INC.; DTS, INC.; PHORUS, INC.; IBIQUITY DIGITAL CORPORATION
To: BANK OF AMERICA, N.A.
Reel/Frame 053468/0001 →
PATENT SECURITY AGREEMENT Recorded Nov 25, 2019
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 051110/0006 →
SECURITY INTEREST Recorded Nov 22, 2019
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
To: HPS INVESTMENT PARTNERS, LLC, AS COLLATERAL AGENT
Reel/Frame 051143/0468 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 27, 2018
From: KULICK, TODD; PICHKOV, IGOR
To: ROVI GUIDES, INC.
Reel/Frame 046218/0059 →
Continuity (2)
Provisional Application 62663762 · Apr 27, 2018
Related Publication 20190332481A1 · Oct 31, 2019