-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
Fix in weak_count in Arc in the case the weak count is locked. #43318
Conversation
In the case the weak count was locked, the weak_count function could return usize::MAX. We need to test this condition manually.
Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @alexcrichton (or someone else) soon. If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes. Please see the contribution instructions for more information. |
Thanks! Could a test like this also be added? |
Shouldn't the fix rather be to retry until the lock is released? |
@RalfJung We know that if the weak count is locked, then it is necessary 1, because we use a CAS with 1 to acquire the lock. |
I see. So whoever holds the lock did so just to make sure it doesn't get modified (as opposed to acquiring the lock in order to do modification themselves). Makes sense; it's about uniqueness checking, after all. |
@alexcrichton I added the test by mimicking the others in arc.rs. However, it does not seem to be ran when typing |
Ah no worries, we do run the tests for the @bors: r+ |
📌 Commit 8416713 has been approved by |
Fix in weak_count in Arc in the case the weak count is locked. In the case the weak count was locked, the weak_count function could return usize::MAX. We need to test this condition manually.
☀️ Test successful - status-appveyor, status-travis |
In the case the weak count was locked, the weak_count function could
return usize::MAX. We need to test this condition manually.