Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Datalog backed relation analysis #708

Closed
wants to merge 45 commits into from

Conversation

DIvanov503
Copy link
Contributor

No description provided.

xeren and others added 21 commits May 27, 2024 21:53
* Updated witness generation functions to return the generated File.

* Improved UI:
- can select property to check for (only one property at a time)
- can generate and render the violation witness in the UI
- UI can be scaled with 'ctrl' + '+/-'
- Added simple zoom option to displayed witnesses

* Added ability to pass configuration options via the UI.

* UI programs now get a unified name.
Fixed witness generation for programs without names or without file suffix.
Signed-off-by: Hernan Ponce de Leon <[email protected]>
Co-authored-by: Hernan Ponce de Leon <[email protected]>
- Function-based analysis and passes now rely on local ids (e.g., for loop detection) for the most part.
- Fixed problems in NormalizeLoops.java
* Added memory layout information to ExecutionModel.

* Fixed ExecutionGraphVisualizer printing odd addresses sometimes.

* Fix address string computation. 

* Added better out-of-bounds tagging.

* Fixed RefinementSolver.analyzeInconclusiveness.
* Fix copy paste error

* Add unit tests

---------

Signed-off-by: Hernan Ponce de Leon <[email protected]>
Co-authored-by: Hernan Ponce de Leon <[email protected]>
* Added RemoveDeadNullChecks pass

* Added TypeFactory.decomposeIntoPrimitives
Improved MemToReg to also work on complex allocations.

* Avoid Mem2Reg on allocations that are used in RMWs.

* Added loop check to avoid unsoundness
…eon#695)

Signed-off-by: Hernan Ponce de Leon <[email protected]>
Co-authored-by: Hernan Ponce de Leon <[email protected]>
Signed-off-by: Hernan Ponce de Leon <[email protected]>
Co-authored-by: Hernan Ponce de Leon <[email protected]>
Signed-off-by: Hernan Ponce de Leon <[email protected]>
Co-authored-by: Hernan Ponce de Leon <[email protected]>
Co-authored-by: Thomas Haas <[email protected]>
Signed-off-by: Hernan Ponce de Leon <[email protected]>
Co-authored-by: Hernan Ponce de Leon <[email protected]>
Co-authored-by: Thomas Haas <[email protected]>
@hernanponcedeleon
Copy link
Owner

FYI @DIvanov503 https://souffle-lang.github.io/install

@@ -82,7 +82,7 @@ private Dartagnan(Configuration config) throws InvalidConfigurationException {

public static void main(String[] args) throws Exception {

initGitInfo();
// initGitInfo();
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// initGitInfo();
initGitInfo();

@@ -39,6 +39,8 @@ public static void configure(Configuration config) throws InvalidConfigurationEx

private static final boolean USE_TEST_PATH = isJUnitTest();

public static final boolean CHECK_DATALOG = true; // Enables comparing basic RA in datalog against native
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public static final boolean CHECK_DATALOG = true; // Enables comparing basic RA in datalog against native
public static final boolean CHECK_DATALOG = false; // Enables comparing basic RA in datalog against native

Comment on lines 49 to 50
RelationAnalysis.Config c = new RelationAnalysis.Config(config);
c.method = RelationAnalysisMethod.DATALOG;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
RelationAnalysis.Config c = new RelationAnalysis.Config(config);
c.method = RelationAnalysisMethod.DATALOG;
RelationAnalysis.Config c = new RelationAnalysis.Config(config);

@hernanponcedeleon
Copy link
Owner

@DIvanov503 I killed the pipeline after 14hs. There seems to be a problem with linux-kernel.cat. I still don't get why the timeout from AbstractLitmusTest is not triggering.

I tried a few examples manually and they all finished relatively fast. I tried specially the ones having large number of events or using RCU features which I thought could make the analysis harder. I guess we need a script to run examples one by one in the console to find out which test(s) are not finishing.

natgavrilenko and others added 2 commits August 12, 2024 13:55
Co-authored-by: Natalia Gavrilenko <[email protected]>
Co-authored-by: Hernan Ponce de Leon <[email protected]>
Co-authored-by: haining <[email protected]>
Co-authored-by: Thomas Haas <[email protected]>
@ThomasHaas
Copy link
Collaborator

I wouldn't try to fix the native RA in this PR (especially if the source of the problem is unclear). If you have a proper fix, put it into a separate PR.

@DIvanov503
Copy link
Contributor Author

I agree but I

  • want to know that my fix works before merging
  • don't want to write tests for my fix

Hence I want the pipeline to pass using the datalog RA for checking if both implementations compute the same results. Once it's done and I'm convinced about the fix, it can go to a different PR.

@hernanponcedeleon
Copy link
Owner

As discussed with @DIvanov503, this was supersed by #743, this cloosing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants