Download presentation
Presentation is loading. Please wait.
Published byMandy Dovell Modified over 10 years ago
1
Concurrent Predicates: A Debugging Technique for Every Parallel Programmer PACT 13 Justin Gottschlich Gilles Pokam Cristiano Pereira Youfeng Wu Intel Corporation 1
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 2
3
A Simple Sequential Bug Example y = 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 3
4
A Not-So Simple Parallel Bug Example Parallel Bug Reproduction Needs 1.Buggy program state 2.Buggy program schedule Parallel Bug Reproduction Needs 1.Buggy program state 2.Buggy program schedule 4
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. 5
6
What is CP? Two variants – Concurrent Predicates (CP) – control structure – CP with Expressions (CPEs) – happens-before ordering extrapolated 6
7
The CPE Solution 7
8
The Real Problem But what about reproducing a known bug with an unknown root cause? – Most real-world bugs come in this form 8
9
Recipes and Experimental Data 9
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 unknown y = calculate(); The effect CP is placed just before bug effect, which is usually known a = x / y; 10
11
Recipe: Data Race CP can automatically find data races – Early implementation in PIN – Verified results found by Thread Checker Identified true positives 11
12
Recipe: Atomicity Violation Same structure as divide by zero example 12
13
Recipe: Deadlock Expression operators in paper 13
14
Experimental Results 5 handcrafted bugs 5 RADBench bugs 3 unresolved TBoost.STM bugs (now fixed) Overhead generally 10%-100% (1.1x – 2x) 14
15
Conclusions and Future Directions CP and CPE: – Can improve known bug reproduction – Can identify unknown root causes of known bugs using recipes (weve used them) Whats next? – Simplify model; direct debugger integration – Automated CPE injection for certain types of bugs – Usage experience data from novice programmers 15
16
Concurrent Predicates: A Debugging Technique for Every Parallel Programmer PACT 13 Justin Gottschlich (justin.e.gottschlich@intel.com) Gilles Pokam Cristiano Pereira Youfeng Wu Intel Corporation Questions? 16
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.