To Be Precise :
Regression Aware Debugging
Rohan Bavishi, Awanish Pandey, Subhajit Roy
Indian Institute of Technology Kanpur
(IIT Kanpur)
OOPSLA ‘16, Amsterdam, Netherlands (Nov. 4, 2016)
Introduction to Bug Localization...
Input/Output or Input/Assert Pairs
Contains a failing test
IIT Kanpur
To Be Precise : Regression Aware Debugging
TEST-SUITE
LOCALIZER
{ Set of SUSPICIOUS Program Locations }
What is a good Bug Localization?
IIT Kanpur
To Be Precise : Regression Aware Debugging
Background : Partial-MaxSAT for Bug Localization
IIT Kanpur
To Be Precise : Regression Aware Debugging
Partial MaxSAT?
CNF Formula
HARD Clauses
CANNOT be relaxed(ignored)
SOFT Clauses
CAN be relaxed(ignored)
Minimum number of clauses to relax for satisfiability?
BugAssist [Jose et al. ‘11]
Input Constraint : (c == 0)
Output Constraint : (a == 2)
(Buggy Testcase)
IIT Kanpur
To Be Precise : Regression Aware Debugging
HARD
HARD
SOFT
SOFT
SOFT
SOFT
Min Relaxed Clauses for SAT?
Ans : 1
a = 3;
a = 2;
HARD
BugAssist [Jose et al. ‘11]
IIT Kanpur
To Be Precise : Regression Aware Debugging
Regression Awareness
IIT Kanpur
To Be Precise : Regression Aware Debugging
No suspicious locations are created equal
Our Contribution
IIT Kanpur
To Be Precise : Regression Aware Debugging
Tintin
Background : Craig Interpolation
IIT Kanpur
To Be Precise : Regression Aware Debugging
Craig Interpolation (on an execution trace)
IIT Kanpur
To Be Precise : Regression Aware Debugging
工
}
A
}
B
Negated Output Constraint : (a != 1)
(Passing Testcase)
Input Constraint : (c == 1)
Regression Score
No. of relaxed statements (ns) + No. of relaxed roadblocks (nr)
IIT Kanpur
To Be Precise : Regression Aware Debugging
Slide* oopslaWorstSlide = this + 2;�
Motivating Example
IIT Kanpur
To Be Precise : Regression Aware Debugging
Traffic Collision Avoidance System (Part of Siemen’s Benchmarks)
Artificially injected faults to create ~40 buggy versions
Motivating Example
IIT Kanpur
To Be Precise : Regression Aware Debugging
Failing Test :
Own_Tracked_Alt == Other_Tracked_Alt
How does BugAssist perform?
IIT Kanpur
To Be Precise : Regression Aware Debugging
How does Tintin perform?
IIT Kanpur
To Be Precise : Regression Aware Debugging
Motivating Example
IIT Kanpur
To Be Precise : Regression Aware Debugging
Passing Tests (Truncated)-
Other_Tracked_Alt = 424
Output : 1
2) Own_Tracked_Alt = 560
Other_Tracked_Alt = 601
Output : 0
...
(Own_Tracked_Alt > Other_Tracked_Alt)
⇓
return 0;
(Own_Tracked_Alt < Other_Tracked_Alt)
⇓
return 1;
Proof Breakage != Test Failure (Regression)
IIT Kanpur
To Be Precise : Regression Aware Debugging
Implementation
IIT Kanpur
To Be Precise : Regression Aware Debugging
Evaluation
IIT Kanpur
To Be Precise : Regression Aware Debugging
RQ 1a (w.r.t Ground-Truth location)
IIT Kanpur
To Be Precise : Regression Aware Debugging
RQ 1a
IIT Kanpur
To Be Precise : Regression Aware Debugging
RQ1b (w.r.t all Repairable locations)
IIT Kanpur
To Be Precise : Regression Aware Debugging
RQ1b
IIT Kanpur
To Be Precise : Regression Aware Debugging
Evaluation Approach 2
IIT Kanpur
To Be Precise : Regression Aware Debugging
75% of crosses lie below the 60% mark
RQ2 : Overhead
IIT Kanpur
To Be Precise : Regression Aware Debugging
What about Program Repair
IIT Kanpur
To Be Precise : Regression Aware Debugging
Tintin - A compromise
IIT Kanpur
INTERPOLANT PRECOND - (a > b)�if (choice == 1) {� selection = a + b;�} else if (choice == 2) {� selection = a - b;�}...�INTERPOLANT POSTCOND - (selection > 0)�
Repair in Tintin
IIT Kanpur
To Be Precise : Regression Aware Debugging
Summary
IIT Kanpur
To Be Precise : Regression Aware Debugging
Thank you!
Questions?
Evaluation Approach 1
IIT Kanpur
To Be Precise : Regression Aware Debugging
TCAS (All Versions) - Worst Case (Last in random ordering)
Evaluation Approach 1
IIT Kanpur
To Be Precise : Regression Aware Debugging
TCAS (All Versions) - Average Case (Average pos in random ordering)
Regression Freedom in Repair
IIT Kanpur
To Be Precise : Regression Aware Debugging
ReDirectFix
IIT Kanpur
Background : Partial-MaxSAT for Bug Localization
IIT Kanpur
To Be Precise : Regression Aware Debugging
Programs as
Logic?
IIT Kanpur
To Be Precise : Regression Aware Debugging