Presentation is loading. Please wait.

Presentation is loading. Please wait.

Concurrent Predicates: A Debugging Technique for Every Parallel Programmer PACT 13 Justin Gottschlich Gilles Pokam Cristiano Pereira Youfeng Wu Intel Corporation.

Similar presentations


Presentation on theme: "Concurrent Predicates: A Debugging Technique for Every Parallel Programmer PACT 13 Justin Gottschlich Gilles Pokam Cristiano Pereira Youfeng Wu Intel Corporation."— Presentation transcript:

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


Download ppt "Concurrent Predicates: A Debugging Technique for Every Parallel Programmer PACT 13 Justin Gottschlich Gilles Pokam Cristiano Pereira Youfeng Wu Intel Corporation."

Similar presentations


Ads by Google