Techniques for debugging parallel programs with flowback analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Detecting data races on weak memory systems
ISCA '91 Proceedings of the 18th annual international symposium on Computer architecture
Detecting access anomalies in programs with critical sections
PADD '91 Proceedings of the 1991 ACM/ONR workshop on Parallel and distributed debugging
IEEE Transactions on Software Engineering - Special issue on formal methods in software practice
Model checking for programming languages using VeriSoft
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Model checking
Type-based race detection for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
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
Reduction: a method of proving properties of parallel programs
Communications of the ACM
Detecting race conditions in large programs
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
A parameterized type system for race-free Java programs
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
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
The nesC language: A holistic approach to networked embedded systems
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
A type and effect system for atomicity
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
ASE '00 Proceedings of the 15th IEEE international conference on Automated software engineering
RacerX: effective, static detection of race conditions and deadlocks
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
Atomizer: a dynamic atomicity checker for multithreaded programs
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Race checking by context inference
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
KISS: keep it simple and sequential
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Formal Methods in System Design
Optimized run-time race detection and atomicity checking using partial discovered types
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
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
Using model checking with symbolic execution to verify parallel numerical programs
Proceedings of the 2006 international symposium on Software testing and analysis
Parallel Randomized State-Space Search
ICSE '07 Proceedings of the 29th international conference on Software Engineering
CheckFence: checking consistency of concurrent data types on relaxed memory models
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Automatically classifying benign and harmful data races using replay analysis
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Iterative context bounding for systematic testing of multithreaded programs
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Effective random testing of concurrent programs
Proceedings of the twenty-second IEEE/ACM international conference on Automated 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
Multithreaded java program test generation
IBM Systems Journal
A race-detection and flipping algorithm for automated testing of multi-threaded programs
HVC'06 Proceedings of the 2nd international Haifa verification conference on Hardware and software, verification and testing
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
HAVE: Detecting Atomicity Violations via Integrated Dynamic and Static Analysis
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
A randomized dynamic program analysis technique for detecting real deadlocks
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
CalFuzzer: An Extensible Active Testing Framework for Concurrent Programs
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
Asserting and checking determinism for multithreaded programs
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Finding race conditions in Erlang with QuickCheck and PULSE
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
SideTrack: generalizing dynamic atomicity analysis
Proceedings of the 7th Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging
ConMem: detecting severe concurrency bugs through an effect-oriented approach
Proceedings of the fifteenth edition of ASPLOS on Architectural support for programming languages and operating systems
Asserting and checking determinism for multithreaded programs
Communications of the ACM
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Falcon: fault localization in concurrent programs
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Composable specifications for structured shared-memory communication
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
PENELOPE: weaving threads to expose atomicity violations
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
Bypassing races in live applications with execution filters
OSDI'10 Proceedings of the 9th USENIX conference on Operating systems design and implementation
Stable deterministic multithreading through schedule memoization
OSDI'10 Proceedings of the 9th USENIX conference on Operating systems design and implementation
Tolerating Concurrency Bugs Using Transactions as Lifeguards
MICRO '43 Proceedings of the 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture
AtomTracker: A Comprehensive Approach to Atomic Region Inference and Violation Detection
MICRO '43 Proceedings of the 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture
User evaluation of correctness conditions: a case study of cooperability
Evaluation and Usability of Programming Languages and Tools
Cooperative reasoning for preemptive execution
Proceedings of the 16th ACM symposium on Principles and practice of parallel programming
Specifying and checking semantic atomicity for multithreaded programs
Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems
2ndStrike: toward manifesting hidden concurrency typestate bugs
Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems
Statically locating web application bugs caused by asynchronous calls
Proceedings of the 20th international conference on World wide web
Testing concurrent programs on relaxed memory models
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Persuasive prediction of concurrency access anomalies
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Testing atomicity of composed concurrent operations
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Efficient data race detection for distributed memory parallel programs
Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis
SimTester: a controllable and observable testing framework for embedded systems
VEE '12 Proceedings of the 8th ACM SIGPLAN/SIGOPS conference on Virtual Execution Environments
BEST: A symbolic testing tool for predicting multi-threaded program failures
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Scalable and precise symbolic analysis for atomicity violations
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Fully automatic and precise detection of thread safety violations
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Multicore acceleration of priority-based schedulers for concurrency bug detection
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Axis: automatically fixing atomicity violations through solving control constraints
Proceedings of the 34th International Conference on Software Engineering
Static detection of resource contention problems in server-side scripts
Proceedings of the 34th International Conference on Software Engineering
Marathon: detecting atomic-set serializability violations with conflict graphs
RV'11 Proceedings of the Second international conference on Runtime verification
Puzzle-based automatic testing: bringing humans into the loop by solving puzzles
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Maple: a coverage-driven testing tool for multithreaded programs
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
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
Bounded-Interference sequentialization for testing concurrent programs
ISoLA'12 Proceedings of the 5th international conference on Leveraging Applications of Formal Methods, Verification and Validation: technologies for mastering change - Volume Part I
ConMem: Detecting Crash-Triggering Concurrency Bugs through an Effect-Oriented Approach
ACM Transactions on Software Engineering and Methodology (TOSEM)
Finding rare numerical stability errors in concurrent computations
Proceedings of the 2013 International Symposium on Software Testing and Analysis
Finding incorrect compositions of atomicity
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Efficient concurrency-bug detection across inputs
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles
ACM SIGOPS 24th Symposium on Operating Systems Principles
Parrot: a practical runtime for deterministic, stable, and reliable threads
Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles
An approach to testing commercial embedded systems
Journal of Systems and Software
Hi-index | 0.02 |
Atomicity is an important specification that enables programmers to understand atomic blocks of code in a multi-threaded program as if they are sequential. This significantly simplifies the programmer's job to reason about correctness. Several modern multithreaded programming languages provide no built-in support to ensure atomicity; instead they rely on the fact that programmers would use locks properly in order to guarantee that atomic code blocks are indeed atomic. However, improper use of locks can sometimes fail to ensure atomicity. Therefore, we need tools that can check atomicity properties of lock-based code automatically. We propose a randomized dynamic analysis technique to detect a special, but important, class of atomicity violations that are often found in real-world programs. Specifically, our technique modifies the existing Java thread scheduler behavior to create atomicity violations with high probability. Our approach has several advantages over existing dynamic analysis tools. First, we can create a real atomicity violation and see if an exception can be thrown. Second, we can replay an atomicity violating execution by simply using the same seed for random number generation---we do not need to record the execution. Third, we give no false warnings unlike existing dynamic atomicity checking techniques. We have implemented the technique in a prototype tool for Java and have experimented on a number of large multi-threaded Java programs and libraries. We report a number of previously known and unknown bugs and atomicity violations in these Java programs.