Root Cause Checklist
-
Design errors
-
Data structures
-
A data definition is missing.
-
A data definition is incorrect.
-
A data definition is unclear.
-
A data definition is contradictory.
-
A data definition is out of order.
-
A shared-data access control is missing.
-
A shared-data access control is incorrect.
-
A shared-data access control is out of order.
-
Algorithms
-
A logic sequence is missing.
-
A logic sequence is superfluous.
-
A logic sequence is incorrect.
-
A logic sequence is out of order.
-
An input check is missing.
-
An input check is superfluous.
-
An input check is incorrect.
-
An input check is out of order.
-
An output definition is missing.
-
An output definition is superfluous.
-
An output definition is incorrect.
-
An output definition is out of order.
-
A special-condition handler is missing.
-
A special-condition handler is superfluous.
-
A special-condition handler is incorrect.
-
A special-condition handler is out of order.
-
User-interface specification
-
An assumption about the user is invalid.
-
A specification item is missing.
-
A specification item is superfluous.
-
A specification item is incorrect.
-
A specification item is unclear.
-
Specification items are out of order.
-
Software-interface specification
-
An assumption about collateral software is invalid.
-
A specification item is missing.
-
A specification item is superfluous.
-
A specification item is incorrect.
-
A specification item is unclear.
-
Specification items are out of order.
-
Hardware-interface specification
-
An assumption about the hardware is invalid.
-
A specification item is missing.
-
A specification item is superfluous.
-
A specification item is incorrect.
-
A specification item is unclear.
-
Specification items are out of order.
-
Coding errors
-
Initialization errors
-
A simple variable is always uninitialized.
-
A simple variable is sometimes uninitialized.
-
A simple variable is initialized with the wrong value.
-
An aggregate variable is always uninitialized.
-
An aggregate variable is sometimes uninitialized.
-
An aggregate variable is initialized with the wrong value.
-
An aggregate variable is partially uninitialized.
-
An aggregate variable is not allocated.
-
An aggregate variable is allocated the wrong size.
-
A resource is not allocated.
-
Finalization errors
-
An aggregate variable is not freed.
-
A resource is not freed.
-
Binding Errors
-
A variable is declared with the wrong scope.
-
A procedure call is missing arguments.
-
A procedure call has the wrong argument order.
-
A procedure call has extra arguments.
-
The actual argument passing mechanism does not match the usage of the formal argument.
-
A procedure returns no value.
-
A procedure returns the wrong value.
-
Reference errors
-
The wrong procedure is called.
-
The wrong variable is referenced.
-
The wrong constant is referenced.
-
The wrong variable is assigned.
-
A variable is not assigned.
-
Static data-structure problems
-
A simple variable has the wrong data type.
-
An element of an aggregate variable has the wrong data type.
-
An aggregate variable has the wrong aggregate size.
-
Dynamic data-structure problems
-
An array subscript is out of bounds.
-
An array subscript is incorrect.
-
An uninitialized pointer has been dereferenced.
-
A null pointer has been dereferenced.
-
A pointer to freed memory has been dereferenced.
-
An uninitialized pointer has been freed.
-
A pointer stored in freed memory has been dereferenced.
-
A null pointer has been freed.
-
A pointer to freed memory has been freed.
-
A pointer to static memory has been freed.
-
A pointer to automatic (stack) memory has been freed.
-
Object-oriented problems
-
A class containing dynamically allocated memory does not have the required methods.
-
A base class has methods declared incorrectly for the derived class to override.
-
The wrong method signature is used to invoke an overloaded method.
-
A method from the wrong class in the inheritance hierarchy is used.
-
A derived class does not completely implement the required functionality.
-
Memory problems
-
Memory is corrupted.
-
The stack is corrupted.
-
The stack overflows.
-
The heap is corrupted.
-
A pointer is invalid for the address space.
-
An address has an invalid alignment.
-
Missing operations
-
A return code or flag has not been set.
-
A return code or flag has not been checked.
-
An exception has not been thrown.
-
An exception thrown has not been handled.
-
An event sequence has not been anticipated.
-
A program state has not been anticipated.
-
Statements are missing.
-
Procedure calls are missing.
-
Extra operations
-
A return code or flag is set when not needed.
-
An exception is thrown when not valid.
-
Extraneous statements are executed.
-
Extraneous procedure calls are executed.
-
Control-flow problems
-
Statements are controlled by the wrong control-flow condition.
-
Loop iterations are off by one.
-
A loop terminates prematurely.
-
A loop runs indefinitely.
-
A case in a multiway branch is missing.
-
A multiway branch takes the wrong case.
-
A statement is executed too many times.
-
A statement is executed too few times.
-
Value-corruption problems
-
An arithmetic operation has underflow or overflow.
-
Precision is lost.
-
Signed and unsigned integers are mixed.
-
Floating-point numbers are compared incorrectly.
-
Invalid expressions
-
The wrong variable is used.
-
Operator input is invalid.
-
The wrong arithmetic operator is used.
-
The wrong arithmetic expression order is used.
-
The wrong relational operator is used.
-
The wrong relational expression order is used.
-
The wrong Boolean operator is used.
-
The wrong Boolean expression order is used.
-
A term is missing.
-
There is an extra term.
-
Typographical errors
-
Characters are missing.
-
There are extra characters.
-
Characters are out of order.
-
Other people's problems
-
A compiler has been used incorrectly.
-
A software tool has been used incorrectly.
-
A system library has been used incorrectly.
-
A third-party library has been used incorrectly.
-
There is a defect in a system library.
-
There is a defect in a compiler.
-
There is a defect in a software tool.
-
There is a defect in the operating system.
-
There is a defect in the third-party software.