PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Counting linear extensions is #P-complete
STOC '91 Proceedings of the twenty-third annual ACM symposium on Theory of computing
The use of program dependence graphs in software engineering
ICSE '92 Proceedings of the 14th international conference on Software engineering
Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
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
Hybrid dynamic data race detection
Proceedings of the ninth ACM SIGPLAN symposium on Principles and practice of parallel programming
Concurrent Bug Patterns and How to Test Them
IPDPS '03 Proceedings of the 17th International Symposium on Parallel and Distributed Processing
Runtime safety analysis of multithreaded programs
Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on Foundations of software engineering
Atomizer: a dynamic atomicity checker for multithreaded programs
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Associating synchronization constraints with data in an object-oriented language
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Mop: an efficient and generic runtime verification framework
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Multithreaded java program test generation
IBM Systems Journal
Parametric and sliced causality
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Parametric and termination-sensitive control dependence
SAS'06 Proceedings of the 13th international conference on Static Analysis
CAV'06 Proceedings of the 18th 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
Racer: effective race detection using aspectj
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
The Complexity of Predicting Atomicity Violations
TACAS '09 Proceedings of the 15th International Conference on Tools and Algorithms for the Construction and Analysis of Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009,
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
Meta-analysis for Atomicity Violations under Nested Locking
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
SideTrack: generalizing dynamic atomicity analysis
Proceedings of the 7th Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging
Predictive Typestate Checking of Multithreaded Java Programs
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
@J: towards rapid development of dynamic analysis tools for the Java Virtual Machine
Proceedings of the Third Workshop on Virtual Machines and Intermediate Languages
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
IMUnit: improved multithreaded unit testing
Proceedings of the 3rd International Workshop on Multicore Software Engineering
Analyzing concurrency bugs using dual slicing
Proceedings of the 19th international symposium on Software testing and analysis
PENELOPE: weaving threads to expose atomicity violations
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
Change-point detection for black-box services
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
You should better enforce than verify
RV'10 Proceedings of the First international conference on Runtime verification
Runtime verification with the RV system
RV'10 Proceedings of the First international conference on Runtime verification
Coverage guided systematic concurrency testing
Proceedings of the 33rd International Conference on Software Engineering
Persuasive prediction of concurrency access anomalies
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Accentuating the positive: atomicity inference and enforcement using correct executions
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Sound predictive race detection in polynomial time
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Runtime verification with predictive semantics
NFM'12 Proceedings of the 4th international conference on NASA Formal Methods
BALLERINA: automatic generation and clustering of efficient random unit tests for multithreaded code
Proceedings of the 34th International Conference on Software Engineering
Predicting concurrency failures in the generalized execution traces of x86 executables
RV'11 Proceedings of the Second international conference on Runtime verification
Understanding the interleaving-space overlap across inputs and software versions
HotPar'12 Proceedings of the 4th USENIX conference on Hot Topics in Parallelism
McPatom: a predictive analysis tool for atomicity violation using model checking
SPIN'12 Proceedings of the 19th international conference on Model Checking Software
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
Scaling predictive analysis of concurrent programs by removing trace redundancy
ACM Transactions on Software Engineering and Methodology (TOSEM)
ConMem: Detecting Crash-Triggering Concurrency Bugs through an Effect-Oriented Approach
ACM Transactions on Software Engineering and Methodology (TOSEM)
Practical static race detection for Java parallel loops
Proceedings of the 2013 International Symposium on Software Testing and Analysis
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
Hi-index | 0.00 |
jPredictor is a tool for detecting concurrency errors in Java programs. The Java program is instrumented to emit property-relevant events at runtime and then executed. The resulting execution trace is collected and analyzed by Predictor, which extracts a causality relation sliced using static analysis and refined with lock-atomicity information. The resulting abstract model, a hybrid of a partial order and atomic blocks, is then exhaustively analyzed against the property and errors with counter-examples are reported to the user. Thus, jPredictor can "predict" errors that did not happen in the observed execution, but which could have happened under a different thread scheduling. The analysis technique employed in jPredictor is fully automatic, generic (works for any trace property), sound (produces no false alarms) but it is incomplete may miss errors). Two common types of errors are investigated in this paper: dataraces and atomicity violations. Experiments show that jPredictor is precise (in its predictions), effective and efficient. After the code producing them was executed only once, jPredictor found all the errors reported by other tools. It also found errors missed by other tools, including static race detectors, as well as unknown errors in popular systems like Tomcat and the Apache FTP server.