FastTrack: Efficient and Precise Dynamic Race Detection (+ identifying destructive races)

Size: px
Start display at page:

Download "FastTrack: Efficient and Precise Dynamic Race Detection (+ identifying destructive races)"

Transcription

1 FastTrack: Efficient and Precise Dynamic Race Detection (+ identifying destructive races) Cormac Flanagan UC Santa Cruz Stephen Freund Williams College

2 Multithreading and Multicore! Multithreaded programming is notoriously difficult, in part due to schedule-dependent behavior! race conditions, deadlocks, atomicity violations,...! difficult to detect, reproduce, or eliminate

3 Race Conditions! Two threads access a shared variable without synchronization, and at least one thread does a write! Very common 2003 Blackout ($6 Billion) Therac-25

4 Dynamic Race Detection Precision Happens Before [Lamport 78] Compute partial order of operations Ensure conflicting access are not concurrent Sound & Complete Eraser [SBN+ 97] Cost

5 Dynamic Race Detection Precision Track locks held on all accesses to var. - empty lock set implies possible race Unsound & Incomplete Happens Before [Lamport 78] Eraser [SBN+ 97] Cost

6 Dynamic Race Detection Precision Vector Clocks [M 88] Goldilocks [EQT 07] DJIT+ [ISZ 99,PS 03] TRaDe [CB 01]... Happens Before [Lamport 78] Barriers [PS 03] Initialization [vpg 01]... Eraser [SBN+ 97] Cost

7 Dynamic Race Detection Precision Vector Clocks [M 88] Goldilocks [EQT 07] DJIT+ [ISZ 99,PS 03] TRaDe [CB 01] RaceTrack [YRC... 05] MultiRace [PS 03] Hybrid Race Detector [OC 03]... Barriers [PS 03] Initialization [vpg 01]... Happens Before [Lamport 78] Eraser [SBN+ 97] Cost

8 Dynamic Race Detection Precision FastTrack Eraser [SBN+ 97] Vector Clocks [M 88] Goldilocks [EQT 07] DJIT+ [ISZ 99,PS 03] TRaDe [CB 01] Happens Before [Lamport 78] RaceTrack [YRC... 05] MultiRace Design [PS Criteria: 03] Hybrid Race Detector [OC 03] - sound... (find at least 1st race on each var) Barriers [PS 03] Initialization [vpg 01] - complete (no false alarms)... - efficient Insight: Accesses to a var are almost always totally ordered in the Happens-Before relation Cost

9 Happens-Before! Event Ordering: program order synchronization order! Types of Races: Write-Write Write-Read " (write before read) Read-Write " (read before write) Thread A x = 0 rel(m)... y = x Thread B acq(m) x = 1

10 VC A VC B L m W x R x A B A B A B A B A B

11 VC A VC B L m W x R x x = Write-Write 0 8 Check: 0 0 W x 4 VC0 A? ? Yes Read-Write Check: R x VC A?? Yes O(n) time

12 VC A VC B L m W x R x x =

13 VC A VC B L m W x R x x = rel(m)

14 VC A VC B L m W x R x x = rel(m) acq(m)

15 VC A VC B L m W x R x x = rel(m) acq(m) x =

16 VC A VC B L m W x R x 4 1 x = rel(m) Write-Read Check: W x VC A? ? No O(n) 4 0 time x = y = x

17 Write-Write and Write-Read Races Thread A Thread B Thread C Thread D x = 3 x = 1 x = 0??? read x O(n)

18 No Races Yet: Writes Totally Ordered! Thread A Thread B Thread C Thread D x = 3 x = 1 x = 0??? read x O(n)

19 No Races Yet: Writes Totally Ordered! Thread A Thread B Thread C Thread D x = 3 x = 1 x = 0? read x O(1)

20 VC A VC B L m W x Last Write "Epoch" x = @B @A Write-Write Check: W x VC A? 1@B 4 1? Yes (1! 1?) O(1) time

21 VC A VC B L m W x 4 1 x = rel(m) acq(m) 4 8 x = @A 2 1 4@A 4 1 4@A 4 1 4@A 4 1 8@B

22 VC A VC B L m W x 4 1 x = rel(m) y = x @A Write-Read Check: W x VC A? 0 8@B (8! 1?) 0 0 4@A 5 1? No 4 0 4@A 4 acq(m) @A x = @B O(1) time

23 Read-Write Races -- Ordered Reads Thread A Thread B Thread C Thread D read x read x read x? x = 2 Most common case: thread-local, lock-protected,...

24 Read-Write Races -- Unordered Reads Thread A Thread B Thread C x = 0 fork read x? read x?? read x x = 2

25 VC A VC B W x R x 7 0 x = fork read x 8 0 x = @A @A - read x 7 1 7@A 1@B 7@A @A 8 1 Read-Write Check: R x VC A? O(1) O(n) O(n) ? No

26 Thread A Thread B Thread C Thread D read x? read x? x = 2 O(n)

27 Thread A Thread B Thread C Thread D read x read x x = 2

28 Thread A Thread B Thread C Thread D read x read x?? x = 2? x = 3 O(n)

29 Thread A Thread B Thread C Thread D read x read x Forget VC for R x and switch back to "last read epoch" x = 2? x = 3 O(1)

30 RoadRunner Architecture Standard JVM Instrumented Bytecode RoadRunner Instrumenter Event Stream A: acq(m) A: read(x) B: write(y) A: rel(m) Back-End Checker Java Bytecode Error: race on x...

31 Validation! Six race condition checkers all use RoadRunner share common components (eg, VectorClock) profiled and optimized! Further optimization opportunities unsound extensions, dynamic escape analysis, static analysis, implement inside JVM, hardware support,...! 15 Benchmarks 250 KLOC locks, wait/notify, fork/join, barriers,...

32 Warnings false positives 3 false negatives Eraser [SBN+ 97] MultiRace [PS 03] GoldiLocks [EQT 07] Basic VC [M 88] DJIT+ [PS 03] FastTrack

33 Slowdown (x Base Time) Empty Eraser MultiRace Goldilocks Basic VC DJIT+ FastTrack

34 O(n) Vector Clock Operations 1.0E E E+9 Basic VC DJIT+ FastTrack 1.0E+8 1.0E+7 1.0E+6 1.0E+5 1.0E+4 1.0E+3 1.0E+2 1.0E+1 1.0E+0 colt crypt lufact moldyn montecarlo mtrt raja raytracer sparse series sor tsp elevator philo hedc jbb

35 O(n) Vector Clock Operations 1.0E E E+9 1.0E+8 1.0E+7 1.0E+6 1.0E+5 1.0E+4 1.0E+3 1.0E+2 1.0E % of all ops are Reads/Writes R/W ops requiring O(n) time: Basic VC 100% DJIT+ 26.0% FastTrack <0.1% Basic VC DJIT+ FastTrack 1.0E+0 colt crypt lufact moldyn montecarlo mtrt raja raytracer sparse series sor tsp elevator philo hedc jbb

36 Memory Usage! FastTrack allocated ~200x fewer VCs Basic VC, DJIT+ Checker Memory Overhead 7.9x FastTrack 2.8x (Note: VCs for dead objects can be garbage collected)! Improvements accordion clocks [CB 01] analysis granularity [PS 03, YRC 05] (see paper)

37 Eclipse 3.4! Scale > 6,000 classes 24 threads custom sync. idioms! Precision (tested 5 common tasks) Eraser: ~1000 warnings FastTrack: ~30 warnings! Performance on compute-bound tasks > 2x speed of other precise checkers same as Eraser

38 Beyond Detecting Race Conditions! FastTrack finds real race conditions races correlated with defects cause unintuitive behavior on relaxed memory! Which race conditions are real bugs? that cause erroneous behaviors (crashes, etc) and are not benign race conditions

39

40 Thread 0 Thread 1 Thread 2 p = null! px = 0! py = 0! fork 1,2! read p // non-null! read px //?! read p // null! acquire! read p // null! p = new Point! px = 1! py = 1! release! read px // get 1! read py // get 1!

41 Thread 0 Thread 1 Thread 2 p = null! px = 0! py = 0! fork 1,2! read p // non-null! read px //?! read p // null! acquire! read p // null! p = new Point! px = 1! py = 1! release! read px // get 1! read py // get 1!

42 Thread 0 Thread 1 Thread 2 p = null! px = 0! py = 0! fork 1,2! read p // non-null! read px //?! read p // null! acquire! read p // null! p = new Point! px = 1! py = 1! release! read px // get 1! read py // get 1!! Race: can return either write (mm non-determinism)! Typical JVM: mostly sequentially consistent! Adversarial memory use heuristics to return older stale values

43 Adversarial Memory! Record history of all writes (plus VCs) to racy variables! At read determine all visible writes legal under JMM heuristically pick one likely to crash target program! Six heuristics: Sequentially consistent: return last write Oldest: return most stale value Oldest-but-different: never return same val twice " if (p!= null) p.draw() Random, Random-but-different

44 Experimental Results

FastTrack: Efficient and Precise Dynamic Race Detection By Cormac Flanagan and Stephen N. Freund

FastTrack: Efficient and Precise Dynamic Race Detection By Cormac Flanagan and Stephen N. Freund FastTrack: Efficient and Precise Dynamic Race Detection By Cormac Flanagan and Stephen N. Freund doi:10.1145/1839676.1839699 Abstract Multithreaded programs are notoriously prone to race conditions. Prior

More information

Atomicity for Reliable Concurrent Software. Race Conditions. Motivations for Atomicity. Race Conditions. Race Conditions. 1. Beyond Race Conditions

Atomicity for Reliable Concurrent Software. Race Conditions. Motivations for Atomicity. Race Conditions. Race Conditions. 1. Beyond Race Conditions Towards Reliable Multithreaded Software Atomicity for Reliable Concurrent Software Cormac Flanagan UC Santa Cruz Joint work with Stephen Freund Shaz Qadeer Microsoft Research 1 Multithreaded software increasingly

More information

Cooperative Concurrency for a Multicore World

Cooperative Concurrency for a Multicore World Cooperative Concurrency for a Multicore World Stephen Freund Williams College Cormac Flanagan, Tim Disney, Caitlin Sadowski, Jaeheon Yi, UC Santa Cruz Controlling Thread Interference: #1 Manually x = 0;

More information

Adversarial Memory for Detecting Destructive Races

Adversarial Memory for Detecting Destructive Races Adversarial Memory for Detecting Destructive Races Cormac Flanagan Computer Science Department University of California at Santa Cruz Santa Cruz, CA 95064 Stephen N. Freund Computer Science Department

More information

Types for Precise Thread Interference

Types for Precise Thread Interference Types for Precise Thread Interference Jaeheon Yi, Tim Disney, Cormac Flanagan UC Santa Cruz Stephen Freund Williams College October 23, 2011 2 Multiple Threads Single Thread is a non-atomic read-modify-write

More information

C. Flanagan Dynamic Analysis for Atomicity 1

C. Flanagan Dynamic Analysis for Atomicity 1 1 Atomicity The method inc() is atomic if concurrent threads do not interfere with its behavior Guarantees that for every execution acq(this) x t=i y i=t+1 z rel(this) acq(this) x y t=i i=t+1 z rel(this)

More information

Atomicity. Experience with Calvin. Tools for Checking Atomicity. Tools for Checking Atomicity. Tools for Checking Atomicity

