# US 7,610,514 B2 · Identification of uninformative function names in call-stack traces

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

- Number: US 7,610,514 B2
- Document ID: US7610514B2
- Status: Granted
- Kind: B2
- Application number: 11/428,751
- Filed: 2006-07-05
- Published: 2008-01-10
- Granted: 2009-10-27
- Earliest claimed: 2006-07-05
- Assignees: International Business Machines Corporation
- Inventors: Natwar Modani; Rajeev Gupta
- Web page: https://patentgrep.com/patent/US7610514B2

## CPC

- G06F 11/36: Prevention of errors by analysis, debugging or testing of software
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for identifying names of uninformative functions in call-stack traces is described. The method comprises the steps of obtaining a set of call-stacks and information indicative of which call-stack traces in the set match a particular call-stack trace; for each matching call-stack trace pair, incrementing a false negative counter for each function name above a first matching function name in a respective call-stack trace pair; for each non-matching call-stack trace pair, incrementing a false positive counter for each function name above a first non-matching function name in a respective call-stack pair; incrementing a frequency counter for each function name appearing in each of the call-stack traces; calculating an aggregate value for each of the function names as a function of respective ones of the false positive counter, the false negative counter and the frequency counter; and identifying uninformative ones of the function names based on the respective aggregate values. The method may be used to diagnose software problems based on known software problems and is useful in helpdesk and autonomic computing applications. A system and a computer program product for performing the method are also described.

## Claims

### Claim 1

A computer-implemented method for identifying names of uninformative functions in call-stack traces, said method comprising the steps of:
using said computer, obtaining a set of call-stacks and information indicative of which call-stack traces in said set match a particular call-stack trace;
using said computer, for each matching call-stack trace pair, incrementing a false negative counter for each function name above a first matching function name in a respective call-stack trace pair;
using said computer, for each non-matching call-stack trace pair, incrementing a false positive counter for each function name above a first non-matching function name in a respective call-stack pair;
using said computer, incrementing a frequency counter for each function name appearing in each of said call-stack traces;
using said computer, calculating an aggregate value for each of said function names as a function of respective ones of said false positive counter, said false negative counter and said frequency counter; and
using said computer, identifying uninformative ones of said function names based on the respective aggregate values.

### Claim 2 (depends on 1)

The method of claim 1, wherein said uninformative function names are identified based on a comparison of said aggregate values to a threshold value.

### Claim 3 (depends on 1)

The method of claim 1, wherein said uninformative function names are identified based on a comparison of said aggregate values.

### Claim 4 (depends on 1)

The method of claim 1, wherein said set of call-stack traces and said information indicative of which call-stack traces in said set match a particular call-stack trace are obtained from a repository of known software problems based on an index and a match ranking score associated with each said particular call-stack trace which exceeds a threshold ranking score.

### Claim 5 (depends on 1)

The method of claim 1, wherein call-stack traces in a matching call-stack trace pair both relate to a common software problem.

### Claim 6 (depends on 1)

The method of claim 1, wherein call-stack traces in a non-matching call-stack trace pair relate to different software problems.

### Claim 7 (depends on 1)

The method of claim 1, comprising the step of incrementing said false positive counter for each function name in a pair of identical call-stack traces.

### Claim 8 (depends on 1)

The method of claim 1, comprising the step of incrementing said false negative counter for each function name in a pair of call-stack traces that have no matching function names.

### Claim 9 (depends on 1)

The method of claim 1, wherein said aggregate values are calculated in accordance with the formulae:
Fƒ=w1*FPCƒ+w2*FNCƒ+w3*FCƒ;
wherein:
Fƒ is an aggregate value relating to whether function name ƒ is an uninformative function;
FPCƒ is a false positive counter for function name ƒ;
FNCƒ is a false negative counter for function name ƒ;
FCƒ is a frequency counter for function name ƒ; and
w1, w2, and w3 are weight values.

### Claim 10 (depends on 9)

The method of claim 9, wherein said weights are determined in accordance with a penalty incurred by the system based on said false positive as compared to a penalty incurred by the system based on said false negative.

### Claim 11 (depends on 9)

