Publication | Closed Access
Isolating cause-effect chains from computer programs
531
Citations
21
References
2002
Year
Unknown Venue
Software MaintenanceCause-effect ChainsRoot Cause AnalysisProgram CheckingEngineeringVerificationSoftware EngineeringSoftware AnalysisFormal VerificationCausal InferenceDelta DebuggingDelta Debugging AlgorithmCompilersProgram StateCausal ModelComputer EngineeringComputer ScienceDebuggerStatic Program AnalysisSoftware DesignFault InjectionProgram AnalysisSoftware TestingFormal MethodsCausalitySymbolic ExecutionSystem Software
Consider the execution of a failing program as a sequence of program states. Each state induces the following state, up to the failure. Which variables and values of a program state are relevant for the failure? We show how the Delta Debugging algorithm isolates the relevant variables and values by systematically narrowing the state difference between a passing run and a failing run---by assessing the outcome of altered executions to determine wether a change in the program state makes a difference in the test outcome. Applying Delta Debugging to multiple states of the program automatically reveals the cause-effect chain of the failure---that is, the variables and values that caused the failure.In a case study, our prototype implementation successfully isolated the cause-effect chain for a failure of the GNU C compiler: "Initially, the C program to be compiled contained an addition of 1.0; this caused an addition operator in the intermediate RTL representation; this caused a cycle in the RTL tree---and this caused the compiler to crash."
| Year | Citations | |
|---|---|---|
Page 1
Page 1