Locating Faults Through Automated Predicate Switching

Similar documents
Motivation. Overview. Scalable Dynamic Analysis for Automated Fault Location and Avoidance. Rajiv Gupta. Program Execution

Automated Debugging In Data Intensive Scalable Computing Systems

Which Configuration Option Should I Change?

Fault Localization Using Value Replacement

Experimental Evaluation of Using Dynamic Slices for Fault Location

Interactive Debugging for Big Data Analytics

Learning Universal Probabilistic Models for Fault Localization

Fault, Error, and Failure

Automatically Locating software Errors using Interesting Value Mapping Pair (IVMP)

Automated Documentation Inference to Explain Failed Tests

Learning from Executions

SCALABLE STATISTICAL BUG ISOLATION

Evaluating Debugging Algorithms from a Qualitative Perspective

Automated Adaptive Bug Isolation using Dyninst. Piramanayagam Arumuga Nainar, Prof. Ben Liblit University of Wisconsin-Madison

Statistical Debugging Benjamin Robert Liblit. Cooperative Bug Isolation. PhD Dissertation, University of California, Berkeley, 2004.

Profile-Guided Program Simplification for Effective Testing and Analysis

Replaying and Isolating Failing Multi-Object Interactions. Martin Burger Andreas Zeller Saarland University

Model-based Software Debugging. Part III

Debugging with Intelligence via Probabilistic Inference

Extended Program Invariants: Applications in Testing and Fault Localization

Lecture 22. Path Spectra Change Impact Analysis. EE 382V Spring 2009 Software Evolution - Instructor Miryung Kim

Lecture 15 Software Testing

Empirical Evaluation of the Tarantula Automatic Fault-Localization Technique

Software Engineering

Systematic Execution of Android Test Suites in Adverse Conditions

Understanding the Program Run

Building a Reactive Immune System for Software Services

Welcome. HRSK Practical on Debugging, Zellescher Weg 12 Willers-Bau A106 Tel

Orifice Flow Meter

Static and dynamic analysis: synergy and duality

Research Article Combining Slicing and Constraint Solving for Better Debugging: The Conbas Approach

UNIVERSITY OF CALIFORNIA RIVERSIDE. Dynamic State Alteration Techniques for Automatically Locating Software Errors

Techniques for Debugging Model-Transformation Failures

Remember the Pain of Dependencies

Atropos User s manual

slicing An example of slicing Consider the following example:

IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 43, NO. X, XXXXX Locating Software Faults Based on Minimum Debugging Frontier Set

Cost Effective Dynamic Program Slicing

Which Configuration Option Should I Change?

Production-Run Software Failure Diagnosis via Hardware Performance Counters. Joy Arulraj, Po-Chun Chang, Guoliang Jin and Shan Lu

Distributed Systems. Fault Tolerance. Paul Krzyzanowski

Lecture 10. Dynamic Analysis

Fault Tolerance. Distributed Systems IT332

