concurrent predicates: a debugging technique for every parallel programmer
DESCRIPTION
Concurrent Predicates: A Debugging Technique for Every Parallel Programmer. PACT ‘13 Justin Gottschlich Gilles Pokam Cristiano Pereira Youfeng Wu Intel Corporation. The Problem. Reproducing known multithreaded bugs is challenging Why is it important? - PowerPoint PPT PresentationTRANSCRIPT
1
Concurrent Predicates: A Debugging Technique for Every Parallel Programmer
PACT ‘13
Justin GottschlichGilles PokamCristiano PereiraYoufeng Wu
Intel Corporation
2
The Problem• Reproducing known multithreaded bugs is
challenging
• Why is it important?– Fixing known bugs is general approach for real-
world bug fixing
• Works well for sequential code, not parallel
3
A Simple Sequential Bug Exampley = calculate();
a = x / y;
if (y == 0) y = 1;
if (y == 0) crash
y = calculate();
if (y == 0) y = 1;
a = x / y;y != 0, no crash
4
A Not-So Simple Parallel Bug Example
Parallel Bug Reproduction Needs1. Buggy program state2. Buggy program schedule
5
The CP Solution
100mil loops, 0-999 calc(),occurs 1 out of 20 executions.
100mil loops, 0-999 calc(),occurs 20 out of 20 executions.
6
What is CP?• Two variants– Concurrent Predicates (CP) – control structure
– CP with Expressions (CPEs) – happens-before ordering extrapolated
7
The CPE Solution
8
The Real Problem• But what about reproducing a known bug
with an unknown root cause?– Most real-world bugs come in this form
9
Recipes and Experimental Data
10
A Bit About Bugs• Bugs can be thought in terms of ...
– A root cause– An observable effect
• CPs can be thought of in terms of ...– A root cause CP– An effect CP
• The root cause CP is placed after bug root cause, which is usually unknowny = calculate();
• The effect CP is placed just before bug effect, which is usually knowna = x / y;
11
Recipe: Data Race
• CP can automatically find data races– Early implementation in PIN– Verified results found by Thread Checker• Identified true positives
12
Recipe: Atomicity Violation
• Same structure as divide by zero example
13
Recipe: Deadlock
• Expression operators in paper
14
Experimental Results
• 5 handcrafted bugs• 5 RADBench bugs• 3 unresolved TBoost.STM bugs (now fixed)• Overhead generally 10%-100% (1.1x – 2x)
15
Conclusions and Future Directions• CP and CPE:– Can improve known bug reproduction– Can identify unknown root causes of known bugs
using recipes (we’ve used them)
• What’s next?– Simplify model; direct debugger integration– Automated CPE injection for certain types of
bugs– Usage experience data from novice programmers
16
Concurrent Predicates: A Debugging Technique for Every Parallel Programmer
PACT ‘13
Justin Gottschlich ([email protected])Gilles PokamCristiano PereiraYoufeng Wu
Intel Corporation
Questions?