-
Notifications
You must be signed in to change notification settings - Fork 84
Refactor race warnings (accesses) to use global invariant on master #519
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
Conversation
Mutex analysis already computes these anyway.
Otherwise this might prevent some side effects from being recorded since everything is already contained?
Now accesses aren't iterated backwards anymore, but hopefully that doesn't matter.
|
@michael-schwarz Since you opened this PR, it seems like GitHub doesn't let me request a review from you, but I think I managed to get this ready for master. I also cherry-picked a bunch of other commits and changes from interactive surrounding this, hopefully didn't miss anything important, because this also now contains the change of using non- |
|
Hmm, 00-basic/06-threadid from the interactive tests does fail now with the incremental run detecting a race: I think the problem with that is that without restarting globals (which is done on interactive), the set of accesses that's now in the global invariant doesn't get cleared and thus the access with the old thread ID remains in the set and appears to race with the new one. Not sure if anything can be done about it before #391 itself is merged, so maybe this just needs to be skipped for the time being? EDIT: Although... On interactive it isn't actually restarting anything either, because only whitespace is changed by the patch and no function is changed. So somehow it subtly does pass there. |
|
Yes, let's just mark the failing test as |
|
I didn't investigate it further, but I suspect this failure might be just due to not having incremental warnings here, so even without any changes, postsolving reevaluates everything once and side-effects something spurious (which isn't a verification error because of the |
7e69e23 to
21ced5a
Compare
This is merging #397 into master, such that conflicts with #518 can be resolved there instead of having to be resolved together with all the changes originating from the interactive analysis.
Originally posted by @sim642 in #518 (comment)