# US 11,907,050 B1 · Automated event analysis

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,907,050 B1
- Document ID: US11907050B1
- Status: Granted
- Kind: B1
- Application number: 17/945,920
- Filed: 2022-09-15
- Granted: 2024-02-20
- Earliest claimed: 2022-09-15
- Assignees: GM Cruise Holdings LLC
- Applicants: GM Cruise Holdings LLC
- Inventors: Ishan Singh
- Web page: https://patentgrep.com/patent/US11907050B1

## CPC

- G06F 11/076: {by exceeding a count or rate limit, e.g. word- or bit count limit}
- G06F 11/0739: {in a data processing system embedded in automotive or aircraft systems}
- G06F 11/3688: {for test execution, e.g. scheduling of test suites}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Aspects of the subject technology relate to systems, methods, and computer-readable media for diagnosing faults in a software stack by running a subset of processes of the software stack. An existence of a fault associated with running a software stack is determined. The software stack includes a plurality of dependent processes. An incrementing larger subset of the software stack is run according to one or more error thresholds associated with executing corresponding dependent processes in the incrementing larger subset. The incrementing larger subset includes an increasing number of processes of the plurality of dependent processes. One or more sources of the fault are diagnosed based on the running of the incrementing larger subset of the software stack.

## Claims

### Claim 1

A method comprising:
determining an existence of a fault associated with running a software stack, the software stack including a plurality of dependent processes that are executed in a specific sequence of running the software stack in its entirety;
running, based on the existence of the fault, an incrementing larger subset of the software stack according to one or more error thresholds associated with executing corresponding dependent processes in the incrementing larger subset of the software stack, wherein the incrementing larger subset of the software stack includes an increasing number of processes of the plurality of dependent processes; and
automatically diagnosing one or more sources of the fault in the software stack based on running of the incrementing larger subset of the software stack.

### Claim 2 (depends on 1)

The method of claim 1, wherein the running of the incrementing larger subset of the software stack comprises iteratively running the incrementing larger subset of the software stack by:
adding a first process of the software stack to the incrementing larger subset of the software stack;
running the first process;
comparing a first number of errors from the running of the first process in the incrementing larger subset of the software stack to a first error threshold of one or more error thresholds;
adding a second process of the software stack to the incrementing larger subset of the software stack based on a comparison of the first number of errors to the first error threshold; and
running both the first process and the second process according to a corresponding portion of the specific sequence of running the software stack in its entirety based on the comparison of the first number of errors to the first error threshold.

### Claim 3 (depends on 2)

The method of claim 2, wherein the second process is directly after the first process in the specific sequence of running the software stack in its entirety.

### Claim 4 (depends on 2)

The method of claim 2, further comprising:
comparing a second number of errors from running of the second process during the running of both the first process and the second process together to a second error threshold of the one or more error thresholds; and
controlling the iterative running of the incrementing larger subset of the software stack based, at least in part, on a comparison of the second number of errors to the second error threshold.

### Claim 5 (depends on 2)

The method of claim 2, further comprising stopping the iterative running of the incrementing larger subset of the software stack if at least one of the one or more error thresholds is met.

### Claim 6 (depends on 2)

The method of claim 2, further comprising continuing the iterative running of the incrementing larger subset of the software stack irrespective of whether at least one of the one or more error thresholds is met.

### Claim 7 (depends on 1)

The method of claim 1, wherein the existence of the fault is determined by running the software stack in its entirety according to the specific sequence.

### Claim 8 (depends on 1)

The method of claim 1, wherein each of the one or more error thresholds are specific to a corresponding process of the plurality of dependent processes in the software stack.

### Claim 9 (depends on 1)

The method of claim 1, wherein the software stack is associated with controlled operation of an autonomous vehicle.

### Claim 10

A system comprising:
one or more processors; and
at least one computer-readable storage medium having stored therein instructions which, when executed by the one or more processors, cause the one or more processors to:
determine an existence of a fault associated with running a software stack, the software stack including a plurality of dependent processes that are executed in a specific sequence of running the software stack in its entirety;
run, based on the existence of the fault, an incrementing larger subset of the software stack according to one or more error thresholds associated with executing corresponding dependent processes in the incrementing larger subset of the software stack, wherein the incrementing larger subset of the software stack includes an increasing number of processes of the plurality of dependent processes; and
automatically diagnose one or more sources of the fault in the software stack based on running of the incrementing larger subset of the software stack.

### Claim 11 (depends on 10)

The system of claim 10, wherein the incrementing larger subset of the software stack is iteratively run and the instructions further cause the one or more processors, as part of iterative running of the incrementing larger subset of the software stack, to:
add a first process of the software stack to the incrementing larger subset of the software stack;
run the first process;
compare a first number of errors from the running of the first process to a first error threshold of one or more error thresholds;
add a second process of the software stack to the incrementing larger subset of the software stack based on a comparison of the first number of errors to the first error threshold; and
run both the first process and the second process according to a corresponding portion of the specific sequence of running the software stack in its entirety based on a comparison of the first number of errors to the first error threshold.

### Claim 12 (depends on 11)

The system of claim 11, wherein the second process is directly after the first process in the specific sequence of running the software stack in its entirety.

### Claim 13 (depends on 11)

The system of claim 11, wherein the instructions further cause the one or more processors to:
compare a second number of errors from running of the second process during the running of both the first process and the second process together to a second error threshold of the one or more error thresholds; and
control the iterative running of the incrementing larger subset of the software stack based, at least in part, on a comparison of the second number of errors to the second error threshold.

### Claim 14 (depends on 11)

The system of claim 11, wherein the instructions further cause the one or more processors to stop the iterative running of the incrementing larger subset of the software stack if at least one of the one or more error thresholds is met.

### Claim 15 (depends on 11)

The system of claim 11, wherein the instructions further cause the one or more processors to continue the iterative running of the incrementing larger subset of the software stack irrespective of whether at least one of the one or more error thresholds is met.

### Claim 16 (depends on 10)

The system of claim 10, wherein the existence of the fault is determined by running the software stack in its entirety according to the specific sequence.

### Claim 17 (depends on 10)

The system of claim 10, wherein each of the one or more error thresholds are specific to a corresponding process of the plurality of dependent processes in the software stack.

### Claim 18 (depends on 10)

The system of claim 10, wherein the software stack is associated with controlled operation of an autonomous vehicle.

### Claim 19

A non-transitory computer-readable storage medium having stored therein instructions which, when executed by one or more processors, cause the one or more processors to:
determine an existence of a fault associated with running a software stack, the software stack including a plurality of dependent processes that are executed in a specific sequence of running the software stack in its entirety;
run, based on the existence of the fault, an incrementing larger subset of the software stack according to one or more error thresholds associated with executing corresponding dependent processes in the incrementing larger subset of the software stack, wherein the incrementing larger subset of the software stack includes an increasing number of processes of the plurality of dependent processes; and
automatically diagnose one or more sources of the fault in the software stack based on running of the incrementing larger subset of the software stack.

### Claim 20 (depends on 19)

The non-transitory computer-readable storage medium of claim 19, wherein the incrementing larger subset of the software stack is iteratively run and the instructions further cause the one or more processors, as part of iterative running of the incrementing larger subset of the software stack, to:
add a first process of the software stack to the incrementing larger subset of the software stack;
run the first process;
compare a first number of errors from the running of the first process to a first error threshold;
add a second process of the software stack to the incrementing larger subset of the software stack based on a comparison of the first number of errors to the first error threshold; and
run both the first process and the second process according to a corresponding portion of the specific sequence of running the software stack in its entirety based on the comparison of the first number of errors to the first error threshold.
