Giter Site home page Giter Site logo

ifrit's Introduction

--------------------
IFRit - an interference-free-region based data race detection tool
Implementation by Laura Effinger-Dean and Brandon Lucia
-
Based on the ideas in the OOPSLA 2012 paper

IFRit: Interference-Free Regions for Dynamic Data-Race Detection 
  by Laura Effinger-Dean, Brandon Lucia, Luis Ceze, Dan Grossman, and Hans-J. Boehm
--------------------  

This repository includes:

(1) a copy of LLVM with a new pass that inserts data-race detection
  calls during compilation

(2) a runtime that actally implements those data-race detection
  calls

(3) A test program to check your setup.


---------------------------------

Compiler Pass Build pre-requisites:

1)Install LLVM from source
2)Install Clang, building against the LLVM you built in step (1)
3)Install CMake

Building the compiler pass:
$cd /path/to/ifrit/LLVM
$cmake -DIFRIT_LLVM_DIR=/path/to/LLVM .
$make

--
Runtime Build Pre-requisites:

1)Install glib-2

Building the runtime:
$cd /path/to/ifrit/Runtime
$make

note that there are several #define build options in the Runtime source 

------------------------------------

Testing the setup:

$cd /path/to/ifrit/Test
-edit the Makefile in that directory so the paths point to your installation 
 of IFRIT and clang.  Note that you must use the same clang as the one 
 that you linked against the LLVM that you used to build the pass
$export DYLD_LIBRARY_PATH=/path/to/ifrit/Runtime:$DYLD_LIBRARY_PATH
$ ./test

You should then see some output like this.
[IFRit] Hash-table-based implementation in use.
[IFRit] Single-threaded optimization enabled.
[IFRit] Partitioning global state into 32 partitions.
Hello world
[IFRit] Sampling disabled
[IFRit] 6 6 : 0x40089a 0x40089a
Final value of x: 2000
[IFRit] Bye!

The 6 6 there is a race report saying that IFRs 6 and 6 overlapped.
The 0x40089a are the addresses of the line numbers.

$ addr2line -e test 0x40089a
/sampa/home/effinger/drd/drd/test/test.c:10

Note that the compiler produces a file ifrs.txt containing a list of
IFRs detected in the code. The IFRit code just appends to this file,
so delete it before recompiling or you'll end up with a bunch of
redundant copies in the file.

ifrit's People

Contributors

blucia0a avatar

Stargazers

João Gonçalves avatar sljia avatar

Watchers

 avatar James Cloos avatar

Forkers

sanketloke

ifrit's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.