Skip to content

Change Machdep based on SV-COMP architecture#1574

Merged
sim642 merged 9 commits intomasterfrom
machdep-arch
Oct 2, 2024
Merged

Change Machdep based on SV-COMP architecture#1574
sim642 merged 9 commits intomasterfrom
machdep-arch

Conversation

@sim642
Copy link
Copy Markdown
Member

@sim642 sim642 commented Sep 24, 2024

Closes #54, at least for SV-COMP usage.

TODO

initCIL already depends on theMachine, but it overwrites it. Must use envMachine to select it based on exp.architecture beforehand.
@sim642 sim642 added feature unsound sv-comp SV-COMP (analyses, results), witnesses labels Sep 24, 2024
@sim642 sim642 added this to the SV-COMP 2025 milestone Sep 24, 2024
@sim642 sim642 self-assigned this Sep 24, 2024
@sim642 sim642 marked this pull request as ready for review September 25, 2024 12:52
@sim642
Copy link
Copy Markdown
Member Author

sim642 commented Sep 27, 2024

The sv-benchmarks results (with 60s timeout) indicate some changes to verdicts:

  • 32 tasks go from unknown to true thanks to the more precise bounds we use for ILP32.
  • 56 tasks go from true to unknown which are all cases of previous unsoundness: we assumed larger type bounds for some no-overflow tasks than they actually have and were simply lucky to still have sound verdicts.
  • 55 tasks go from true to EXCEPTION (IntDomain.IncompatibleIKinds) which for some reason all are valid-memsafety tasks.

@michael-schwarz
Copy link
Copy Markdown
Member

I think we should investigate the 55 new EXCEPTION (IntDomain.IncompatibleIKinds exceptions before merging, while we still have an idea of what could be the case.

Also, when this is addressed, I think it makes sense to do a full ressource run the state before this and after it on server01 here before merging. I can start it if you ping me.

@sim642
Copy link
Copy Markdown
Member Author

sim642 commented Sep 27, 2024

I just made a fix ea2f616 which fixes one of those. I'm doing another quick run to see if that covers all of them.
EDIT: It fixes all those cases, so you can try a full resources run @michael-schwarz.

@michael-schwarz
Copy link
Copy Markdown
Member

The runs for the context gas values are now finished, I just started the comparison run on the current master (approx 24h), and will then start the run with this after.

@michael-schwarz
Copy link
Copy Markdown
Member

In the meantime, there seems to be some problems with OS X left here.

@michael-schwarz
Copy link
Copy Markdown
Member

The comparison run I started yesterday has finished this morning, I Just started https://github.com/goblint/analyzer/tree/staging_machdep-arch now.

Copy link
Copy Markdown
Member

@michael-schwarz michael-schwarz left a comment

Choose a reason for hiding this comment

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

Good to go from my view as soon as the OS X issue is fixed.

@sim642
Copy link
Copy Markdown
Member Author

sim642 commented Oct 2, 2024

For now I disabled the test on MacOS. But I also added error messages about the missing machine definition. At least it's still possible to do SV-COMP runs on MacOS for ILP32 tasks but there will be a clear message about the possible unsoundness. The alternative would be to just crash when the machdep is missing, but that might be too harsh and inconvenient (because -m64 probably also doesn't work).

In the future we might want to provide pre-generated machdeps in CIL (at least for type sizes if not all machdep components). That should be enough for SV-COMP where preprocessing isn't needed.

@sim642 sim642 merged commit a65b86e into master Oct 2, 2024
@sim642 sim642 deleted the machdep-arch branch October 2, 2024 10:19
sim642 added a commit to sim642/opam-repository that referenced this pull request Nov 28, 2024
CHANGES:

Functionally equivalent to Goblint in SV-COMP 2025.

* Add 32bit vs 64bit architecture support (goblint/analyzer#54, goblint/analyzer#1574).
* Add per-function context gas analysis (goblint/analyzer#1569, goblint/analyzer#1570, goblint/analyzer#1598).
* Adapt automatic static loop unrolling (goblint/analyzer#1516, goblint/analyzer#1582, goblint/analyzer#1583, goblint/analyzer#1584, goblint/analyzer#1590, goblint/analyzer#1595, goblint/analyzer#1599).
* Adapt automatic configuration tuning (goblint/analyzer#1450, goblint/analyzer#1612, goblint/analyzer#1181, goblint/analyzer#1604).
* Simplify non-relational integer invariants in witnesses (goblint/analyzer#1517).
* Fix excessive hash collisions (goblint/analyzer#1594, goblint/analyzer#1602).
* Clean up various code (goblint/analyzer#1095, goblint/analyzer#1523, goblint/analyzer#1554, goblint/analyzer#1575, goblint/analyzer#1588, goblint/analyzer#1597, goblint/analyzer#1614).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature sv-comp SV-COMP (analyses, results), witnesses unsound

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Unsoundness on SV-COMP for No-Overflow & Memory Properties make sizes of primitive types configurable with current machine as default

2 participants