SWORD is an interactive Eclipse Plugin to detect data races and deadlocks in Java programs. The fundamental techniques (i.e., points-to analysis and static happens-before analysis) that SWORD adopts are in:
[FSE'16] "ECHO: Instantaneous In Situ Race Detection in the IDE"
[PLDI'18] "D4: Fast Concurrency Debugging with Parallel Differential Analysis"
- Java 1.8
- Eclipse PDE
- Clone the project
- Import all the projects in Eclipse and build.
- Select a main class in the Package Explorer
- Right click ASER -> SWORD to start the detection.
Goto Windows -> Show View -> Others to open the ECHO views (i.e., ECHO Race List, ECHO Deadlock List, ECHO Concurrency Relation):
- SWORD Race List: contains all the detected races with a pair of read/write accesses and their possible traces
- SWORD Deadlock List: contains all the detected deadlocks with a pair of nested locks and their possible traces
- SWORD Concurrency Relation: contains all read and write operations that may happen in parallel
The github repo includes 6 large, real-world Java projects. To test the practicality of SWORD on these projects, you can import them into your target workspace.
Some large benchmarks are available here