From symptom to cause: localizing errors in counterexample traces
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Finding Latent Code Errors via Machine Learning over Program Executions
Proceedings of the 26th International Conference on Software Engineering
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Locating causes of program failures
Proceedings of the 27th international conference on Software engineering
Java Concurrency in Practice
Automated path generation for software fault localization
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs
IEEE Transactions on Computers
Memory model sensitive bytecode verification
Formal Methods in System Design
Velodrome: a sound and complete dynamic atomicity checker for multithreaded programs
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Effective Program Verification for Relaxed Memory Models
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Java memory model aware software validation
Proceedings of the 8th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
The Art of Multiprocessor Programming
The Art of Multiprocessor Programming
Precise Data Race Detection in a Relaxed Memory Model Using Heuristic-Based Model Checking
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
What went wrong: explaining counterexamples
SPIN'03 Proceedings of the 10th international conference on Model checking software
Formalising java's data race free guarantee
TPHOLs'07 Proceedings of the 20th international conference on Theorem proving in higher order logics
Generating litmus tests for contrasting memory consistency models
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Java memory model-aware model checking
TACAS'12 Proceedings of the 18th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Hi-index | 0.00 |
According to Java's relaxed memory model, programs that contain data races need not be sequentially consistent. Executions that are not sequentially consistent may exhibit surprising behavior such as operations on a thread occurring in a different order than indicated by the source code or different threads having inconsistent views of updates of shared variables. Java Racefinder (JRF) is an extension of Java Pathfinder (JPF), a model checker for Java bytecode. JRF precisely detects data races as defined by the memory model and can thus be used to verify sequential consistency. We describe an extension to JRF, JRF-Eliminator (JRF-E), that analyzes information collected during model checking, specifically counterexample traces and acquiring histories, and provides advice to the programmer on how to eliminate detected data races from a program. If data races have been eliminated, standard model checking and other verification techniques that implicitly assume sequential consistency can be soundly employed to verify additional properties.