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

Size: px
Start display at page:

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

Transcription

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 2 Intel Research mayur.naik@intel.com Abstract. Active testing has recently been introduced to effectively test concurrent programs. Active testing works in two phases. It first uses predictive off-the-shelf static or dynamic program analyses to identify potential concurrency bugs, such as data races, deadlocks, and atomicity violations. In the second phase, active testing uses the reports from these predictive analyses to explicitly control the underlying scheduler of the concurrent program to accurately and quickly discover real concurrency bugs, if any, with very high probability and little overhead. In this paper, we present an extensible framework for active testing of Java programs. The framework currently implements three active testers based on data races, atomic blocks, and deadlocks. 1 Introduction Multi-threaded programs often exhibit incorrect behavior due to unintended interference between threads. These concurrency bugs such as data races and deadlocks are often difficult to find using conventional testing techniques because they typically happen under very specific thread interleavings. Testing done in a particular environment often fails to come up with interleavings that could happen in other environments, such as under different system loads. Moreover, testing depends on the underlying operating system or the virtual machine for thread scheduling it does not try to explicitly control the thread schedules; thus, it often ends up executing the same interleaving repeatedly. Numerous program analysis techniques [2, 4, 1] have been developed to predict concurrency bugs in multi-threaded programs by detecting violations of commonly used synchronization idioms. For instance, accesses to a memory location without holding a common lock are used to predict data races on the location, and cycles in the program s lock order graph are used to predict deadlocks. However, these techniques often report many false warnings because violations of commonly used synchronization idioms do not necessarily indicate concurrency bugs. Manually inspecting these warnings is often tedious and error-prone. Recently, we have proposed a new technique for finding real bugs in concurrent programs, called active testing [7, 5, 3]. Active testing uses a randomized thread scheduler to verify if warnings reported by a predictive program analysis are real bugs. The technique works as follows. Active testing first uses an existing predictive off-the-shelf static or dynamic analysis, such as Lockset [6,

2 4], Atomizer [1], or Goodlock [2], to compute potential concurrency bugs. Each such potential bug is identified by a set of program statements. For example, in the case of a data race, the set contains two program statements that could potentially race with each other in some execution. For each potential concurrency bug, active testing runs the given concurrent program under random schedules. Further, active testing biases the random scheduling by pausing the execution of any thread when the thread reaches a statement involved in the potential concurrency bug. After pausing a thread, active testing also checks if a set of paused threads could exhibit a real concurrency bug. For example, in the case of a data race, active testing checks if two paused threads are about to access the same memory location and at least one of them is a write. Thus, active testing attempts to force the program to take a schedule in which the concurrency bug actually occurs. In previous work, we have developed active testing algorithms for detecting real data races, atomicity violations, and deadlocks. In this paper, we describe an extensible tool for active testing of concurrent Java programs, called CalFuzzer. CalFuzzer provides a framework for implementing both predictive dynamic analyses and custom schedulers for active testing. We elaborate upon each of these next. CalFuzzer provides a framework for implementing various predictive dynamic analyses to obtain a set of program statements involved in a potential concurrency bug. We have implemented three such techniques in CalFuzzer: a hybrid race detector [4], the Atomizer algorithm [1] for finding potential atomicity violations, and igoodlock [3] which is a more informative variant of the Goodlock algorithm [2] for detecting potential deadlocks. More generally, Cal- Fuzzer provides an interface and utility classes to enable users to implement additional such techniques. CalFuzzer also provides a framework for implementing custom schedulers for active testing. We call these custom schedulers active checkers. We have implemented three active checkers in CalFuzzer for detecting real data races, atomicity violations, and deadlocks. More generally, CalFuzzer allows users to specify an arbitrary set of program statements in the concurrent program under test where an active checker should pause. Such statements may be thought of as concurrent breakpoints. We have applied CalFuzzer to several real-world concurrent Java programs comprising a total of 600K lines of code and have detected both previously known and unknown data races, atomicity violations, and deadlocks. CalFuzzer could easily be extended to detect other kinds of concurrency bugs, such as missed notifications and atomic set violations. 2 The Active Testing Framework In this section, we give a high-level description of our active testing framework. We consider a concurrent system composed of a finite set of threads. Given a concurrent state s, let Enabled(s) denote the set of transitions that are enabled in the state s. Each thread executes a sequence of transitions and communicates 2

