produce the double lock/unlock error #102
Merged
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.
The current implementation is buggy. A cache line can be double locked or unlocked.
For example (in
probe_resp()
ofcoherence_multi.hpp
):Here, both hit and access_line would set the cache set state and lock the cache line, twice!
By adding a flag in the new
MetaLock
wrapper for MT supported metadata, this error is explicitly produced:According to https://en.cppreference.com/w/cpp/thread/mutex/lock
It seems like GCC on Linux should not raise an error and simply let to lock and unlock silently! However, this is obviously not safe.
Since I am currently reviewing and refactoring the multithread extension, this PR is pure for your reference. No fix is required as I will find a way to fix it hopefully very soon.