(See related materials in textbook.) CSE 435: Software Engineering (slides adapted from Ghezzi et al & Stirewalt

Repetition and Loop Statements Chapter 5

Automated Failure Explanation Through Execution Comparison

Automatic Failure Inducing Chain Computation through Aligned Execution Comparison

Testing Error Handling Code in Device Drivers Using Characteristic Fault Injection

Scalable Isolation of Failure- Inducing Changes via Version Comparison

Automated Debugging with Error Invariants

Precise Dynamic Slicing Algorithms

Analyzing Concurrency Bugs Using Dual Slicing

TITAN 5300 Software. Unit Test Guidelines. S. Darling, S. Harpster, R. Hite, K. Konecki, W. Martersteck, R. Stewart. Revision 2.0

Execution Backtracking Using Reverse Execution of Machine Code

Modern Methods in Software Engineering. Testing.

CrashLocator: Locating Crashing Faults Based on Crash Stacks

Dep. Systems Requirements

Probabilistic Diagnosis of Performance Faults in Large-Scale Parallel Applications

Software Quality. Debugging " Martin Glinz. Chapter 4. Department of Informatics!

Control Hazards. Prediction

BugFix: A Learning-Based Tool to Assist Developers in Fixing Bugs

Debugging meets testing in Erlang

Fault Localization using Probabilistic Program Dependence Graph

Debugging and Profiling

An Eclipse Plug-in for Model Checking

Monitoring Interfaces for Faults

Software Quality Assurance & Testing

Visualizing the out-of-order CPU model. Ryota Shioya Nagoya University

Presentation Outline. Paper Summary. Introduction. Architecture. Workarounds. Method Validation. Future Work

Debugging. CSE 2231 Supplement A Annatala Wolf

Static Slicing. Software Maintenance

Verification and Test with Model-Based Design

A hybrid approach to application instrumentation

Runtime Verification of Java Programs for Scenario-Based Specifications

Sample Exam. Certified Tester Foundation Level

Fault Injection into GPGPU- Applications using GPU-Qin

Program Analysis. CSCE Lecture 16-03/03/2016

Testing. ECE/CS 5780/6780: Embedded System Design. Why is testing so hard? Why do testing?

Effective program debugging based on execution slices and inter-block data dependency

Cost and Precision Tradeoffs of Dynamic Data Slicing Algorithms

Software Engineering (CSC 4350/6350) Rao Casturi

Efficient Regression Test Model for Object Oriented Software

Analyzing Concurrency Bugs using Dual Slicing

FAULT TOLERANCE. Fault Tolerant Systems. Faults Faults (cont d)

SystemC-based ESL Verification Flow Integrating Property Checking and Automatic Debugging

Lecture 20. Delta Debugging Regression Testing. EE 382V Spring 2009 Software Evolution - Instructor Miryung Kim

Software Engineering Fall 2015 (CSC 4350/6350) TR. 5:30 pm 7:15 pm. Rao Casturi 11/10/2015

Lecture 21. Regression Testing Path Spectra. EE 382V Spring 2009 Software Evolution - Instructor Miryung Kim

Software Engineering Fall 2014

Chapter 8. Achmad Benny Mutiara

Software Testing. Minsoo Ryu. Hanyang University. Real-Time Computing and Communications Lab., Hanyang University

Chapter 8 Software Testing. Chapter 8 Software testing

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1

Tracing Lineage Beyond Relational Operators

Benefits of object-orientationorientation

Test Driven Development Building a fortress in a greenfield (or fortifying an existing one) Dr. Hale University of Nebraska at Omaha

Importance of Predicatebased. Predicate-based Testing. Terms Defined. Terms Defined (2) Terms Defined (3) Assumptions. Thorough testing of C used to

Lecture 9: July 14, How to Think About Debugging

Verification, Testing, and Bugs

Control Hazards. Branch Prediction

Transcription:

Locating Faults Through Automated Predicate Switching Authored by Xiangyu Zhang, Neelam Gupta, Rajiv Gupta The University of Arizona ICSE 2006 Presented by Jing Pu

Authors 1 Neelam Gupta The University of Arizona

Outline 2 Motivation Approach Key Techniques Limitations Evaluation Conclusion

Motivation 3 Finding Bugs Program output deviates from the expected output Program crash Techniques Automated debugging techniques potential state changes searching is expensive Idea Switch outcome of some predicate at runtime correct erroneous output / eliminate crash Important information Reduce the state search space - runtime predicate switching

Motivation Example 4 d Why predicate Switching is a better approach? How to compute an output Two parts: Data Part, Select Part Data Part: Set of executed instructions which compute data values that are involved in computing output value. <1,4,5,9,10> Select Part: Set of predicates and statements that compute values used by the predicates. <1,2,7,3,8> Location of fault code: DP: dynamic data slices are relatively small SP: union the full dynamic slices, consider all possible state changes large Switching predicate Overcome this problem

Approach 5 Step 1: Examine failing run, determine output deviation between incorrect and correct output, Locate execution instance I e that produces the first erroneous output value. Step 2: Rerun program, generate Predicate Trace, perform predicate instance ordering LEFS/PRIOR Step 3: Search for a critical predicate, for each predicate instance(p), rerun the program, use instrumented program to switch P s output (only one predicate switch at a time), terminate search when program run succeeds Step 4: Based on critical predicate information, use Bidirectional Chop to locate the set of potentially faulty statements.

Predicate Instance Ordering 6 Last Executed First Switched Ordering (LEFS) Based on the observation: execution of faulty code is often not far away from the fail point Prioritization-based Ordering (PRIOR) Partition predicates into high and low priority subsets using failure- Inducing chops algorithm Arrange the predicate instances in the high priority subset in the order of increasing dependence distance rom the erroneous output Reference: N Gupta, H He, X Zhang, R Gupta, Locating Faulty Code Using Failure-Inducing Chops, ASE 2005

for each of the faulty outputs contains the faulty statement 12 8 argv[1] is different Forward slice on argv[1] backward slices on bitter, sweet and sour Failure- Inducing chops algorithm : 1. use the delta debugging algorithm isolate argv[1] as the minimal failure-inducing input difference 2. Use dynamic slicing to locate fault code

Dynamic Instrumentation 8 Divide a run into three phases, each phase has its unique instrumentation: Phase One: from the beginning of the execution to the predicate instance of interest, instrument a counter at a predicate. When it counts down to 0, it reached the interest predicate instance, enter phase 2. Phase Two: Instrument program switch the outcome of the interest predicate instance. Phase Three: Dynamic instrumenter Valgrind cleans up all the instrumentation, complete the program run.

Limitations 9 Cannot handle complex bugs in the program require switching multiple predicate instances Cannot handle significant bugs some functionality is missing from the program

Evaluation 10 Successful/Failed Searches Where: file name + source line number at which the switched predicate can be found Which: dynamic instance of the predicate that was switched False +ves: the number of dynamic predicate switches searched

11 Search time taken by PRIOR to locate the predicate instance switch

Locate potentially faulty code 12 Bidirectional Slice: the critical predicate outcome was wrong due to incorrect values used in its computation. backward slice of the critical predicate. changing the critical predicate outcome avoids the program crash forward slice of the critical predicate captures the code causing the crash. failure-inducing chop: backward slice of an incorrect output value forward slice of the failure-inducing input difference

13 Location of fault code Sizes of Bidirectional Slice / Failure-Inducing Chop / Bidirectional Chop

Conclusions 14 Critical predicates be very often located in many real reported faulty programs They provide valuable clues to the cause of the failure and hence assist in fault location.

15 Questions? Thanks!