3 Algorithm 1 CalFuzzer with user defined analyze and check methods 1: Inputs: the initial state s 0 and a set of transitions breakpoints 2: paused := 3: s := s 0 4: while Enabled(s) do 5: t := a random transition in Enabled(s) \ paused 6: analyze(t) 7: if t breakpoints then 8: paused := check(t, paused) 9: end if 10: if t paused then 11: s := Execute(s, t) 12: end if 13: if paused = Enabled(s) then 14: remove a random element from paused 15: end if 16: end while 17: if Alive(s) then 18: print ERROR: system stall 19: end if with other threads through shared objects. We assume that each thread terminates after the execution of a finite number of transitions. A concurrent system evolves by transitioning from one state to another state. If s is a concurrent state and t is a transition, then Execute(s, t) executes the transition t in state s and returns the updated state. The pseudo-code in Algorithm 1 describes the CalFuzzer algorithm. The algorithm takes an initial state s 0 and a set of transitions (denoting a potential concurrency bug), called breakpoints, as input. The set of transitions paused is initialized to the empty set. Starting from the initial state s 0, at every state, CalFuzzer randomly picks a transition enabled at the state and not present in the set paused. It then calls the user defined method analyze to perform a user defined dynamic analysis, such as Lockset, Atomizer, or Goodlock. The analyze method can maintain its own local state; for example, the local state could maintain locksets and vector clocks in the case of hybrid race detection. If transition t is in the set breakpoints, CalFuzzer invokes the user defined method check, which takes t and the paused set as input and returns an updated paused set. The check method could be used to implement various active checkers. A typical implementation of the check method could add t to the paused set and remove some transitions from the paused set. After the invocation of check, CalFuzzer executes the transition t if it has not been added to the paused set by the check method. At the end of each iteration, CalFuzzer removes a random transition from the paused set if all the enabled transitions have been paused. The algorithm terminates when the system reaches a state that has no 3

