Giter Site home page Giter Site logo

y553546436 / jpf-core Goto Github PK

View Code? Open in Web Editor NEW

This project forked from javapathfinder/jpf-core

0.0 0.0 1.0 2.24 MB

Computer hardware is susceptible to errors. For example, radiation may induce error to the hardware and some bit might be flipped. It is important to improve the resiliency of software against hardware errors. One way to evaluate the resiliency of software against hardware errors is by fault injection. The project uses Java PathFinder to systematically inject and explore bit-flip faults in the user specified variables in Java programs.

Shell 0.08% Batchfile 0.01% Java 99.91%

jpf-core's Introduction

Java Pathfinder (JPF)

build master

An extensible software model checking framework for Java bytecode programs

General Information about JPF

All the latest developments, changes, documentation can be found on our wiki page.

Building and Installing

If you are having problems installing and running JPF, please look at the How to install JPF guide.

We have documented on the wiki a lot of common problems that might occur during the installation and build processes as reported by the users. If you are facing any issue, please, make sure that we have not addressed it in documentation. Otherwise, feel free to contact us at [email protected] or open an issue on the Issue Tracker.

Documentation

There is a constant effort to update and add JPF documentation on the wiki. If you would like to contribute in that, please, contact us at [email protected].

Contributions are welcome and we encourage you to get involved with the community.

Happy Verification -- the Java PathFinder team

jpf-core's People

Contributors

jeandersonbc avatar cyrille-artho avatar y553546436 avatar wvisser avatar rtrimana avatar gayanw avatar jtoman avatar mmuesly avatar vaibhavbsharma avatar yuvaraj-anbarasan avatar varun11940 avatar ilovejpf avatar hayawi avatar qsphan avatar manish3499 avatar upthewaterspout avatar eeshan8503 avatar jentsch avatar krizhan avatar peterschrammel avatar fresheed avatar nas-sh avatar ngocpq avatar richardnnn avatar

Forkers

raju-kumar21

jpf-core's Issues

Finer-grained support for command line specified bit flips

Now we support to let command line arguments specify fields, parameters and local variables to flip, but the following features could be added for finer-grained command line control:

  1. For fields and local variables, we can inject bit flips only in a specific write instruction (instead of all write instructions) by passing in a source location.
  2. For parameters, we can inject bit flips only in a specific invoke instruction (instead of all invoke instructions) by passing in a source location.

cannot handle multiple annotated parameters in one method

Now, the BitFlipListener reads the parameter annotations in a loop, breaks the loop if seeing a parameter annotated with @bitflip, and then inject bit flips to the parameter. However, in this way, it cannot properly handle multiple annotated parameters in one method such as:

public int foo (@BitFlip int a, @BitFlip int b) {
  return a+b;
}

Should add more tests

We should add more test cases:
1 and 2: what happens if we combine annotations and
command line options (in a redundant way or as to enable bit flips in two
values)?
3 and 4: what happens if we have bit flips for two values (two
annotations or two command line options)?
5: add a test for flip two bits of one value

JPF seems unable to handle local variable annotations

I added the logic to print local variable annotation information in the JPF listener and tried to run something like this in JPF:

public static void main(String[] args) {
  @BitFlip int a;
  int a=0;
}

The result shows that there is no AnnotationInfo for this local variable a. Therefore, our @bitflip annotation cannot work with local variables now.

Invoking getInt__II__I repeatedly always gets the same value

In method getBitFlip__JII__ (09c76f7#diff-33d0110f5af3cb68d26e778e457f72ff77d1f7b2707cdb0ea453d1574f46ca1bR437), I tried to generate nBit positions to flip by generating them one by one. However, it seems that if this method invokes getInt__II__I more than once, multiple invocations return the same result. When nBit=2, the return value of getBitFlip__JII__ is always 0, because the two flipping positions returned from getInt__II__I are the same and two flips of the same bit cancel out. I wonder what the mechanism is behind this and how to work around it so that I can use getInt__II__I multiple times in a getBitFlip__JII__ method.

If it is not easy to use getInt__II__I multiple times in a getBitFlip__JII__ method, I guess we can work around by invoking getInt__II__I only once to get a big number encoding a selection set of positions, and then decoding the number to get the actual positions to flip.

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.