The mutual exclusion problem: part I—a theory of interprocess communication
Journal of the ACM (JACM)
A mechanism for efficient debugging of parallel programs
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Automatic detection of nondeterminacy in parallel programs
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
Critical Races in Ada Programs
IEEE Transactions on Software Engineering
Event synchronization analysis for debugging parallel programs
Proceedings of the 1989 ACM/IEEE conference on Supercomputing
Making asynchronous parallelism safe for the world
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An empirical comparison of monitoring algorithms for access anomaly detection
PPOPP '90 Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming
An efficient cache-based access anomaly detection scheme
ASPLOS IV Proceedings of the fourth international conference on Architectural support for programming languages and operating systems
Improving the accuracy of data race detection
PPOPP '91 Proceedings of the third ACM SIGPLAN symposium on Principles and practice of parallel programming
Race Frontier: reproducing data races in parallel-program debugging
PPOPP '91 Proceedings of the third ACM SIGPLAN symposium on Principles and practice of parallel programming
Parallel program debugging with on-the-fly anomaly detection
Proceedings of the 1990 ACM/IEEE conference on Supercomputing
Techniques for debugging parallel programs with flowback analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Detecting access anomalies in programs with critical sections
PADD '91 Proceedings of the 1991 ACM/ONR workshop on Parallel and distributed debugging
On-the-fly detection of data races for programs with nested fork-join parallelism
Proceedings of the 1991 ACM/IEEE conference on Supercomputing
Pace condition detection for debugging shared-memory parallel programs
Pace condition detection for debugging shared-memory parallel programs
Compile-time detection of race conditions in a parallel program
ICS '89 Proceedings of the 3rd international conference on Supercomputing
Reliability Issues in Computing System Design
ACM Computing Surveys (CSUR)
SPAA '93 Proceedings of the fifth annual ACM symposium on Parallel algorithms and architectures
A bibliography of parallel debuggers, 1993 edition
PADD '93 Proceedings of the 1993 ACM/ONR workshop on Parallel and distributed debugging
State-space analysis as an aid to testing
ISSTA '94 Proceedings of the 1994 ACM SIGSOFT international symposium on Software testing and analysis
Programming DEC-Alpha based multiprocessors the easy way (extended abstract)
SPAA '94 Proceedings of the sixth annual ACM symposium on Parallel algorithms and architectures
Data flow analysis of parallel programs
PACT '95 Proceedings of the IFIP WG10.3 working conference on Parallel architectures and compilation techniques
KDB: a multi-threaded debugger for multi-threaded applications
SPDT '96 Proceedings of the SIGMETRICS symposium on Parallel and distributed tools
Efficient detection of determinacy races in Cilk programs
Proceedings of the ninth annual ACM symposium on Parallel algorithms and architectures
Detecting data races in Cilk programs that use locks
Proceedings of the tenth annual ACM symposium on Parallel algorithms and architectures
Protocol-based data-race detection
SPDT '98 Proceedings of the SIGMETRICS symposium on Parallel and distributed tools
Critical Path Profiling of Message Passing and Shared-Memory Programs
IEEE Transactions on Parallel and Distributed Systems
RecPlay: a fully integrated practical record/replay system
ACM Transactions on Computer Systems (TOCS)
A Protocol-Centric Approach to on-the-Fly Race Detection
IEEE Transactions on Parallel and Distributed Systems
Verifying safety properties of concurrent Java programs using 3-valued logic
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Efficient and precise datarace detection for multithreaded object-oriented programs
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Non-Intrusive Detection of Synchronization Errors Using Execution Replay
Automated Software Engineering
A Concept of Portable Monitoring of Multithreaded Programs
ICCS '02 Proceedings of the International Conference on Computational Science-Part II
Event Manipulation for Nondeterministic Shared-Memory Programs
HPCN Europe 2001 Proceedings of the 9th International Conference on High-Performance Computing and Networking
Space-Efficient First Race Detection in Shared Memory Programs with Nested Parallelism
PARA '02 Proceedings of the 6th International Conference on Applied Parallel Computing Advanced Scientific Computing
Debugging OpenMP Programs Using Event Manipulation
WOMPAT '01 Proceedings of the International Workshop on OpenMP Applications and Tools: OpenMP Shared Memory Parallel Programming
Detection of Races and Control-Flow Nondeterminism
LCR '98 Selected Papers from the 4th International Workshop on Languages, Compilers, and Run-Time Systems for Scalable Computers
Hybrid dynamic data race detection
Proceedings of the ninth ACM SIGPLAN symposium on Principles and practice of parallel programming
Efficient on-the-fly data race detection in multithreaded C++ programs
Proceedings of the ninth ACM SIGPLAN symposium on Principles and practice of parallel programming
A "flight data recorder" for enabling full-system multiprocessor deterministic replay
Proceedings of the 30th annual international symposium on Computer architecture
A monitoring system for multithreaded applications
Future Generation Computer Systems - Tools for program development and analysis
Record/replay for nondeterministic program executions
Communications of the ACM - Why CS students need math
A serializability violation detector for shared-memory server programs
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Preventing race condition attacks on file-systems
Proceedings of the 2005 ACM symposium on Applied computing
Communication Optimizations for Fine-Grained UPC Applications
Proceedings of the 14th International Conference on Parallel Architectures and Compilation Techniques
Making Sequential Consistency Practical in Titanium
SC '05 Proceedings of the 2005 ACM/IEEE conference on Supercomputing
A classification of concurrency bugs in java benchmarks by developer intent
Proceedings of the 2006 workshop on Parallel and distributed systems: testing and debugging
A theory of data race detection
Proceedings of the 2006 workshop on Parallel and distributed systems: testing and debugging
A case study of multi-threading in the embedded space
CASES '06 Proceedings of the 2006 international conference on Compilers, architecture and synthesis for embedded systems
Lightweight lock-free synchronization methods for multithreading
Proceedings of the 20th annual international conference on Supercomputing
Abstract Interpretation Against Races
Fundamenta Informaticae - Concurrency Specification and Programming (CS&P 2003)
Programming with exceptions in JCilk
Science of Computer Programming - Special issue: Synchronization and concurrency in object-oriented languages
Implicit parallelism with ordered transactions
Proceedings of the 12th ACM SIGPLAN symposium on Principles and practice of parallel programming
Detecting data races using dynamic escape analysis based on read barrier
VM'04 Proceedings of the 3rd conference on Virtual Machine Research And Technology Symposium - Volume 3
Fault Detection in Multi-Threaded C++ Server Applications
Electronic Notes in Theoretical Computer Science (ENTCS)
Proceedings of the 2007 ACM workshop on Parallel and distributed systems: testing and debugging
Automatic nonblocking communication for partitioned global address space programs
Proceedings of the 21st annual international conference on Supercomputing
Testing concurrent programs using value schedules
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Dynamic detection of atomic-set-serializability violations
Proceedings of the 30th international conference on Software engineering
A study of student strategies for the corrective maintenance of concurrent software
Proceedings of the 30th international conference on Software engineering
On-the-fly race detection in multi-threaded programs
PADTAD '08 Proceedings of the 6th workshop on Parallel and distributed systems: testing, analysis, and debugging
RCanalyser: A Flexible Framework for the Detection of Data Races in Parallel Programs
Ada-Europe '08 Proceedings of the 13th Ada-Europe international conference on Reliable Software Technologies
Monitoring Atomicity in Concurrent Programs
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
On Race Vulnerabilities in Web Applications
DIMVA '08 Proceedings of the 5th international conference on Detection of Intrusions and Malware, and Vulnerability Assessment
Race analysis for SystemC using model checking
Proceedings of the 2008 IEEE/ACM International Conference on Computer-Aided Design
SingleTrack: A Dynamic Determinism Checker for Multithreaded Programs
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Reducers and other Cilk++ hyperobjects
Proceedings of the twenty-first annual symposium on Parallelism in algorithms and architectures
A Tool for Detecting First Races in OpenMP Programs
PaCT '09 Proceedings of the 10th International Conference on Parallel Computing Technologies
The Cilk++ concurrency platform
Proceedings of the 46th Annual Design Automation Conference
SideTrack: generalizing dynamic atomicity analysis
Proceedings of the 7th Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging
Grace: safe multithreaded programming for C/C++
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Verifying safety properties of concurrent heap-manipulating programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Cilk++ concurrency platform
The Journal of Supercomputing
Race analysis for systemc using model checking
ACM Transactions on Design Automation of Electronic Systems (TODAES)
Scalable thread visualization for debugging data races in OpenMP programs
GPC'07 Proceedings of the 2nd international conference on Advances in grid and pervasive computing
Detection of violations to the MPI standard in hybrid OpenMP/MPI applications
IWOMP'08 Proceedings of the 4th international conference on OpenMP in a new era of parallelism
ThreadSanitizer: data race detection in practice
Proceedings of the Workshop on Binary Instrumentation and Applications
Static analysis via abstract interpretation of the happens-before memory model
TAP'08 Proceedings of the 2nd international conference on Tests and proofs
An effective method to control interrupt handler for data race detection
Proceedings of the 5th Workshop on Automation of Software Test
Proceedings of the twenty-second annual ACM symposium on Parallelism in algorithms and architectures
Static nonconcurrency analysis of OpenMP programs
IWOMP'05/IWOMP'06 Proceedings of the 2005 and 2006 international conference on OpenMP shared memory parallel programming
NDSeq: runtime checking for nondeterministic sequential specifications of parallel correctness
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Demand-driven software race detection using hardware performance counters
Proceedings of the 38th annual international symposium on Computer architecture
Persuasive prediction of concurrency access anomalies
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Detecting high-level synchronization errors in parallel programs
Ada-Europe'11 Proceedings of the 16th Ada-Europe international conference on Reliable software technologies
Dthreads: efficient deterministic multithreading
SOSP '11 Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles
Toward a formal semantic framework for deterministic parallel programming
DISC'11 Proceedings of the 25th international conference on Distributed computing
Concurrency analysis for parallel programs with textually aligned barriers
LCPC'05 Proceedings of the 18th international conference on Languages and Compilers for Parallel Computing
Efficient computation of communicator variables for programs with unstructured parallelism
LCPC'04 Proceedings of the 17th international conference on Languages and Compilers for High Performance Computing
Internally deterministic parallel algorithms can be fast
Proceedings of the 17th ACM SIGPLAN symposium on Principles and Practice of Parallel Programming
Deterministic parallel random-number generation for dynamic-multithreading platforms
Proceedings of the 17th ACM SIGPLAN symposium on Principles and Practice of Parallel Programming
A case for unlimited watchpoints
ASPLOS XVII Proceedings of the seventeenth international conference on Architectural Support for Programming Languages and Operating Systems
A practical tool for detecting races in OpenMP programs
PaCT'05 Proceedings of the 8th international conference on Parallel Computing Technologies
A component-oriented model for the design of safe multi-threaded applications
CBSE'05 Proceedings of the 8th international conference on Component-Based Software Engineering
Goldilocks: efficiently computing the happens-before relation using locksets
FATES'06/RV'06 Proceedings of the First combined international conference on Formal Approaches to Software Testing and Runtime Verification
Acculock: Accurate and efficient detection of data races
CGO '11 Proceedings of the 9th Annual IEEE/ACM International Symposium on Code Generation and Optimization
An MDE approach to address synchronization needs in component-based real-time systems
Proceedings of the 15th ACM SIGSOFT symposium on Component Based Software Engineering
Memory-mapping support for reducer hyperobjects
Proceedings of the twenty-fourth annual ACM symposium on Parallelism in algorithms and architectures
On-the-fly detection of data races in OpenMP programs
Proceedings of the 2012 Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging
Abstract Interpretation Against Races
Fundamenta Informaticae - Concurrency Specification and Programming (CS&P 2003)
Hierarchical pointer analysis for distributed programs
SAS'07 Proceedings of the 14th international conference on Static Analysis
Efficient race verification for debugging programs with openMP directives
PaCT'07 Proceedings of the 9th international conference on Parallel Computing Technologies
Dynamic race detection techniques for interrupt-driven programs
FGIT'12 Proceedings of the 4th international conference on Future Generation Information Technology
Scaling data race detection for partitioned global address space programs
Proceedings of the 27th international ACM conference on International conference on supercomputing
Finding incorrect compositions of atomicity
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Low-level detection of language-level data races with LARD
Proceedings of the 19th international conference on Architectural support for programming languages and operating systems
Hi-index | 0.00 |
In shared-memory parallel programs that use explicit synchronization, race conditions result when accesses to shared memory are not properly synchronized. Race conditions are often considered to be manifestations of bugs, since their presence can cause the program to behave unexpectedly. Unfortunately, there has been little agreement in the literature as to precisely what constitutes a race condition. Two different notions have been implicitly considered: one pertaining to programs intended to be deterministic (which we call general races) and the other to nondeterministic programs containing critical sections (which we call data races). However, the differences between general races and data races have not yet been recognized. This paper examines these differences by characterizing races using a formal model and exploring their properties. We show that two variations of each type of race exist: feasible general races and data races capture the intuitive notions desired for debugging and apparent races capture less accurate notions implicitly assumed by most dynamic race detection methods. We also show that locating feasible races is an NP-hard problem, implying that only the apparent races, which are approximations to feasible races, can be detected in practice. The complexity of dynamically locating apparent races depends on the type of synchronization used by the program. Apparent races can be exhaustively located efficiently only for weak types of synchronization that are incapable of implementing mutual exclusion. This result has important implications since we argue that debugging general races requires exhaustive race detection and is inherently harder than debugging data races (which requires only partial race detection). Programs containing data races can therefore be efficiently debugged by locating certain easily identifiable races. In contrast, programs containing general races require more complex debugging techniques.