Coder Social home page Coder Social logo

jcp19 / spider Goto Github PK

View Code? Open in Web Editor NEW
16.0 16.0 1.0 15.7 MB

Automated data race detection from a distributed trace via SMT constraint solving

License: MIT License

Java 79.54% Shell 3.78% Awk 7.74% Alloy 6.49% SMT 2.44%
debugging-tools distributed-systems race-conditions race-detection race-detection-engines runtime-verification testing-tools traces

spider's Introduction

Hello World! πŸ‘‹πŸŒŽ

  • ❀️ Formal Methods, Programming Languages, Concurrency, Distributed Systems
  • πŸ”­ Ph.D. student in the Programming Methodology Group at ETH ZΓΌrich
  • πŸ“« Check my website for contact info

spider's People

Contributors

dependabot[bot] avatar jcp19 avatar nunomachado avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

ryancaicse

spider's Issues

Tests lacking

There's no testing in this project. I believe the best way to do this will be to run the program with small instances of traces and compare it's results to results computed 'by hand'. Besides, I believe this project could gain from having some unit testing.

Test scripts hard to mantain

The couple of scripts in the repository are probably outdated and are unnecessarily convoluted. It is better to create a small class to test the program and generate the reports. At first sight, it looks like it is going to need some hacks because the TraceProcessor class is a singleton -.-

Confusing result reporting

Improve the output of the program. The current output has a bunch of debug information which should not be printed.

Removing Inter-Thread Event Redundancy is leading to races being missed

In the case of the m3274.log in traces/micro-benchmarks, the number of detected data race conditions drops from 3 to 1 when the removing "redundant" inter-thread events. At first, it seems like a bug in the elimination of SND and RCV events but need more testing.

If this happens to not be a bug and the the removal of messages is proven to be unsound, we can create a new flag for Spider (-E) which stands for "Experimental Redundancy Elimination"
which will call the extension on ReX.

Improve `Stats` Class

Ideas:

  • align results in the output
  • convert this class to a singleton instead of using static fields

Old README

Improve description of the project, its goals, dependencies, how to install it and how to use it.

Simplify evaluation scripts

Instead of having two different gawk scripts for each of the two evaluation scenarios (data race detection and message race detection), I believe that one suffices per scenario. The gawk script should accept and argument detailing which of the two csv formats to print and read in the END action. In the body, we should read every required line/argument

Debug results for the Cyclon trace

Current results without elimination:

 > Data Race #1 : (cyclonlite.CyclonActive.initWithData.73, cyclonlite.CyclonActive.insertReceivedToView.198)
 > Data Race #2 : (cyclonlite.CyclonActive.initWithData.73, cyclonlite.CyclonActive.selectPeersToShuffle.249)
 > Data Race #3 : (cyclonlite.CyclonActive.insertReceivedToView.198, cyclonlite.CyclonActive.selectPeersToShuffle.249)

The first two races should not happen

Optimization possible

Basically, the races seem to be very "local" in the sense that even though they have hundreds of candidates, what happens, at least in the case of the cyclon, is that these races translate into a few unique locations. Therefore, a possible optimization would be to make a list of unique possible locations in race from the set of candidates to race conditions and then only solve until you find a race. All other candidates can be ignored because even if they are sat, they will give rise to a race that has already been detected

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.