concurrent predicates: a debugging technique for every parallel programmer

Post on 23-Feb-2016

27 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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 Presentation

TRANSCRIPT

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 (justin.e.gottschlich@intel.com)Gilles PokamCristiano PereiraYoufeng Wu

Intel Corporation

Questions?

top related