IP Library Granted Patent US 8,626,904
Granted Patent B1
US 8,626,904 · App. 13/044,453 · Granted Jan 7, 2014

Detecting and reporting livelocks in a computer

Inventor: Michael Anthony Olliff (Canyon Country, CA)
Assignee: Symantec Corporation
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 8,626,904
App. No.
13/044,453
Granted
Jan 7, 2014
Kind
B1
Abstract

Tasks executing on a computer can livelock. To detect a livelocked task, the amount of computing resources consumed by the task is sampled to determine whether the task is consuming an inordinate amount of resources. In addition, the task is examined to determine whether it is making tangible progress. This examination can include inspecting registers of a processor executing the task. If the task is livelocked, state data describing the livelock event is collected. The state data can include a memory dump describing the state of the livelocked task and data describing other tasks executing on the computer. A livelock report including the collected state data is generated and transmitted to a server.

Claims (78)

1. A computer-implemented method of reporting a livelock event occurring on a computer, comprising:

specifying a threshold amount of a computing resource used to determine whether a task executing on the computer is livelocked in response to past computing resource consumption by the task, wherein different threshold amounts of the computing resource are specified for different tasks;

in response to resource consumption by the task exceeding the threshold amount of the computing resource, detecting a livelock event involving the task executing on the computer by performing at least one inspection from a set of inspections of registers of a processor executing the task to determine that the task is not making tangible progress, the set of inspections consisting of:

determining whether contents of multiple ones of the registers are changing over time;

determining whether the registers indicate that the task is stuck in a counting state; and

determining whether the register contents are changing in a cyclical pattern;

collecting state data describing the detected livelock event;

generating a livelock report including the collected state data; and

transmitting the livelock report to a server.

2. The method of claim 1 , wherein detecting the livelock event involving the task executing on the computer comprises:

detecting that the task is not making tangible progress according to at least one inspection while resource consumption by the task exceeds the threshold amount of the computing resource.

3. The method of claim 1 , wherein detecting the livelock event involving the task executing on the computer comprises:

periodically sampling to determine an amount of the computing resource being consumed by the task to produce sequential samples; and

performing the at least one inspection in response to determining whether the task consumes more than the threshold amount of the computing resource in each of a threshold number of sequential samples.

4. The method of claim 3 , further comprising:

determining whether a user of the computer is idle; and

varying the threshold number of sequential samples responsive to whether the user of the computer is idle.

5. The method of claim 1 , wherein collecting state data describing the detected livelock event comprises collecting one or more from the set consisting of:

a memory dump describing a state of the livelocked task;

logs from one or more applications executing on the computer when the livelock is detected; and

data describing other tasks executing on the computer when the livelock is detected.

6. The method of claim 1 , wherein generating a livelock report comprises:

collecting identification data uniquely identifying the livelock event; and

generating a hash of the identification data, the hash generated such that similar livelock events have similar hashes.

7. A non-transitory computer-readable storage medium storing executable computer program instructions for reporting a livelock event occurring on a computer, the instructions performing steps comprising:

specifying a threshold amount of a computing resource used to determine whether a task executing on the computer is livelocked in response to past computing resource consumption by the task, wherein different threshold amounts of the computing resource are specified for different tasks;

in response to resource consumption by the task exceeding the threshold amount of the computing resource, detecting a livelock event involving the task executing on the computer by performing at least one inspection from a set of inspections on registers of a processor executing the task to determine that the task is not making tangible progress, the set of inspections consisting of:

determining whether contents of multiple ones of the registers are changing over time;

determining whether the registers indicate that the task is stuck in a counting state; and

determining whether the register contents are changing in a cyclical pattern;

collecting state data describing the detected livelock event;

generating a livelock report including the collected state data; and

transmitting the livelock report to a server.

8. The storage medium of claim 7 , wherein detecting the livelock event involving the task executing on the computer comprises:

detecting that the task is not making tangible progress according to at least one inspection while resource consumption of the task exceeds the threshold amount of the computing resource.

9. The storage medium of claim 8 , wherein detecting the livelock event involving the task executing on the computer comprises:

periodically sampling to determine an amount of the computing resource being consumed by the task to produce sequential samples; and

performing the at least one inspection in response to determining whether the task consumes more than the threshold amount of the computing resource in each of a threshold number of sequential samples.

10. The storage medium of claim 7 , wherein collecting state data describing the detected livelock event comprises collecting one or more from the set consisting of:

