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

Add some hacky atomic privatizations #1216

Merged
merged 37 commits into from
Feb 15, 2024
Merged
Show file tree
Hide file tree
Changes from 33 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
1d05f0f
Add hacky atomic protection privatization
sim642 Oct 12, 2023
b60e836
Add hacky atomic relation mutex-meet privatization
sim642 Oct 12, 2023
a5f4bff
Use relational unprotected invariant for mutex-meet
sim642 Oct 13, 2023
f846894
Fix relational mutex-meet atomic unlock
sim642 Oct 13, 2023
f27b098
Add Freiburg case_distinction_with_ghosts example
sim642 Oct 13, 2023
4e7312b
Add simpler case_distinction tests
sim642 Oct 13, 2023
4c54140
Add Freiburg nondet_inc_with_ghosts examples
sim642 Oct 20, 2023
e1e0813
Use threshold widening in Freiburg nondet_inc_with_ghosts
sim642 Oct 20, 2023
bd533c0
Use relational unprotected invariant for mutex-meet-tid
sim642 Oct 20, 2023
2beea6e
Merge branch 'master' into priv-atomic
sim642 Nov 27, 2023
fa1f6fa
Use strengthening in 36-apron/98-loc
sim642 Nov 27, 2023
21a4a98
Try to make two Mukerjee tests more precise with strengthening
sim642 Nov 28, 2023
b3af798
Fix unsoundness in per-mutex-tid which is revealed by strengthening
sim642 Nov 28, 2023
f2b2a39
Split relational mutex-meet-tid unprotected invariant by global
sim642 Nov 29, 2023
e4c575b
Revert "Use strengthening in 36-apron/98-loc"
sim642 Nov 29, 2023
a3f531b
Revert "Try to make two Mukerjee tests more precise with strengthening"
sim642 Nov 29, 2023
73c0690
Add missing relationpriv tracing
sim642 Nov 29, 2023
9680cc5
Fix relational mutex-meet-tid atomic unlock
sim642 Nov 29, 2023
69dd788
Add nondet_inc_with_ghosts with globalization
sim642 Nov 29, 2023
f47e596
Add mutex_with_ghosts Freiburg example with variants
sim642 Dec 13, 2023
392bc5b
Revert "Split relational mutex-meet-tid unprotected invariant by global"
sim642 Dec 14, 2023
28bc738
Update mutex_with_ghosts tests with mutex-meet-tid
sim642 Dec 14, 2023
a322785
Add names to mutex-meet-tid components
sim642 Dec 14, 2023
43552fa
Fix duplicate test ID
sim642 Dec 15, 2023
f754362
Separate base privatization with atomic support
sim642 Jan 11, 2024
105fd3a
Separate relation mutex-meet with atomic support
sim642 Jan 11, 2024
d4a1fe4
Separate relation mutex-meet-tid with atomic support
sim642 Jan 11, 2024
b12b6e8
Delete duplicate priv-atomic tests
sim642 Jan 11, 2024
92eac6d
Add __goblint_globalize special function
sim642 Jan 11, 2024
696a35f
Comment out atomic mutex protecting everything again
sim642 Jan 11, 2024
0308c25
Merge branch 'master' into priv-atomic
sim642 Jan 11, 2024
45555ad
Add case_distinction_with_ghosts variant where reads publish to unpro…
sim642 Jan 25, 2024
67558f4
Make mutex-meet-tid-atomic more precise for no-write unlocks
sim642 Jan 25, 2024
3bafccb
Update __goblint_globalize documentation
sim642 Jan 29, 2024
ae5c42e
Remove commented out code in RelationPriv.PerMutexMeetPrivTID.write_g…
sim642 Jan 29, 2024
6a2d078
Comment atomic privatizations
sim642 Feb 15, 2024
c0da7a7
Merge branch 'master' into priv-atomic
sim642 Feb 15, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/user-guide/annotating.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,4 @@ Include `goblint.h` when using these.
* `__goblint_assume_join(id)` is like `pthread_join(id, NULL)`, but considers the given thread IDs must-joined even if Goblint cannot, e.g. due to non-uniqueness.
Notably, this annotation can be used after a threads joining loop to make the assumption that the loop correctly joined all those threads.
_Misuse of this annotation can cause unsoundness._
* `__goblint_globalize(ptr)` forces data pointed to by `ptr` to be treated as global by simulating it escaping the thread.
sim642 marked this conversation as resolved.
Show resolved Hide resolved
1 change: 1 addition & 0 deletions lib/goblint/runtime/include/goblint.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ void __goblint_assume(int exp);
void __goblint_assert(int exp);

void __goblint_assume_join(/* pthread_t thread */); // undeclared argument to avoid pthread.h interfering with Linux kernel headers
void __goblint_globalize(void *ptr);

void __goblint_split_begin(int exp);
void __goblint_split_end(int exp);
Expand Down
Loading