Public Repository

Last pushed: a year ago
Short Description
Framework for analysis of multi-threaded C/C++ programs.
Full Description


ANaConDA (Adaptable NAtive-code CONcurrency-focused Dynamic Analysis) is a framework that simplifies the creation of dynamic analysers for analysing multi-threaded C/C++ programs on the binary level.

Installing docker

Follow instructins at to install the latest Docker maintained Docker package on your preferred operating system

To install on ubuntu use
wget -qO- | sh

You can watch this tutorial ( or just follow these instructions.

Add your user account to the docker group:
sudo usermod -aG docker <username>
If the group does not exist, you should create one:
sudo groupadd docker
sudo usermod -aG docker <username>

Logout of your terminal and log back in for the changes to take effect.

Verify that you can run hello-world container without using sudo:
docker run hello-world

Using ANaConDA

To start anaconda use: (will start "/bin/bash" in container)
docker run --security-opt apparmor:unconfined -it -v /path/to/folder/with/program/to/analyse/in/host:/path/to/container/dir smetanas/anaconda

  • --security-opt apparmor:unconfined - allows Intel Pin to attach to another pid
  • -it - connects docker to STDIN and use pseudo-terminal
  • -v - binds host and container directories

After start of container will be installed PIN(intel). Before using PIN read LICENCE.

Now you can just type:
run [analyser] [/path/to/container/dir]

There is already a set of analysers such as:

  • atomrace - AtomRace algorithm developed by VeriFIT for testing concurrent applications,
  • contract-validator - current research on contracts within VeriFIT
  • eraser - Eraser algorithm for testing concurrent applications,
  • event-printer - just prints events during execution
  • goodlock - GoodLock algorithm for detecting deadlocks,
  • hldr-detector,
  • tx-monitor
Docker Pull Command