1 / 16

Concurrent Predicates: A Debugging Technique for Every Parallel Programmer

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?

obert
Download Presentation

Concurrent Predicates: A Debugging Technique for Every Parallel Programmer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. The Problem • Reproducing knownmultithreaded bugs is challenging • Why is it important? • Fixing knownbugs is general approach for real-world bug fixing • Works well for sequential code, not parallel

  3. A Simple Sequential Bug Example if (y == 0) crash y = calculate(); if (y == 0) y = 1; a = x / y; y != 0, no crash y = calculate(); a = x / y; if (y == 0) y = 1;

  4. A Not-So Simple Parallel Bug Example Parallel Bug Reproduction Needs Buggy program state Buggy program schedule

  5. The CP Solution 100mil loops, 0-999 calc(), occurs 1 out of 20executions. 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 RealProblem • 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 unknown y = calculate(); • The effect CP is placed just before bug effect, which is usually known a = 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. Questions? 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

More Related