Skip to content
Deterministic replay of concurrent Java programs using monitoring oriented programming
Java AspectJ Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Deterministic replay of concurrent Java programs using monitoring oriented programming.

The ultimate goal of this project is to come up with a specification language that can describe the runtime behavior of a given program at the non-deterministic points of its execution, and efficiently enforcing the specified behavior at runtime without any modification to java virtual machine.

This way, a developer can specify exactly how a program should behave during the runtime without any modification to the source code. An automatic tool can also observe execution of a program and generate such an specification.


  1. Install Maven.
  2. Install RV-Predict.
  3. Run mvn install:install-file -Dfile=path/to/rv-predict/lib/rv-predict.jar -DgroupId=com.runtimeverification.rvpredict -DartifactId=root -Dversion=1.3-SNAPSHOT -Dpackaging=jar
  4. Go to the project's root and run mvn package

##Use: ReplayMOP get as input a replay specification (.rs) and outputs a java intrumentation agent (.jar). You can then run your program with the agent and get the specified behavior. For example if you normally run your program this way:

java MyClass

You only need to change it to this:

java -agent:/path/to/generated/agent.jar MyClass

If you want to write an specification manually, refer to the examples (e.g this) to get familiar with the language. In order to generate the agent from a specication run:

java -jar:/path/to/replayMOP/target/release/ relplayMop.rsParser /path/to/replay/

If everything goes well, it generates the agent (spec.jar)

You can’t perform that action at this time.