On-the-fly detection of access anomalies
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
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
Data flow analysis for verifying properties of concurrent programs
SIGSOFT '94 Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering
Eraser: a dynamic data race detector for multi-threaded programs
Proceedings of the sixteenth ACM symposium on Operating systems principles
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Guava: a dialect of Java without data races
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Time, clocks, and the ordering of events in a distributed system
Communications of the ACM
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
Ownership types for safe programming: preventing data races and deadlocks
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Type-safe multithreading in cyclone
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
TRaDe: Data Race Detection for Java
ICCS '01 Proceedings of the International Conference on Computational Science-Part II
Runtime Checking of Multithreaded Applications with Visual Threads
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
Static conflict analysis for multi-threaded object-oriented programs
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
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
RacerX: effective, static detection of race conditions and deadlocks
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automated type-based analysis of data races and atomicity
Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming
RaceTrack: efficient detection of data race conditions via adaptive tracking
Proceedings of the twentieth ACM symposium on Operating systems principles
Optimized run-time race detection and atomicity checking using partial discovered types
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Types for safe locking: Static race detection for Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Accurate and efficient runtime detection of atomicity errors in concurrent programs
Proceedings of the eleventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Effective static race detection for Java
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
LOCKSMITH: context-sensitive correlation analysis for race detection
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
A theory of data race detection
Proceedings of the 2006 workshop on Parallel and distributed systems: testing and debugging
Online efficient predictive safety analysis of multithreaded programs
International Journal on Software Tools for Technology Transfer (STTT)
MultiRace: efficient on-the-fly data race detection in multithreaded C++ programs: Research Articles
Concurrency and Computation: Practice & Experience - Parallel and Distributed Systems: Testing and Debugging (PADTAD)
Goldilocks: a race and transaction-aware java runtime
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
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
RELAY: static race detection on millions of lines of code
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Context-sensitive pointer analysis using binary decision diagrams
Context-sensitive pointer analysis using binary decision diagrams
jPredictor: a predictive runtime analysis tool for java
Proceedings of the 30th international conference on Software engineering
Race directed random testing of concurrent programs
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Velodrome: a sound and complete dynamic atomicity checker for multithreaded programs
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Racer: effective race detection using aspectj
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
FastTrack: efficient and precise dynamic race detection
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Meta-analysis for Atomicity Violations under Nested Locking
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
Static and Precise Detection of Concurrency Errors in Systems Code Using SMT Solvers
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
Symbolic Predictive Analysis for Concurrent Programs
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Parametric and sliced causality
CAV'07 Proceedings of the 19th international conference on Computer aided verification
PACER: proportional detection of data races
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
The RoadRunner Dynamic Analysis Framework for Concurrent Programs
Proceedings of the 9th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Finding and reproducing Heisenbugs in concurrent programs
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
PENELOPE: weaving threads to expose atomicity violations
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Generating data race witnesses by an SMT-based analysis
NFM'11 Proceedings of the Third international conference on NASA Formal methods
Universal causality graphs: a precise happens-before model for detecting bugs in concurrent programs
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Detecting errors in multithreaded programs by generalized predictive analysis of executions
FMOODS'05 Proceedings of the 7th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
Reasoning about threads communicating via locks
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
Trace-Based symbolic analysis for atomicity violations
TACAS'10 Proceedings of the 16th international conference on Tools and Algorithms for the Construction and Analysis of Systems
DTAM: dynamic taint analysis of multi-threaded programs for relevancy
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Predicting null-pointer dereferences in concurrent programs
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Practical static race detection for Java parallel loops
Proceedings of the 2013 International Symposium on Software Testing and Analysis
DPAC: an infrastructure for dynamic program analysis of concurrency Java programs
Proceedings of the 2013 Middleware Doctoral Symposium
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
Race directed scheduling of concurrent programs
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
Hi-index | 0.00 |
Data races are among the most reliable indicators of programming errors in concurrent software. For at least two decades, Lamport's happens-before (HB) relation has served as the standard test for detecting races--other techniques, such as lockset-based approaches, fail to be sound, as they may falsely warn of races. This work introduces a new relation, causally-precedes (CP), which generalizes happens-before to observe more races without sacrificing soundness. Intuitively, CP tries to capture the concept of happens-before ordered events that must occur in the observed order for the program to observe the same values. What distinguishes CP from past predictive race detection approaches (which also generalize an observed execution to detect races in other plausible executions) is that CP-based race detection is both sound and of polynomial complexity. We demonstrate that the unique aspects of CP result in practical benefit. Applying CP to real-world programs, we successfully analyze server-level applications (e.g., Apache FtpServer) and show that traces longer than in past predictive race analyses can be analyzed in mere seconds to a few minutes. For these programs, CP race detection uncovers races that are hard to detect by repeated execution and HB race detection: a single run of CP race detection produces several races not discovered by 10 separate rounds of happens-before race detection.