First approximation of pthread_setspecific
by escaping things reachable from the argument and invalidating all globals
#877
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Our analysis currently is sound here, as the second argument to the function is considered escaped, and treated flow-insensitively from there on. Also, it is invalidated when
sem.unknown_function.invalidate.globals
is set.Any later writes thus do not lead to the value being changed back from
T
and thus all writes through the pointer obtained back frompthread_getspecific
are also accounted for.This adds an assert that fails if the code makes use of
pthread_setspecific
and ``sem.unknown_function.invalidate.globals` is disabled, leading to unsound results.This a temporary measure before #876 is attacked.