Atomicity. Experience with Calvin. Tools for Checking Atomicity. Tools for Checking Atomicity. Tools for Checking Atomicity 1 2 Atomicity The method inc() is atomic if concurrent ths do not interfere with its behavior Guarantees that for every execution acq(this) x t=i y i=t+1 z rel(this) acq(this) x y t=i i=t+1 z rel(this)

More information

SideTrack: Generalizing Dynamic Atomicity Analysis

SideTrack: Generalizing Dynamic Atomicity Analysis SideTrack: Generalizing Dynamic Atomicity Analysis Jaeheon Yi jaeheon@cs.ucsc.edu Caitlin Sadowski supertri@cs.ucsc.edu Computer Science Department University of California at Santa Cruz Santa Cruz, CA

More information

CalFuzzer: An Extensible Active Testing Framework for Concurrent Programs Pallavi Joshi 1, Mayur Naik 2, Chang-Seo Park 1, and Koushik Sen 1

CalFuzzer: An Extensible Active Testing Framework for Concurrent Programs Pallavi Joshi 1, Mayur Naik 2, Chang-Seo Park 1, and Koushik Sen 1 CalFuzzer: An Extensible Active Testing Framework for Concurrent Programs Pallavi Joshi 1, Mayur Naik 2, Chang-Seo Park 1, and Koushik Sen 1 1 University of California, Berkeley, USA {pallavi,parkcs,ksen}@eecs.berkeley.edu

More information

Sound Thread Local Analysis for Lockset-Based Dynamic Data Race Detection

Sound Thread Local Analysis for Lockset-Based Dynamic Data Race Detection Wellesley College Wellesley College Digital Scholarship and Archive Honors Thesis Collection 2017 Sound Thread Local Analysis for Lockset-Based Dynamic Data Race Detection Samuila Mincheva sminchev@wellesley.edu

More information

Hybrid Static-Dynamic Analysis for Statically Bounded Region Serializability

Hybrid Static-Dynamic Analysis for Statically Bounded Region Serializability Hybrid Static-Dynamic Analysis for Statically Bounded Region Serializability Aritra Sengupta, Swarnendu Biswas, Minjia Zhang, Michael D. Bond and Milind Kulkarni ASPLOS 2015, ISTANBUL, TURKEY Programming

More information

Dynamic Analysis. CS252r Fall 2015

Dynamic Analysis. CS252r Fall 2015 Dynamic Analysis CS252r Fall 2015 Reading The Concept of Dynamic Analysis by Thomas Ball, FSE 1999 Efficient Path Profiling by Thomas Ball and James Larus, MICRO 1996 Adversarial Memory for Destructive

More information

Embedded System Programming

Embedded System Programming Embedded System Programming Multicore ES (Module 40) Yann-Hang Lee Arizona State University yhlee@asu.edu (480) 727-7507 Summer 2014 The Era of Multi-core Processors RTOS Single-Core processor SMP-ready

More information

Part 3: Beyond Reduction

Part 3: Beyond Reduction Lightweight Analyses For Reliable Concurrency Part 3: Beyond Reduction Stephen Freund Williams College joint work with Cormac Flanagan (UCSC), Shaz Qadeer (MSR) Busy Acquire Busy Acquire void busy_acquire()

More information

PACER: Proportional Detection of Data Races

PACER: Proportional Detection of Data Races PACER: Proportional Detection of Data Races Michael D. Bond Katherine E. Coons Kathryn S. McKinley Department of Computer Science, The University of Texas at Austin {mikebond,coonske,mckinley}@cs.utexas.edu

More information

Cooperative Reasoning for Preemptive Execution