a memory dump describing a state of the livelocked task;

logs from one or more applications executing on the computer when the livelock is detected; and

data describing other tasks executing on the computer when the livelock is detected.

11. The storage medium of claim 7 , wherein generating a livelock report comprises:

collecting identification data uniquely identifying the livelock event; and generating a hash of the identification data, the hash generated such that similar livelock events have similar hashes.

12. A computer system for reporting a livelock event, the computer system comprising:

a non-transitory computer-readable storage medium storing executable computer program instructions for performing steps comprising:

specifying a threshold amount of a computing resource used to determine whether a task executing on the computer is livelocked in response to past computing resource consumption by the task, wherein different threshold amounts of the computing resource are specified for different tasks;

in response to resource consumption by the task exceeding the threshold amount of the computing resource, detecting a livelock event involving the task executing on the computer by performing at least one inspection from a set of inspections on registers of a processor executing the task to determine that the task is not making tangible progress, the set of inspections consisting of:

determining whether contents of multiple ones of the registers are changing over time;

determining whether the registers indicate that the task is stuck in a counting state; and

determining whether the register contents are changing in a cyclical pattern;

collecting state data describing the detected livelock event;

generating a livelock report including the collected state data;

transmitting the livelock report to a server; and

a processor for executing the computer program instructions.

13. The computer system of claim 12 , wherein detecting the livelock event involving the task executing on the computer comprises:

detecting that the task is not making tangible progress according to at least one inspection while resource consumption of the task exceeds the threshold amount of the computing resource.

14. The computer system of claim 12 , wherein detecting the livelock event involving the task executing on the computer comprises:

periodically sampling to determine an amount of the computing resource being consumed by the task to produce sequential samples; and

performing the at least one inspection in response to determining whether the task consumes more than the threshold amount of the computing resource in each of a threshold number of sequential samples.

15. The method of claim 1 , further comprising:

determining whether a user of the computer is idle in response to whether a monitored input is received within a specified time interval; and

specifying the threshold amount of computing resource used to determine whether the task executing on the computer is livelocked in response to whether the user of the computer is idle.

16. The method of claim 1 , further comprising:

determining a number of tasks being performed simultaneously by the processor; and

specifying the threshold amount of computing resource used to determine whether the task executing on the computer is livelocked in response to the number of tasks being performed simultaneously by the processor.

17. The storage medium of claim 7 , further comprising:

determining whether a user of the computer is idle in response to whether a monitored input is received within a specified time interval; and

specifying the threshold amount of computing resource used to determine whether the task executing on the computer is livelocked in response to whether the user of the computer is idle.

18. The storage medium of claim 7 , further comprising:

determining a number of tasks being performed simultaneously by the processor; and

specifying the threshold amount of computing resource used to determine whether the task executing on the computer is livelocked in response to the number of tasks being performed simultaneously by the processor.

19. The computer system of claim 12 , further comprising:

determining whether a user of the computer is idle in response to whether a monitored input is received within a specified time interval; and

specifying the threshold amount of computing resource used to determine whether the task executing on the computer is livelocked in response to whether the user of the computer is idle.

20. The computer system of claim 12 , further comprising:

determining a number of tasks being performed simultaneously by the processor; and

specifying the threshold amount of computing resource used to determine whether the task executing on the computer is livelocked in response to the number of tasks being performed simultaneously by the processor.

Assignments (5)
NOTICE OF SUCCESSION OF AGENCY (REEL 050926 / FRAME 0560) Recorded Sep 13, 2022
From: JPMORGAN CHASE BANK, N.A.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 061422/0371 →
SECURITY AGREEMENT Recorded Sep 13, 2022
From: NORTONLIFELOCK INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062220/0001 →
CHANGE OF NAME Recorded Jun 18, 2020
From: SYMANTEC CORPORATION
To: NORTONLIFELOCK INC.
Reel/Frame 053306/0878 →
SECURITY AGREEMENT Recorded Nov 4, 2019
From: SYMANTEC CORPORATION; BLUE COAT LLC; LIFELOCK, INC,; SYMANTEC OPERATING CORPORATION
To: JPMORGAN, N.A.
Reel/Frame 050926/0560 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 10, 2011
From: OLLIFF, MICHAEL ANTHONY
To: SYMANTEC CORPORATION
Reel/Frame 025963/0679 →