Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
All-du-path coverage for parallel programs
Proceedings of the 1998 ACM SIGSOFT international symposium on Software testing and analysis
Deterministic replay of Java multithreaded applications
SPDT '98 Proceedings of the SIGMETRICS symposium on Parallel and distributed tools
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Bandera: extracting finite-state models from Java source code
Proceedings of the 22nd international conference on Software engineering
Simplifying and Isolating Failure-Inducing Input
IEEE Transactions on Software Engineering
Isolating failure-inducing thread schedules
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Automated Software Engineering
Using Runtime Analysis to Guide Model Checking of Java Programs
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
Bug isolation via remote program sampling
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Heuristics for Finding Concurrent Bugs
IPDPS '03 Proceedings of the 17th International Symposium on Parallel and Distributed Processing
Applying Static Analysis to Large-Scale, Multi-Threaded Java Programs
ASWEC '01 Proceedings of the 13th Australian Conference on Software Engineering
Atomizer: a dynamic atomicity checker for multithreaded programs
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Antipattern-Based Detection of Deficiencies in Java Multithreaded Software
QSIC '04 Proceedings of the Quality Software, Fourth International Conference
ACM SIGPLAN Notices
Applications of synchronization coverage
Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming
Towards a framework and a benchmark for testing tools for multi-threaded programs: Research Articles
Concurrency and Computation: Practice & Experience - Parallel and Distributed Systems: Testing and Debugging (PADTAD)
Multithreaded java program test generation
IBM Systems Journal
Context-Bounded model checking of concurrent software
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Bounded model checking of concurrent programs
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
A novel test coverage metric for concurrently-accessed software components
FATES'05 Proceedings of the 5th international conference on Formal Approaches to Software Testing
Dynamic deadlock analysis of multi-threaded programs
HVC'05 Proceedings of the First Haifa international conference on Hardware and Software Verification and Testing
The influence of environmental parameters on concurrency fault exposures: an exploratory study
Proceedings of the 2010 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement
Noise injection heuristics for concurrency testing
MEMICS'11 Proceedings of the 7th international conference on Mathematical and Engineering Methods in Computer Science
Hi-index | 0.00 |
A noise maker is a tool for testing multi-threaded programs. It seeds shared memory accesses and synchronization events (concurrent events) with conditional context switches and timeouts during runtime, in order to increase the likelihood that a concurrent bug manifests itself. However, an instrumented program with many seeded events may not be useful for debugging; events have been seeded all over the source code and provide almost no information regarding the bug. We argue that for many bug patterns only a few relevant context switches are critical for the bug. Based on the observation that bugs involve only a small set of critical events, we develop a randomized algorithm to reduce the scheduling noise and discover these events related to the bug. To evaluate the effectiveness of our approach, we experiment with debugging of industrial code, known open source code software, and programs representing known concurrent bugs. Our results demonstrate that this simple technique is in many cases very powerful, and significantly helps the user locating and understanding concurrent bugs.