Cooperative Reasoning for Preemptive Execution Cooperative Reasoning for Preemptive Execution Jaeheon Yi Caitlin Sadowski Cormac Flanagan Computer Science Department University of California at Santa Cruz Santa Cruz, CA 95064 {jaeheon,supertri,cormac@cs.ucsc.edu

More information

More BSOD Embarrassments. Moore s Law. Programming With Threads. Moore s Law is Over. Analysis of Concurrent Software. Types for Race Freedom

More BSOD Embarrassments. Moore s Law. Programming With Threads. Moore s Law is Over. Analysis of Concurrent Software. Types for Race Freedom Moore s Law Analysis of Concurrent Software Types for Race Freedom Transistors per chip doubles every 18 months Cormac Flanagan UC Santa Cruz Stephen N. Freund Williams College Shaz Qadeer Microsoft Research

More information

Runtime Atomicity Analysis of Multi-threaded Programs

Runtime Atomicity Analysis of Multi-threaded Programs Runtime Atomicity Analysis of Multi-threaded Programs Focus is on the paper: Atomizer: A Dynamic Atomicity Checker for Multithreaded Programs by C. Flanagan and S. Freund presented by Sebastian Burckhardt

More information

Deterministic Replay and Data Race Detection for Multithreaded Programs

Deterministic Replay and Data Race Detection for Multithreaded Programs Deterministic Replay and Data Race Detection for Multithreaded Programs Dongyoon Lee Computer Science Department - 1 - The Shift to Multicore Systems 100+ cores Desktop/Server 8+ cores Smartphones 2+ cores

More information

11/19/2013. Imperative programs

11/19/2013. Imperative programs if (flag) 1 2 From my perspective, parallelism is the biggest challenge since high level programming languages. It s the biggest thing in 50 years because industry is betting its future that parallel programming

More information

RedCard: Redundant Check Elimination for Dynamic Race Detectors

RedCard: Redundant Check Elimination for Dynamic Race Detectors RedCard: Redundant Check Elimination for Dynamic Race Detectors Cormac Flanagan 1 and Stephen N. Freund 2 1 University of California at Santa Cruz 2 Williams College Abstract. Precise dynamic race detectors

More information

Motivation & examples Threads, shared memory, & synchronization

Motivation & examples Threads, shared memory, & synchronization 1 Motivation & examples Threads, shared memory, & synchronization How do locks work? Data races (a lower level property) How do data race detectors work? Atomicity (a higher level property) Concurrency

More information

7/6/2015. Motivation & examples Threads, shared memory, & synchronization. Imperative programs

7/6/2015. Motivation & examples Threads, shared memory, & synchronization. Imperative programs Motivation & examples Threads, shared memory, & synchronization How do locks work? Data races (a lower level property) How do data race detectors work? Atomicity (a higher level property) Concurrency exceptions

More information

Dynamic Monitoring Tool based on Vector Clocks for Multithread Programs

Dynamic Monitoring Tool based on Vector Clocks for Multithread Programs , pp.45-49 http://dx.doi.org/10.14257/astl.2014.76.12 Dynamic Monitoring Tool based on Vector Clocks for Multithread Programs Hyun-Ji Kim 1, Byoung-Kwi Lee 2, Ok-Kyoon Ha 3, and Yong-Kee Jun 1 1 Department

More information

Optimized Run-Time Race Detection And Atomicity Checking Using Partial Discovered Types

Optimized Run-Time Race Detection And Atomicity Checking Using Partial Discovered Types Optimized Run-Time Race Detection And Atomicity Checking Using Partial Discovered Types Rahul Agarwal Amit Sasturkar Liqiang Wang Scott D. Stoller ABSTRACT Concurrent programs are notorious for containing

More information

Array Shadow State Compression for Precise Dynamic Race Detection Williams College Technical Report CSTR , May, 2015

Array Shadow State Compression for Precise Dynamic Race Detection Williams College Technical Report CSTR , May, 2015 rray Shadow State Compression for Precise Dynamic Race Detection Williams College Technical Report CSTR-201510, May, 2015 James Wilcox University of Washington Parker Finch Cognius Cormac Flanagan University

More information

Lightweight Data Race Detection for Production Runs

Lightweight Data Race Detection for Production Runs Lightweight Data Race Detection for Production Runs Swarnendu Biswas, UT Austin Man Cao, Ohio State University Minjia Zhang, Microsoft Research Michael D. Bond, Ohio State University Benjamin P. Wood,

More information

DoubleChecker: Efficient Sound and Precise Atomicity Checking

DoubleChecker: Efficient Sound and Precise Atomicity Checking DoubleChecker: Efficient Sound and Precise Atomicity Checking Swarnendu Biswas, Jipeng Huang, Aritra Sengupta, and Michael D. Bond The Ohio State University PLDI 2014 Impact of Concurrency Bugs Impact

More information

MultiJav: A Distributed Shared Memory System Based on Multiple Java Virtual Machines. MultiJav: Introduction

MultiJav: A Distributed Shared Memory System Based on Multiple Java Virtual Machines. MultiJav: Introduction : A Distributed Shared Memory System Based on Multiple Java Virtual Machines X. Chen and V.H. Allan Computer Science Department, Utah State University 1998 : Introduction Built on concurrency supported

More information

Eraser: Dynamic Data Race Detection

Eraser: Dynamic Data Race Detection Eraser: Dynamic Data Race Detection 15-712 Topics overview Concurrency and race detection Framework: dynamic, static Sound vs. unsound Tools, generally: Binary rewriting (ATOM, Etch,...) and analysis (BAP,

More information

Compiler Techniques For Memory Consistency Models

Compiler Techniques For Memory Consistency Models Compiler Techniques For Memory Consistency Models Students: Xing Fang (Purdue), Jaejin Lee (Seoul National University), Kyungwoo Lee (Purdue), Zehra Sura (IBM T.J. Watson Research Center), David Wong (Intel

More information

HEAT: An Integrated Static and Dynamic Approach for Thread Escape Analysis

HEAT: An Integrated Static and Dynamic Approach for Thread Escape Analysis HEAT: An Integrated Static and Dynamic Approach for Thread Escape Analysis Qichang Chen and Liqiang Wang Department of Computer Science University of Wyoming {qchen2, wang@cs.uwyo.edu Zijiang Yang Department

More information

Finding Concurrency Bugs in Java

Finding Concurrency Bugs in Java July 25, 2004 Background Our Work Recommendations Background Our Work Programmers are Not Scared Enough Java makes threaded programming too easy Language often hides consequences of incorrect synchronization

More information

Toward Efficient Strong Memory Model Support for the Java Platform via Hybrid Synchronization

Toward Efficient Strong Memory Model Support for the Java Platform via Hybrid Synchronization Toward Efficient Strong Memory Model Support for the Java Platform via Hybrid Synchronization Aritra Sengupta Man Cao Michael D. Bond Milind Kulkarni Ohio State University Purdue University {sengupta,caoma,mikebond}@cse.ohio-state.edu

More information

AtomChase: Directed Search Towards Atomicity Violations

AtomChase: Directed Search Towards Atomicity Violations AtomChase: Directed Search Towards Atomicity Violations Mahdi Eslamimehr, Mohsen Lesani Viewpoints Research Institute, 1025 Westwood Blvd 2nd flr, Los Angeles, CA 90024 t: (310) 208-0524 AtomChase: Directed

More information

Toward Efficient Strong Memory Model Support for the Java Platform via Hybrid Synchronization

Toward Efficient Strong Memory Model Support for the Java Platform via Hybrid Synchronization Toward Efficient Strong Memory Model Support for the Java Platform via Hybrid Synchronization Aritra Sengupta, Man Cao, Michael D. Bond and Milind Kulkarni 1 PPPJ 2015, Melbourne, Florida, USA Programming

More information

JVM Independent Replay in Java

JVM Independent Replay in Java JVM Independent Replay in Java RV 04 April 3, 2004, Barcelona, Spain Viktor Schuppan, Marcel Baur, Armin Biere Computer Systems Institute, ETH Zürich http://www.inf.ethz.ch/ schuppan/ Introduction 1 How

More information

1. Beyond Race Conditions 2. Enables Sequential Reasoning 3. Simple Specification

1. Beyond Race Conditions 2. Enables Sequential Reasoning 3. Simple Specification Motivations for Atomicity Lightweight Analyses For Reliable Concurrency Stephen Freund Williams College 1. Beyond Race Conditions 2. Enables Sequential Reasoning 3. Simple Specification joint work with

More information

Chimera: Hybrid Program Analysis for Determinism

Chimera: Hybrid Program Analysis for Determinism Chimera: Hybrid Program Analysis for Determinism Dongyoon Lee, Peter Chen, Jason Flinn, Satish Narayanasamy University of Michigan, Ann Arbor - 1 - * Chimera image from http://superpunch.blogspot.com/2009/02/chimera-sketch.html

More information

A Serializability Violation Detector for Shared-Memory Server Programs

A Serializability Violation Detector for Shared-Memory Server Programs A Serializability Violation Detector for Shared-Memory Server Programs Min Xu Rastislav Bodík Mark Hill University of Wisconsin Madison University of California, Berkeley Serializability Violation Detector:

More information

Efficient Data Race Detection for C/C++ Programs Using Dynamic Granularity

Efficient Data Race Detection for C/C++ Programs Using Dynamic Granularity Efficient Data Race Detection for C/C++ Programs Using Young Wn Song and Yann-Hang Lee Computer Science and Engineering Arizona State University Tempe, AZ, 85281 ywsong@asu.edu, yhlee@asu.edu Abstract

More information

Part IV: Exploiting Purity for Atomicity

Part IV: Exploiting Purity for Atomicity Busy Acquire Part IV: Exploiting Purity for Atomicity atomic void busy_acquire() { if (CAS(m,0,1)) break; CAS(m,0,1) CAS(m,0,1) CAS(m,0,1) (fails) (fails) (succeeds) boolean b[max]; // b[i]==true iff block

More information

Hybrid Analysis for Partial Order Reduction of Programs with Arrays

Hybrid Analysis for Partial Order Reduction of Programs with Arrays Hybrid Analysis for Partial Order Reduction of Programs with Arrays Pavel Parízek Charles University in Prague, Faculty of Mathematics and Physics, Department of Distributed and Dependable Systems Abstract.

More information

Hybrid Dynamic Data Race Detection

Hybrid Dynamic Data Race Detection Hybrid Dynamic Data Race Detection Robert O Callahan Jong-Deok Choi IBM T.J. Watson Research Center ACM SIGPLAN 2003 Symposium on Principles and Practice of Parallel Programming (PPoPP 03) San Diego, CA,

More information

CMSC 714 Lecture 14 Lamport Clocks and Eraser

CMSC 714 Lecture 14 Lamport Clocks and Eraser Notes CMSC 714 Lecture 14 Lamport Clocks and Eraser Midterm exam on April 16 sample exam questions posted Research project questions? Alan Sussman (with thanks to Chris Ackermann) 2 Lamport Clocks Distributed

More information

NDSeq: Runtime Checking for Nondeterministic Sequential Specs of Parallel Correctness

NDSeq: Runtime Checking for Nondeterministic Sequential Specs of Parallel Correctness EECS Electrical Engineering and Computer Sciences P A R A L L E L C O M P U T I N G L A B O R A T O R Y NDSeq: Runtime Checking for Nondeterministic Sequential Specs of Parallel Correctness Jacob Burnim,

More information

Detecting Atomic-Set Serializability Violations in Multithreaded Programs through Active Randomized Testing *

Detecting Atomic-Set Serializability Violations in Multithreaded Programs through Active Randomized Testing * Detecting Atomic-Set Serializability Violations in Multithreaded Programs through Active Randomized Testing * Zhifeng Lai and S.C. Cheung Department of Computer Science and Engineering Hong Kong University

More information

Static Conflict Analysis for Multi-Threaded Object-Oriented Programs

Static Conflict Analysis for Multi-Threaded Object-Oriented Programs Static Conflict Analysis for Multi-Threaded Object-Oriented Programs Christoph von Praun and Thomas R. Gross Laboratory for Software Technology ETH Zürich 8092 Zürich, Switzerland ABSTRACT A compiler for

More information

Sound Predictive Race Detection in Polynomial Time

Sound Predictive Race Detection in Polynomial Time Sound Predictive Race Detection in Polynomial Time Yannis Smaragdakis University of Athens and University of Massachusetts, Amherst smaragd@di.uoa.gr Jacob M. Evans University of Massachusetts, Amherst

More information

Falcon: Fault Localization in Concurrent Programs

Falcon: Fault Localization in Concurrent Programs Falcon: Fault Localization in Concurrent Programs Sangmin Park, Richard W. Vuduc, and Mary Jean Harrold College of Computing Georgia Institute of Technology E-mail: {sangminp richie harrold}@cc.gatech.edu

More information

The Java Memory Model

The Java Memory Model Jeremy Manson 1, William Pugh 1, and Sarita Adve 2 1 University of Maryland 2 University of Illinois at Urbana-Champaign Presented by John Fisher-Ogden November 22, 2005 Outline Introduction Sequential

More information

Do you have to reproduce the bug on the first replay attempt?

Do you have to reproduce the bug on the first replay attempt? Do you have to reproduce the bug on the first replay attempt? PRES: Probabilistic Replay with Execution Sketching on Multiprocessors Soyeon Park, Yuanyuan Zhou University of California, San Diego Weiwei

More information

Software Analysis Techniques for Detecting Data Race

Software Analysis Techniques for Detecting Data Race Software Analysis Techniques for Detecting Data Race [CS 5204 OS Course Project: Fall 2004] Pilsung Kang Department of Computer Science Virginia Tech kangp@vt.edu ABSTRACT Data races are a multithreading

More information

jpredictor: A Predictive Runtime Analysis Tool for Java

jpredictor: A Predictive Runtime Analysis Tool for Java jpredictor: A Predictive Runtime Analysis Tool for Java Feng Chen CS Department University of Illinois, Urbana fengchen@cs.uiuc.edu Traian Florin Şerbănuţă CS Department University of Illinois, Urbana

More information

Beyond Reduction... Busy Acquire. Busy Acquire. alloc. alloc. Non-Serial Execution: Serial Execution: Atomic but not reducible

Beyond Reduction... Busy Acquire. Busy Acquire. alloc. alloc. Non-Serial Execution: Serial Execution: Atomic but not reducible Busy Acquire Beyond Reduction... if (CAS(m,0,1)) break; if (m == 0) { m = 1; return true; else { return false; 1 2 Busy Acquire if (CAS(m,0,1)) break; Non-Serial Execution: (fails) (fails) (succeeds) Serial

More information

Proceedings of the Third Virtual Machine Research and Technology Symposium

Proceedings of the Third Virtual Machine Research and Technology Symposium USENIX Association Proceedings of the Third Virtual Machine Research and Technology Symposium San Jose, CA, USA May 6 7, 2004 2004 by The USENIX Association All Rights Reserved For more information about

More information

Compiling Multi-Threaded Object-Oriented Programs

Compiling Multi-Threaded Object-Oriented Programs Compiling Multi-Threaded Object-Oriented Programs (Preliminary Version) Christoph von Praun and Thomas R. Gross Laboratory for Software Technology Department Informatik ETH Zürich 8092 Zürich, Switzerland

More information

Foundations of the C++ Concurrency Memory Model

Foundations of the C++ Concurrency Memory Model Foundations of the C++ Concurrency Memory Model John Mellor-Crummey and Karthik Murthy Department of Computer Science Rice University johnmc@rice.edu COMP 522 27 September 2016 Before C++ Memory Model

More information

Valor: Efficient, Software-Only Region Conflict Exceptions

Valor: Efficient, Software-Only Region Conflict Exceptions to Reuse * * Evaluated * OOPSLA * Artifact * AEC Valor: Efficient, Software-Only Region Conflict Exceptions Swarnendu Biswas Minjia Zhang Michael D. Bond Brandon Lucia Ohio State University (USA) Carnegie

More information

Legato: Bounded Region Serializability Using Commodity Hardware Transactional Memory. Aritra Sengupta Man Cao Michael D. Bond and Milind Kulkarni

Legato: Bounded Region Serializability Using Commodity Hardware Transactional Memory. Aritra Sengupta Man Cao Michael D. Bond and Milind Kulkarni Legato: Bounded Region Serializability Using Commodity Hardware al Memory Aritra Sengupta Man Cao Michael D. Bond and Milind Kulkarni 1 Programming Language Semantics? Data Races C++ no guarantee of semantics

More information

Nondeterminism is Unavoidable, but Data Races are Pure Evil

Nondeterminism is Unavoidable, but Data Races are Pure Evil Nondeterminism is Unavoidable, but Data Races are Pure Evil Hans-J. Boehm HP Labs 5 November 2012 1 Low-level nondeterminism is pervasive E.g. Atomically incrementing a global counter is nondeterministic.

More information

MULTITHREADING has become a common programming

MULTITHREADING has become a common programming IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 32, NO. 2, FEBRUARY 2006 93 Runtime Analysis of Atomicity for Multithreaded Programs Liqiang Wang and Scott D. Stoller Abstract Atomicity is a correctness

More information

Java Memory Model. Jian Cao. Department of Electrical and Computer Engineering Rice University. Sep 22, 2016

Java Memory Model. Jian Cao. Department of Electrical and Computer Engineering Rice University. Sep 22, 2016 Java Memory Model Jian Cao Department of Electrical and Computer Engineering Rice University Sep 22, 2016 Content Introduction Java synchronization mechanism Double-checked locking Out-of-Thin-Air violation

More information

Potential violations of Serializability: Example 1

Potential violations of Serializability: Example 1 CSCE 6610:Advanced Computer Architecture Review New Amdahl s law A possible idea for a term project Explore my idea about changing frequency based on serial fraction to maintain fixed energy or keep same

More information

Automatically Classifying Benign and Harmful Data Races Using Replay Analysis

Automatically Classifying Benign and Harmful Data Races Using Replay Analysis Automatically Classifying Benign and Harmful Data Races Using Replay Analysis Satish Narayanasamy, Zhenghao Wang, Jordan Tigani, Andrew Edwards, Brad Calder Microsoft University of California, San Diego

More information

Atomicity via Source-to-Source Translation

Atomicity via Source-to-Source Translation Atomicity via Source-to-Source Translation Benjamin Hindman Dan Grossman University of Washington 22 October 2006 Atomic An easier-to-use and harder-to-implement primitive void deposit(int x){ synchronized(this){

More information

Tom Ball Sebastian Burckhardt Madan Musuvathi Microsoft Research

Tom Ball Sebastian Burckhardt Madan Musuvathi Microsoft Research Tom Ball (tball@microsoft.com) Sebastian Burckhardt (sburckha@microsoft.com) Madan Musuvathi (madanm@microsoft.com) Microsoft Research P&C Parallelism Concurrency Performance Speedup Responsiveness Correctness

More information

Testing Concurrent Java Programs Using Randomized Scheduling

Testing Concurrent Java Programs Using Randomized Scheduling Testing Concurrent Java Programs Using Randomized Scheduling Scott D. Stoller Computer Science Department State University of New York at Stony Brook http://www.cs.sunysb.edu/ stoller/ 1 Goal Pillars of

More information

CS-XXX: Graduate Programming Languages. Lecture 20 Shared-Memory Parallelism and Concurrency. Dan Grossman 2012

CS-XXX: Graduate Programming Languages. Lecture 20 Shared-Memory Parallelism and Concurrency. Dan Grossman 2012 CS-XXX: Graduate Programming Languages Lecture 20 Shared-Memory Parallelism and Concurrency Dan Grossman 2012 Concurrency and Parallelism PL support for concurrency/parallelism a huge topic Increasingly

More information

The New Java Technology Memory Model

The New Java Technology Memory Model The New Java Technology Memory Model java.sun.com/javaone/sf Jeremy Manson and William Pugh http://www.cs.umd.edu/~pugh 1 Audience Assume you are familiar with basics of Java technology-based threads (

More information

CMSC 132: Object-Oriented Programming II

CMSC 132: Object-Oriented Programming II CMSC 132: Object-Oriented Programming II Synchronization in Java Department of Computer Science University of Maryland, College Park Multithreading Overview Motivation & background Threads Creating Java

More information

Lightweight Data Race Detection for Production Runs

Lightweight Data Race Detection for Production Runs Lightweight Data Race Detection for Production Runs Ohio State CSE Technical Report #OSU-CISRC-1/15-TR01; last updated August 2016 Swarnendu Biswas Ohio State University biswass@cse.ohio-state.edu Michael

More information

Detecting Data Races in Multi-Threaded Programs

Detecting Data Races in Multi-Threaded Programs Slide 1 / 22 Detecting Data Races in Multi-Threaded Programs Eraser A Dynamic Data-Race Detector for Multi-Threaded Programs John C. Linford Slide 2 / 22 Key Points 1. Data races are easy to cause and

More information

W4118: concurrency error. Instructor: Junfeng Yang

W4118: concurrency error. Instructor: Junfeng Yang W4118: concurrency error Instructor: Junfeng Yang Goals Identify patterns of concurrency errors (so you can avoid them in your code) Learn techniques to detect concurrency errors (so you can apply these

More information

Scalable Thread Sharing Analysis

Scalable Thread Sharing Analysis Scalable Thread Sharing Analysis Jeff Huang Parasol Laboratory Texas A&M University je @cse.tamu.edu ABSTRACT We present two scalable algorithms for identifying program locations that access thread-shared

More information

Identifying Ad-hoc Synchronization for Enhanced Race Detection

Identifying Ad-hoc Synchronization for Enhanced Race Detection Identifying Ad-hoc Synchronization for Enhanced Race Detection IPD Tichy Lehrstuhl für Programmiersysteme IPDPS 20 April, 2010 Ali Jannesari / Walter F. Tichy KIT die Kooperation von Forschungszentrum

More information

A Case for System Support for Concurrency Exceptions

A Case for System Support for Concurrency Exceptions A Case for System Support for Concurrency Exceptions Luis Ceze, Joseph Devietti, Brandon Lucia and Shaz Qadeer University of Washington {luisceze, devietti, blucia0a}@cs.washington.edu Microsoft Research

More information

Eraser : A dynamic data race detector for multithreaded programs By Stefan Savage et al. Krish 9/1/2011

Eraser : A dynamic data race detector for multithreaded programs By Stefan Savage et al. Krish 9/1/2011 Eraser : A dynamic data race detector for multithreaded programs By Stefan Savage et al. Krish 9/1/2011 MOTIVATION. Only parallel programs can benefit from today s multi-core processors Multithreading

More information

Randomized Active Atomicity Violation Detection in Concurrent Programs

Randomized Active Atomicity Violation Detection in Concurrent Programs Randomized Active Atomicity Violation Detection in Concurrent Programs Chang-Seo Park EECS Department, UC Berkeley, CA, USA. parkcs@cs.berkeley.edu Koushik Sen EECS Department, UC Berkeley, CA, USA. ksen@cs.berkeley.edu

More information

A Parameterized Type System for Race-Free Java Programs

A Parameterized Type System for Race-Free Java Programs A Parameterized Type System for Race-Free Java Programs Chandrasekhar Boyapati Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology {chandra, rinard@lcs.mit.edu Data races

More information

Development of Technique for Healing Data Races based on Software Transactional Memory

Development of Technique for Healing Data Races based on Software Transactional Memory , pp.482-487 http://dx.doi.org/10.14257/astl.2016.139.96 Development of Technique for Healing Data Races based on Software Transactional Memory Eu-Teum Choi 1,, Kun Su Yoon 2, Ok-Kyoon Ha 3, Yong-Kee Jun

More information

Precise and Maximal Race Detection from Incomplete Traces

Precise and Maximal Race Detection from Incomplete Traces Precise and Maximal Race Detection from Incomplete Traces Jeff Huang Texas A&M University, USA jeff@cse.tamu.edu Arun K. Rajagopalan Texas A&M University, USA arunxls@tamu.edu Abstract We present RDIT,

More information

Correctness of Partial Escape Analysis for Multithreading Optimization

Correctness of Partial Escape Analysis for Multithreading Optimization Abstract Dustin Rhodes UC Santa Cruz dustin@soe.ucsc.edu Correctness of Partial Escape Analysis for Multithreading Optimization Compilers often use escape analysis to elide locking operations on thread-local

More information

Software Architecture and Engineering: Part II

Software Architecture and Engineering: Part II Software Architecture and Engineering: Part II ETH Zurich, Spring 2016 Prof. http://www.srl.inf.ethz.ch/ Framework SMT solver Alias Analysis Relational Analysis Assertions Second Project Static Analysis

More information

Dynamically Detecting and Tolerating IF-Condition Data Races

Dynamically Detecting and Tolerating IF-Condition Data Races Dynamically Detecting and Tolerating IF-Condition Data Races Shanxiang Qi (Google), Abdullah Muzahid (University of San Antonio), Wonsun Ahn, Josep Torrellas University of Illinois at Urbana-Champaign

More information

Simplified Semantics and Debugging of Concurrent Programs via Targeted Race Detection

Simplified Semantics and Debugging of Concurrent Programs via Targeted Race Detection University of California Los Angeles Simplified Semantics and Debugging of Concurrent Programs via Targeted Race Detection A dissertation submitted in partial satisfaction of the requirements for the degree

More information

MAMA: Mostly Automatic Management of Atomicity

MAMA: Mostly Automatic Management of Atomicity MAMA: Mostly Automatic Management of Atomicity Christian DeLozier Joseph Devietti Milo M. K. Martin Computer and Information Science Department, University of Pennsylvania {delozier, devietti, milom}@cis.upenn.edu

More information

CS152: Programming Languages. Lecture 19 Shared-Memory Parallelism and Concurrency. Dan Grossman Spring 2011

CS152: Programming Languages. Lecture 19 Shared-Memory Parallelism and Concurrency. Dan Grossman Spring 2011 CS152: Programming Languages Lecture 19 Shared-Memory Parallelism and Concurrency Dan Grossman Spring 2011 Concurrency and Parallelism PL support for concurrency/parallelism a huge topic Increasingly important

More information

Concurrency and Parallelism. CS152: Programming Languages. Lecture 19 Shared-Memory Parallelism and Concurrency. Concurrency vs. Parallelism.

Concurrency and Parallelism. CS152: Programming Languages. Lecture 19 Shared-Memory Parallelism and Concurrency. Concurrency vs. Parallelism. CS152: Programming Languages Lecture 19 Shared-Memory Parallelism and Concurrency Dan Grossman Spring 2011 Concurrency and Parallelism PL support for concurrency/parallelism a huge topic Increasingly important

More information

The Common Case Transactional Behavior of Multithreaded Programs

The Common Case Transactional Behavior of Multithreaded Programs The Common Case Transactional Behavior of Multithreaded Programs JaeWoong Chung Hassan Chafi,, Chi Cao Minh, Austen McDonald, Brian D. Carlstrom, Christos Kozyrakis, Kunle Olukotun Computer Systems Lab

More information

Scalable and Precise Dynamic Datarace Detection for Structured Parallelism

Scalable and Precise Dynamic Datarace Detection for Structured Parallelism Scalable and Precise Dynamic Datarace Detection for Structured Parallelism Raghavan Raman Rice University raghav@rice.edu Jisheng Zhao Rice University jisheng.zhao@rice.edu Vivek Sarkar Rice University

More information

Efficient Data Race Detection for Unified Parallel C

Efficient Data Race Detection for Unified Parallel C P A R A L L E L C O M P U T I N G L A B O R A T O R Y Efficient Data Race Detection for Unified Parallel C ParLab Winter Retreat 1/14/2011" Costin Iancu, LBL" Nick Jalbert, UC Berkeley" Chang-Seo Park,

More information

Analysis Tool Project

Analysis Tool Project Tool Overview The tool we chose to analyze was the Java static analysis tool FindBugs (http://findbugs.sourceforge.net/). FindBugs is A framework for writing static analyses Developed at the University

More information

Race Catcher. Automatically Pinpoints Concurrency Defects in Multi-threaded JVM Applications with 0% False Positives.

Race Catcher. Automatically Pinpoints Concurrency Defects in Multi-threaded JVM Applications with 0% False Positives. Race Catcher US and International Patents Issued and Pending. Automatically Pinpoints Concurrency Defects in Multi-threaded JVM Applications with 0% False Positives. Whitepaper Introducing Race Catcher

More information

Cooperari A tool for cooperative testing of multithreaded Java programs

Cooperari A tool for cooperative testing of multithreaded Java programs Cooperari A tool for cooperative testing of multithreaded Java programs Eduardo R. B. Marques, Francisco Martins, Miguel Simões! LASIGE/Departamento de Informática Faculdade de Ciências da Universidade

More information

Program logics for relaxed consistency

Program logics for relaxed consistency Program logics for relaxed consistency UPMARC Summer School 2014 Viktor Vafeiadis Max Planck Institute for Software Systems (MPI-SWS) 1st Lecture, 28 July 2014 Outline Part I. Weak memory models 1. Intro

More information

Static Detection of Atomicity Violations in Object-Oriented Programs

Static Detection of Atomicity Violations in Object-Oriented Programs Vol. 3, No. 2, March April 2004 Static Detection of Atomicity Violations in Object-Oriented Programs Christoph von Praun and Thomas Gross Laboratory for Software Technology, ETH Zurich, Switzerland Violations

More information

Dynamic Race Detection with LLVM Compiler

Dynamic Race Detection with LLVM Compiler Dynamic Race Detection with LLVM Compiler Compile-time instrumentation for ThreadSanitizer Konstantin Serebryany, Alexander Potapenko, Timur Iskhodzhanov, and Dmitriy Vyukov OOO Google, 7 Balchug st.,

More information

Avoiding Consistency Exceptions Under Strong Memory Models

Avoiding Consistency Exceptions Under Strong Memory Models Avoiding Consistency Exceptions Under Strong Memory Models Minjia Zhang Microsoft Research (USA) minjiaz@microsoft.com Swarnendu Biswas University of Texas at Austin (USA) sbiswas@ices.utexas.edu Michael

More information

FAULT DETECTION AND LOCALIZATION TECHNIQUES FOR CONCURRENT PROGRAMS. Jing Xu. Presented to the Faculty of the Graduate School of

FAULT DETECTION AND LOCALIZATION TECHNIQUES FOR CONCURRENT PROGRAMS. Jing Xu. Presented to the Faculty of the Graduate School of FAULT DETECTION AND LOCALIZATION TECHNIQUES FOR CONCURRENT PROGRAMS by Jing Xu Presented to the Faculty of the Graduate School of The University of Texas at Arlington in Partial Fulfillment of the Requirements

More information