4 enabled transitions. At termination, if there is at least one thread that is alive, the algorithm reports a system stall. Algorithm 2 The check method for active testing of data races 1: Inputs: transition t and a set of transitions paused 2: if t paused s.t. t and t access same location and one is a write then 3: print Real data race between t and t (* next resolve race randomly to check if something could go wrong due to the race *) 4: if random() then 5: add t to paused and remove t from paused 6: end if 7: else 8: add t to paused 9: end if 10: return paused 3 An Example Instantiation of the Framework CalFuzzer takes two user defined methods: analyze and check. In order to implement an active testing technique, one needs to define these two methods. For example, an active testing technique for data races [7] would require us to implement the hybrid race detection algorithm [4] in the analyze method and a check method as shown in Algorithm 2. Recall that the check method takes an enabled transition t in breakpoints and the set of paused transitions, paused, as input. If there exists a transition t in paused such that both t and t access the same memory location, and one of them is a write to that location, then we have exhibited a thread schedule which has a real race, namely the race between transitions t and t. In principle, we could stop at this point, but we go further and determine if this race is benign or harmful (e.g. causes an exception). For this purpose, we randomly decide whether we want t to execute before t, or vice versa. If random() returns true, then we let t to execute before t, by adding t to paused and removing t from it. Otherwise, we let t to execute before t. Since t is already paused, we keep it paused, and let t execute. 4 Implementation Details We have implemented the CalFuzzer active testing framework for Java. Cal- Fuzzer (available at instruments Java bytecode using the SOOT compiler framework [8] to insert callback functions before or after various synchronization operations and shared memory accesses. 3 These callback functions are used to implement various predictive dynamic analyses and active checkers. Each predictive dynamic analysis 3 We decided to instrument bytecode instead of changing the Java virtual machine or instrumenting Java source code because Java bytecode changes less frequently than JVM and Java source may not be available for libraries. 4

5 implements an interface called Analysis. The methods of these interface implements the analyze function in Algorithm 1. Likewise, each active checker is implemented by extending a class called ActiveChecker which implements the check functions in Algorithm 1. The methods of these two classes are called by the callback functions. The framework provides various utility classes, such as VectorClockTracker and LocksetTracker to compute vector clocks and locksets at runtime. Methods of these classes are invoked in the various callback functions described above. These utility classes are used in the hybrid race detection [4] and igoodlock [3] algorithms; other user defined dynamic analyses could also use these classes. The instrumentor of CalFuzzer modifies all bytecode associated with a Java program including the libraries it uses, except for the classes that are used to implement CalFuzzer. This is because CalFuzzer runs in the same memory space as the program under analysis. CalFuzzer cannot track lock acquires and releases by native code and can therefore go into a deadlock if there are synchronization operations inside uninstrumented classes or native code. To avoid such scenarios, CalFuzzer runs a low-priority monitor thread that periodically polls to check if there is any deadlock. If the monitor discovers a deadlock, then it removes one random transition from the paused set. CalFuzzer can also go into livelocks. Livelocks happen when all threads of the program end up in the paused set, except for one thread that does something in a loop without synchronizing with other threads. We observed such livelocks in a couple of our benchmarks including moldyn. In the presence of livelocks, these benchmarks work correctly because the correctness of these benchmarks assumes that the underlying Java thread scheduler is fair. In order to avoid livelocks, CalFuzzer creates a monitor thread that periodically removes those transitions from the paused set that are waiting for a long time. 5 Results Table 1 summarizes some of the results of running active testing on several real-world concurrency Java programs comprising a total of 600K lines of code. Further details are available in [7, 5, 3]. Note that the bugs reported by the active checkers (RaceFuzzer, AtomFuzzer, and DeadlockFuzzer) are real, whereas those reported by the dynamic analyses (hybrid race detector, Atomizer, and igoodlock) could be false warnings. Although active testing may not be able reproduce some real bugs, all previously known real bugs were reproduced, with the exception of AtomFuzzer (see [5] for a discussion on its limitations). The runtime overhead of CalFuzzer is from 1.1x to 20x. Normally, the slowdown is low since only the synchronization points and memory accesses of interest are instrumented. However, in some cases the slowdown is significant this is caused when CalFuzzer pauses redundantly at an event. We use precise abstractions [3] to distinguish relevant events, which lessens redundant pauses. 6 Conclusion CalFuzzer provides a framework for implementing predictive dynamic analyses to find potential concurrency bugs and custom randomized schedulers, called active checkers, to automatically verify if they are real bugs. We have implemented 5

6 Avg. runtime(s) Number of reported bugs Benchmark LoC Norm RF DF AF HRD RF KR ig DF KR Az AF KR moldyn 1, jspider 10, sor 17, hedc 25, DBCP 27, jigsaw 160, Java Swing 337, Table 1. Average execution time and number of bugs reported for each checker implemented with the CalFuzzer framework (LoC: Lines of Code, Norm: Uninstrumented code, RF: RaceFuzzer, DF: DeadlockFuzzer, AF: AtomFuzzer, HRD: Hybrid Race Detection, KR: Previously known real bugs, ig: igoodlock, Az: Atomizer) three active checkers in this framework for detecting data races, atomicity violations, and deadlocks. We have shown the effectiveness of these checkers on several real-world concurrent Java programs comprising a total of 600K lines of code. We believe CalFuzzer provides a simple extensible framework to implement other predictive dynamic analyses and active checkers. Acknowledgements. This research was supported in part by a generous gift from Intel, Microsoft and Intel funding (award # ), matching funding by U.C. Discovery (award #DIG ), and NSF Grant CNS References 1. C. Flanagan and S. N. Freund. Atomizer: a dynamic atomicity checker for multithreaded programs. In 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL), pages , K. Havelund. Using runtime analysis to guide model checking of java programs. In 7th International SPIN Workshop on Model Checking and Software Verification, pages , P. Joshi, C.-S. Park, K. Sen, and M. Naik. A randomized dynamic program analysis technique for detecting real deadlocks. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 09) (to appear), R. O Callahan and J.-D. Choi. Hybrid dynamic data race detection. In ACM SIGPLAN symposium on Principles and practice of parallel programming, pages ACM, C.-S. Park and K. Sen. Randomized active atomicity violation detection in concurrent programs. In 16th ACM SIGSOFT International Symposium on Foundations of software engineering, pages ACM, S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. E. Anderson. Eraser: A dynamic data race detector for multithreaded programs. ACM Trans. Comput. Syst., 15(4): , K. Sen. Race directed random testing of concurrent programs. In PLDI 08: Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation, pages 11 21, New York, NY, USA, ACM. 8. R. Vallee-Rai, L. Hendren, V. Sundaresan, P. Lam, E. Gagnon, and P. Co. Soot - a Java optimization framework. In CASCON 1999, pages ,

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

Active Testing for Concurrent Programs

Active Testing for Concurrent Programs Active Testing for Concurrent Programs Pallavi Joshi Mayur Naik Chang-Seo Park Koushik Sen 1/8/2009 ParLab Retreat ParLab, UC Berkeley Intel Research Overview Checking correctness of concurrent programs

More information

Active Testing for Concurrent Programs

Active Testing for Concurrent Programs Active Testing for Concurrent Programs Pallavi Joshi, Mayur Naik, Chang-Seo Park, Koushik Sen 12/30/2008 ROPAS Seminar ParLab, UC Berkeley Intel Research Overview ParLab The Parallel Computing Laboratory

More information

Race Directed Random Testing of Concurrent Programs

Race Directed Random Testing of Concurrent Programs Race Directed Random Testing of Concurrent Programs Koushik Sen EECS Department, UC Berkeley, CA, USA. ksen@cs.berkeley.edu Abstract Bugs in multi-threaded programs often arise due to data races. Numerous

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

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

FastTrack: Efficient and Precise Dynamic Race Detection (+ identifying destructive races) FastTrack: Efficient and Precise Dynamic Race Detection (+ identifying destructive races) Cormac Flanagan UC Santa Cruz Stephen Freund Williams College Multithreading and Multicore! Multithreaded programming

More information

Real-Time Automatic Detection of Stuck Transactions

Real-Time Automatic Detection of Stuck Transactions Real-Time Automatic Detection of Stuck Transactions Diploma thesis subject of Peter Hofer (0855349) in cooperation with Compuware Austria GmbH September 2012 Abstract The execution of business transactions

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

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

RATCOP: Relational Analysis Tool for Concurrent Programs

RATCOP: Relational Analysis Tool for Concurrent Programs RATCOP: Relational Analysis Tool for Concurrent Programs Suvam Mukherjee 1, Oded Padon 2, Sharon Shoham 2, Deepak D Souza 1, and Noam Rinetzky 2 1 Indian Institute of Science, India 2 Tel Aviv University,

More information

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

An Effective Dynamic Analysis for Detecting Generalized Deadlocks

An Effective Dynamic Analysis for Detecting Generalized Deadlocks An Effective Dynamic Analysis for Detecting Generalized Deadlocks Pallavi Joshi EECS, UC Berkeley, CA, USA pallavi@cs.berkeley.edu Mayur Naik Intel Labs Berkeley, CA, USA mayur.naik@intel.com David Gay

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

Clash of the Titans: Tools and Techniques for Hunting Bugs in Concurrent Programs

Clash of the Titans: Tools and Techniques for Hunting Bugs in Concurrent Programs Clash of the Titans: Tools and Techniques for Hunting Bugs in Concurrent Programs ABSTRACT Neha Rungta Dept. of Computer Science Brigham Young University Provo, UT 84602, USA neha@cs.byu.edu In this work

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

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

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

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

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

Deadlock Bug Detection Techniques

Deadlock Bug Detection Techniques CS492B Analysis of Concurrent Programs Deadlock Bug Detection Techniques Prof. Moonzoo Kim CS KAIST 1 Bug Detection Techniques for Concurrent Programs Verification Precision SPIN jcute Fusion Java PathFinder

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

Effective Static Deadlock Detection

Effective Static Deadlock Detection Effective Static Deadlock Detection Mayur Naik Intel Research mayur.naik@intel.com Chang-Seo Park and Koushik Sen UC Berkeley {parkcs,ksen@cs.berkeley.edu David Gay Intel Research david.e.gay@intel.com

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

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

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

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

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

A SURVEY ON TESTING CONCURRENT AND MULTI-THREADED APPLICATIONS TOOLS AND METHODOLOGIES

A SURVEY ON TESTING CONCURRENT AND MULTI-THREADED APPLICATIONS TOOLS AND METHODOLOGIES A SURVEY ON TESTING CONCURRENT AND MULTI-THREADED APPLICATIONS TOOLS AND METHODOLOGIES Desoky Abdelqawy, Amr Kamel and Fatma Omara, Department of Computer Science, Faculty of computer and information Cairo

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

AUTOMATICALLY INFERRING STRUCTURE CORRELATED VARIABLE SET FOR CONCURRENT ATOMICITY SAFETY

AUTOMATICALLY INFERRING STRUCTURE CORRELATED VARIABLE SET FOR CONCURRENT ATOMICITY SAFETY AUTOMATICALLY INFERRING STRUCTURE CORRELATED VARIABLE SET FOR CONCURRENT ATOMICITY SAFETY Long Pang 1, Xiaohong Su 2, Peijun Ma 3 and Lingling Zhao 4 School of Computer Science and Technology, Harbin Institute

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

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

Effec%ve Sta%c Deadlock Detec%on

Effec%ve Sta%c Deadlock Detec%on Effec%ve Sta%c Deadlock Detec%on Mayur Naik, Chang- Seo Park, Koushik Sen and David Gay ICSE 09 Presented by Alex Kogan 27.04.2014 Outline IntroducKon Suggested SoluKon EvaluaKon Related work Conclusions

More information

A Lightweight and Portable Approach to Making Concurrent Failures Reproducible

A Lightweight and Portable Approach to Making Concurrent Failures Reproducible A Lightweight and Portable Approach to Making Concurrent Failures Reproducible Qingzhou Luo 1, Sai Zhang 2, Jianjun Zhao 1, and Min Hu 1 1 School of Software, Shanghai Jiao Tong University {seriousam,

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

Redflag: A Framework for Analysis of Kernel-Level Concurrency

Redflag: A Framework for Analysis of Kernel-Level Concurrency Redflag: A Framework for Analysis of Kernel-Level Concurrency Justin Seyster, Prabakar Radhakrishnan, Samriti Katoch, Abhinav Duggal, Scott D. Stoller, and Erez Zadok Department of Computer Science, Stony

More information

Using Block-local Atomicity to Detect Stale-value Concurrency Errors

Using Block-local Atomicity to Detect Stale-value Concurrency Errors Using Block-local Atomicity to Detect Stale-value Concurrency Errors Cyrille Artho 1, Klaus Havelund 2, and Armin Biere 1 1 Computer Systems Institute, ETH Zürich, Switzerland 2 Kestrel Technology, NASA

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

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

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

The Quest for Precision: A Layered Approach for Data Race Detection in Static Analysis

The Quest for Precision: A Layered Approach for Data Race Detection in Static Analysis The Quest for Precision: A Layered Approach for Data Race Detection in Static Analysis Jakob Mund 1?, Ralf Huuck 2, Ansgar Fehnker 2,3, and Cyrille Artho 4 1 Technische Universität München, Munich, Germany

More information

Dynamic Detection of Atomic-Set-Serializability Violations

Dynamic Detection of Atomic-Set-Serializability Violations Dynamic Detection of Atomic-Set-Serializability Violations Christian Hammer Julian Dolby Mandana Vaziri Frank Tip Universität Karlsruhe (TH) IBM T. J. Watson Research Center 76128 Karlsruhe, Germany P.O.

More information

Concurrency, Mutual Exclusion and Synchronization C H A P T E R 5

Concurrency, Mutual Exclusion and Synchronization C H A P T E R 5 Concurrency, Mutual Exclusion and Synchronization C H A P T E R 5 Multiple Processes OS design is concerned with the management of processes and threads: Multiprogramming Multiprocessing Distributed processing

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

Finding Errors in Multithreaded GUI Applications

Finding Errors in Multithreaded GUI Applications Finding Errors in Multithreaded GUI Applications Sai Zhang University of Washington Joint work with: Hao Lu, Michael D. Ernst GUIs are everywhere in modern software 2 Multithreading in GUI applications

More information

Multi-level Debugging for Multi-stage, Parallelizing Compilers

Multi-level Debugging for Multi-stage, Parallelizing Compilers Multi-level Debugging for Multi-stage, Parallelizing Compilers Richard Xia Tayfun Elmas Shoaib Ashraf Kamil Armando Fox Koushik Sen Electrical Engineering and Computer Sciences University of California

More information

Java PathFinder JPF 2 Second Generation of Java Model Checker

Java PathFinder JPF 2 Second Generation of Java Model Checker Java PathFinder JPF 2 Second Generation of Java Model Checker Guenther Brand Mat. Nr. 9430535 27. 06. 2003 Abstract This essay is based on the papers Java PathFinder, Second Generation of Java Model Checker

More information

Semantic Atomicity for Multithreaded Programs!

Semantic Atomicity for Multithreaded Programs! 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 Semantic Atomicity for Multithreaded Programs! Jacob Burnim, George Necula, Koushik Sen! Parallel Computing Laboratory! University of California, Berkeley!

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

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

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

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

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

The SPIN Model Checker

The SPIN Model Checker The SPIN Model Checker Metodi di Verifica del Software Andrea Corradini Lezione 1 2013 Slides liberamente adattate da Logic Model Checking, per gentile concessione di Gerard J. Holzmann http://spinroot.com/spin/doc/course/

More information

An Overview of Integration Testing Techniques for Object-Oriented Programs

An Overview of Integration Testing Techniques for Object-Oriented Programs To appear in Proceedings of the 2nd ACIS Annual International Conference on Computer and Information Science (ICIS 2002), International Association for Computer and Information Science, Mt. Pleasant, Michigan

More information

Symbolic Execution, Dynamic Analysis

Symbolic Execution, Dynamic Analysis Symbolic Execution, Dynamic Analysis http://d3s.mff.cuni.cz Pavel Parízek CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Symbolic execution Pavel Parízek Symbolic Execution, Dynamic Analysis

More information

Intel Threading Tools

Intel Threading Tools Intel Threading Tools Paul Petersen, Intel -1- INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS,

More information

Tackling runtime-based obfuscation in Android with TIRO

Tackling runtime-based obfuscation in Android with TIRO Tackling runtime-based obfuscation in Android with Michelle Wong and David Lie University of Toronto Usenix Security 2018 Android malware and analysis Mobile devices are a valuable target for malware developers

More information

A taxonomy of race. D. P. Helmbold, C. E. McDowell. September 28, University of California, Santa Cruz. Santa Cruz, CA

A taxonomy of race. D. P. Helmbold, C. E. McDowell. September 28, University of California, Santa Cruz. Santa Cruz, CA A taxonomy of race conditions. D. P. Helmbold, C. E. McDowell UCSC-CRL-94-34 September 28, 1994 Board of Studies in Computer and Information Sciences University of California, Santa Cruz Santa Cruz, CA

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

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 Classification of Concurrency Bugs in Java Benchmarks by Developer Intent

A Classification of Concurrency Bugs in Java Benchmarks by Developer Intent A Classification of Concurrency Bugs in Java Benchmarks by Developer Intent M. Erkan Keremoglu, Serdar Tasiran, Tayfun Elmas Center for Advanced Design Technologies @ Koc University http://designtech.ku.edu.tr

More information

Shared Objects & Mutual Exclusion

Shared Objects & Mutual Exclusion Feb. 08, 2012 Concurrent Execution Concepts Process interference Mutual exclusion Models Model checking for interference Modeling mutual exclusion Practice Multithreaded Java programs Thread interference

More information

FULLY AUTOMATIC AND PRECISE DETECTION OF THREAD SAFETY VIOLATIONS

FULLY AUTOMATIC AND PRECISE DETECTION OF THREAD SAFETY VIOLATIONS FULLY AUTOMATIC AND PRECISE DETECTION OF THREAD SAFETY VIOLATIONS PLDI 2012 by Michael Pradel and Thomas R. Gross ETH Zurich presented by Martin Aigner University of Salzburg May 2, 2013 OVERVIEW The problem

More information

Marathon: Detecting Atomic-Set Serializability Violations with Conflict Graphs

Marathon: Detecting Atomic-Set Serializability Violations with Conflict Graphs Marathon: Detecting Atomic-Set Serializability Violations with Conflict Graphs William N. Sumner 1, Christian Hammer 1,2, and Julian Dolby 3 1 Purdue University, West Lafayette, IN, USA wsumner@cs.purdue.edu

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

Computation Abstractions. Processes vs. Threads. So, What Is a Thread? CMSC 433 Programming Language Technologies and Paradigms Spring 2007

Computation Abstractions. Processes vs. Threads. So, What Is a Thread? CMSC 433 Programming Language Technologies and Paradigms Spring 2007 CMSC 433 Programming Language Technologies and Paradigms Spring 2007 Threads and Synchronization May 8, 2007 Computation Abstractions t1 t1 t4 t2 t1 t2 t5 t3 p1 p2 p3 p4 CPU 1 CPU 2 A computer Processes

More information

Enforcing Textual Alignment of

Enforcing Textual Alignment of Parallel Hardware Parallel Applications IT industry (Silicon Valley) Parallel Software Users Enforcing Textual Alignment of Collectives using Dynamic Checks and Katherine Yelick UC Berkeley Parallel Computing

More information

Program Partitioning - A Framework for Combining Static and Dynamic Analysis

Program Partitioning - A Framework for Combining Static and Dynamic Analysis Program Partitioning - A Framework for Combining Static and Dynamic Analysis Pankaj Jalote, Vipindeep V, Taranbir Singh, Prateek Jain Department of Computer Science and Engineering Indian Institute of

More information

Prediction of Coverage of Expensive Concurrency Metrics Using Cheaper Metrics

Prediction of Coverage of Expensive Concurrency Metrics Using Cheaper Metrics Prediction of Coverage of Expensive Concurrency Metrics Using Cheaper Metrics Bohuslav Křena, Hana Pluháčková, Shmuel Ur, and Tomáš Vojnar IT4Innovations Centre of Excellence, FIT, Brno University of Technology,

More information

Preventing Defects. SWE 795, Spring 2017 Software Engineering Environments

Preventing Defects. SWE 795, Spring 2017 Software Engineering Environments Preventing Defects SWE 795, Spring 2017 Software Engineering Environments Today Part 1 (Lecture)(~60 mins) Part 2 (HW3 Checkpoint Presentations)(20 mins) Break! Part 3 (Discussion)(~60 mins) Discussion

More information

Automatically Repairing Concurrency Bugs with ARC MUSEPAT 2013 Saint Petersburg, Russia

Automatically Repairing Concurrency Bugs with ARC MUSEPAT 2013 Saint Petersburg, Russia Automatically Repairing Concurrency Bugs with ARC MUSEPAT 2013 Saint Petersburg, Russia David Kelk, Kevin Jalbert, Jeremy S. Bradbury Faculty of Science (Computer Science) University of Ontario Institute

More information

Virtual Machine Design

Virtual Machine Design Virtual Machine Design Lecture 4: Multithreading and Synchronization Antero Taivalsaari September 2003 Session #2026: J2MEPlatform, Connected Limited Device Configuration (CLDC) Lecture Goals Give an overview

More information

arxiv:cs/ v1 [cs.lo] 22 Jun 2005

arxiv:cs/ v1 [cs.lo] 22 Jun 2005 The One Page Model Checker arxiv:cs/0506084v1 [cs.lo] 22 Jun 2005 Jason E. Holt isrl@lunkwill.org June 5, 2017 Abstract We show how standard IPC mechanisms can be used with the fork() system call to perform

More information

VyrdMC: Driving Runtime Refinement Checking with Model Checkers

VyrdMC: Driving Runtime Refinement Checking with Model Checkers Electronic Notes in Theoretical Computer Science 144 (2006) 41 56 www.elsevier.com/locate/entcs VyrdMC: Driving Runtime Refinement Checking with Model Checkers Tayfun Elmas 1 Serdar Tasiran 2 College of

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

Tracechecks: Defining semantic interfaces with temporal logic

Tracechecks: Defining semantic interfaces with temporal logic Tracechecks Defining semantic interfaces with temporal logic Eric Bodden 1 Volker Stolz 2 1 Sable Research Group McGill University, Montréal, Canada 2 MOVES: Software Modeling and Verification RWTH Aachen

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

Recall from Chapter 1 that a data race is a failure to correctly implement critical sections for non-atomic shared variable accesses.

Recall from Chapter 1 that a data race is a failure to correctly implement critical sections for non-atomic shared variable accesses. 3.10 Tracing, Testing, and Replay for Semaphores and Locks Outline: A technique for detecting violations of mutual exclusion. Tracing and replaying executions during debugging. Deadlock detection Reachability

More information

Pre- and post- CS protocols. CS 361 Concurrent programming Drexel University Fall 2004 Lecture 7. Other requirements for a mutual exclusion algorithm

Pre- and post- CS protocols. CS 361 Concurrent programming Drexel University Fall 2004 Lecture 7. Other requirements for a mutual exclusion algorithm CS 361 Concurrent programming Drexel University Fall 2004 Lecture 7 Bruce Char and Vera Zaychik. All rights reserved by the author. Permission is given to students enrolled in CS361 Fall 2004 to reproduce

More information

Magiclock: Scalable Detection of Potential Deadlocks in Large-Scale Multithreaded Programs

Magiclock: Scalable Detection of Potential Deadlocks in Large-Scale Multithreaded Programs Magiclock: Scalable Detection of Potential Deadlocks in Large-Scale Multithreaded Programs Yan Cai and W.K. Chan Abstract We present Magiclock, a novel potential deadlock detection technique by analyzing

More information

A Trace Simplification Technique for Effective Debugging of Concurrent Programs

A Trace Simplification Technique for Effective Debugging of Concurrent Programs A Trace Simplification Technique for Effective Debugging of Concurrent Programs Nicholas Jalbert EECS Department, UC Berkeley, CA, USA jalbert@cs.berkeley.edu Koushik Sen EECS Department, UC Berkeley,

More information

Scalable Program Verification by Lazy Abstraction

Scalable Program Verification by Lazy Abstraction Scalable Program Verification by Lazy Abstraction Ranjit Jhala U.C. Berkeley ars, July, 997 Lost contact due to real-time priority inversion bug ars, December, 999 Crashed due to uninitialized variable

More information

Object-Specific Redundancy Elimination Techniques

Object-Specific Redundancy Elimination Techniques Object-Specific Redundancy Elimination Techniques Rhodes H. F. Brown and R. Nigel Horspool {rhodesb,nigelh@cs.uvic.ca Department of Computer Science University of Victoria, P.O. Box 3055 Victoria, BC,

More information

CS 455: INTRODUCTION TO DISTRIBUTED SYSTEMS [THREADS] Frequently asked questions from the previous class survey

CS 455: INTRODUCTION TO DISTRIBUTED SYSTEMS [THREADS] Frequently asked questions from the previous class survey CS 455: INTRODUCTION TO DISTRIBUTED SYSTEMS [THREADS] Threads block when they can t get that lock Wanna have your threads stall? Go ahead, synchronize it all The antidote to this liveness pitfall? Keeping

More information

Evaluating a Demand Driven Technique for Call Graph Construction

Evaluating a Demand Driven Technique for Call Graph Construction Evaluating a Demand Driven Technique for Call Graph Construction Gagan Agrawal 1,JinqianLi 2, and Qi Su 2 1 Department of Computer and Information Sciences, Ohio State University Columbus, OH 43210 agrawal@cis.ohio-state.edu

More information

Tracing Data Flows to Find Concurrency Errors

Tracing Data Flows to Find Concurrency Errors Tracing Data Flows to Find Concurrency Errors Presented by: Benjamin Ylvisaker Senior Scientist GrammaTech, Inc. 531 Esty Street, Ithaca, NY 14850 Tel: 607 273-7340 E-mail: benjaminy@grammatech.com GrammaTech

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

Concurrency. Glossary

Concurrency. Glossary Glossary atomic Executing as a single unit or block of computation. An atomic section of code is said to have transactional semantics. No intermediate state for the code unit is visible outside of the

More information

G Programming Languages Spring 2010 Lecture 13. Robert Grimm, New York University

G Programming Languages Spring 2010 Lecture 13. Robert Grimm, New York University G22.2110-001 Programming Languages Spring 2010 Lecture 13 Robert Grimm, New York University 1 Review Last week Exceptions 2 Outline Concurrency Discussion of Final Sources for today s lecture: PLP, 12

More information

Reinhard v. Hanxleden 1, Michael Mendler 2, J. Aguado 2, Björn Duderstadt 1, Insa Fuhrmann 1, Christian Motika 1, Stephen Mercer 3 and Owen Brian 3

Reinhard v. Hanxleden 1, Michael Mendler 2, J. Aguado 2, Björn Duderstadt 1, Insa Fuhrmann 1, Christian Motika 1, Stephen Mercer 3 and Owen Brian 3 Sequentially Constructive Concurrency * A conservative extension of the Synchronous Model of Computation Reinhard v. Hanxleden, Michael Mendler 2, J. Aguado 2, Björn Duderstadt, Insa Fuhrmann, Christian

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

Hierarchical Pointer Analysis for Distributed Programs

Hierarchical Pointer Analysis for Distributed Programs Hierarchical Pointer Analysis for Distributed Programs Amir Kamil Computer Science Division, University of California, Berkeley kamil@cs.berkeley.edu April 14, 2006 1 Introduction Many distributed, parallel

More information

Deterministic Parallel Programming

Deterministic Parallel Programming Deterministic Parallel Programming Concepts and Practices 04/2011 1 How hard is parallel programming What s the result of this program? What is data race? Should data races be allowed? Initially x = 0

More information

Asserting and Checking Determinism for Multithreaded Programs

Asserting and Checking Determinism for Multithreaded Programs Asserting and Checking Determinism for Multithreaded rograms Jacob Burnim EECS Department, UC Berkeley, CA, USA jburnim@cs.berkeley.edu Koushik Sen EECS Department, UC Berkeley, CA, USA ksen@cs.berkeley.edu

More information

Non-blocking Array-based Algorithms for Stacks and Queues. Niloufar Shafiei

Non-blocking Array-based Algorithms for Stacks and Queues. Niloufar Shafiei Non-blocking Array-based Algorithms for Stacks and Queues Niloufar Shafiei Outline Introduction Concurrent stacks and queues Contributions New algorithms New algorithms using bounded counter values Correctness

More information

Static and Dynamic Program Analysis: Synergies and Applications

Static and Dynamic Program Analysis: Synergies and Applications Static and Dynamic Program Analysis: Synergies and Applications Mayur Naik Intel Labs, Berkeley CS 243, Stanford University March 9, 2011 Today s Computing Platforms Trends: parallel cloud mobile Traits:

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

Evolving HPCToolkit John Mellor-Crummey Department of Computer Science Rice University Scalable Tools Workshop 7 August 2017

Evolving HPCToolkit John Mellor-Crummey Department of Computer Science Rice University   Scalable Tools Workshop 7 August 2017 Evolving HPCToolkit John Mellor-Crummey Department of Computer Science Rice University http://hpctoolkit.org Scalable Tools Workshop 7 August 2017 HPCToolkit 1 HPCToolkit Workflow source code compile &

More information