The method of claim 9, wherein said weights are determined in accordance with the formulae:
w1=1/SUM(FPC);
w2=1/SUM(FNC); and
w3=1/SUM(FC).

### Claim 12 (depends on 9)

The method of claim 9, wherein said weights are determined in accordance with the formulae:
w1=1/FPCmax;
w2=1/FNCmax; and
w3=1/FCmax.

### Claim 13

A computer system for identifying names of uninformative functions in call-stack traces, said system comprising:
a repository for storing call-stack traces relating to known software problems; and
a computer system coupled to said repository, said computer system comprising a memory unit for storing data and instructions to be performed by a processing unit and a processing unit coupled to said memory unit, said processing unit programmed to:
obtain, from said repository, a set of call-stack traces and information indicative of which call-stack traces in said set match a particular call-stack trace;
for each matching call-stack trace pair, increment a false negative counter for each function name above a first matching function name in a respective call-stack trace pair;
for each non-matching call-stack trace pair, increment a false positive counter for each function name above a first non-matching function name in a respective call-stack trace pair;
increment a frequency counter for each function name appearing in each of said call-stack traces;
calculate an aggregate value for each of said function names as a function of respective ones of said false positive counter, said false negative counter and said frequency counter; and
identify uninformative ones of said function names based on the respective aggregate values.

### Claim 14 (depends on 13)

The computer system of claim 13, wherein said processing unit is further programmed to increment said false positive counter for each function name in a pair of identical call-stack traces.

### Claim 15 (depends on 13)

The computer system of claim 13, wherein said processing unit is further programmed to increment said false negative counter for each function name in a pair of call-stack traces that have no matching function names.

### Claim 16 (depends on 13)

The computer system of claim 13, wherein said processing unit is programmed to calculate said aggregate values in accordance with the formula:
Fƒ=w1*FPCƒ+w2*FNCƒ+w3*FCƒ;
wherein:
Fƒ is an aggregate value relating to whether function name ƒ is an uninformative function;
FPCƒ is a false positive counter for function name ƒ;
FNCƒ is a false negative counter for function name ƒ;
FCƒ is a frequency counter for function name ƒ; and
w1, w2, and w3 are weight values.

### Claim 17

A computer program product comprising a computer readable medium comprising a computer program recorded therein for identifying names of uninformative functions in call-stack traces, said computer program product comprising:
computer program code for obtaining a set of call-stack traces and information indicative of which call-stack traces in said set match a particular call-stack trace;
computer program code for, for each matching call-stack trace pair, incrementing a false negative counter for each function name above a first matching function name in a respective call-stack trace pair;
computer program code for, for each non-matching call-stack trace pair, incrementing a false positive counter for each function name above a first non-matching function name in a respective call-stack trace pair;
computer program code for incrementing a frequency counter for each function name appearing in each of said call-stack traces;
computer program code for calculating an aggregate value for each of said function names as a function of respective ones of said false positive counter, said false negative counter and said frequency counter; and
computer program code for identifying uninformative ones of said function names based on the respective aggregate values.

### Claim 18 (depends on 17)

The computer program product of claim 17, further comprising computer program code for incrementing said false positive counter for each function name in a pair of identical call-stack traces.

### Claim 19 (depends on 17)

The computer program product of claim 17, further comprising computer program code for incrementing said false negative counter for each function name in a pair of call-stack traces that have no matching function names.

### Claim 20 (depends on 17)

The computer program product of claim 17, further comprising computer program code for calculating said aggregate values in accordance with the formula:
Fƒ=w1*FPCƒ+w2*FNCƒ+w3*FCƒ;
wherein:
Fƒ is an aggregate value relating to whether function name f is an uninformative function;
FPCƒ is a false positive counter for function name ƒ;
FNCƒ is a false negative counter for function name ƒ;
FCƒ is a frequency counter for function name ƒ; and
w1, w2, and w3 are weight values.

### Claim 21 (depends on 1)

The method of claim 1, wherein said aggregate values comprise probability values.

### Claim 22 (depends on 13)

The computer system of claim 13, wherein said aggregate values comprise probability values.

### Claim 23 (depends on 17)

The computer program product of claim 17, wherein said aggregate values comprise probability values.
