-
Notifications
You must be signed in to change notification settings - Fork 284
Refine symex pointer unsoundness #8780
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
base: develop
Are you sure you want to change the base?
Refine symex pointer unsoundness #8780
Conversation
889225b to
2dc63d4
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #8780 +/- ##
========================================
Coverage 80.00% 80.00%
========================================
Files 1700 1700
Lines 188257 188267 +10
Branches 73 73
========================================
+ Hits 150615 150628 +13
+ Misses 37642 37639 -3 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
c954ba7 to
d48dfd7
Compare
We cannot soundly handle pointer offsets that are shared across threads, and will reject this in future to avoid unsound verification results. Here, however, the pointer offsets are not actually shared, so we can safely mark them `__CPROVER_thread_local`.
…ed pointers Reading and writing pointers is not not itself unsound, only the interaction with value sets may cause unsound results. Hence, do not reject programs that never dereference a shared pointer. Fixes: diffblue#8714 Fixes: diffblue#7957
Shared pointers may be updated in yet-to-be-executed threads.
d48dfd7 to
7d44a79
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request refines the handling of symex pointer unsoundness in concurrent programs by marking specific variables as thread-local and updating test expectations to properly detect and report unsoundness issues.
- Added
__CPROVER_thread_localqualifier to register variables in weak memory model test files to ensure correct thread-local semantics - Updated test descriptors to detect pointer handling unsoundness in concurrent programs instead of silently passing or being marked as known bugs
- Enabled previously disabled pthread tests on OSX and FreeBSD platforms
Reviewed changes
Copilot reviewed 300 out of 428 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| regression/goto-instrument-wmm-core/ppc_*.c | Added __CPROVER_thread_local to register variables used in weak memory model tests |
| regression/cbmc-concurrency/*/test.desc | Updated test expectations to detect pointer unsoundness instead of passing or being marked as known bugs |
| regression/cbmc-concurrency/Makefile | Removed OSX and FreeBSD from pthread test exclusions |
| regression/cbmc-concurrency/CMakeLists.txt | Simplified platform check to only exclude Windows for pthread tests |
| regression/cbmc-library/realloc/test_03.desc | Changed from expecting failure to expecting success with --no-malloc-may-fail |
| regression/cbmc-concurrency/global_pointer1/ | Split test into multiple variants to test with/without pointer dereferencing |
| regression/book-examples/account/C10.desc | Changed from KNOWNBUG to CORE test |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Please review commit-by-commit.
Fixes: #8714
Fixes: #7957