Don't use PyList.get_item_unchecked() on free-threaded build#4539
Merged
davidhewitt merged 2 commits intoPyO3:mainfrom Sep 30, 2024
Merged
Don't use PyList.get_item_unchecked() on free-threaded build#4539davidhewitt merged 2 commits intoPyO3:mainfrom
davidhewitt merged 2 commits intoPyO3:mainfrom
Conversation
davidhewitt
reviewed
Sep 13, 2024
Member
davidhewitt
left a comment
There was a problem hiding this comment.
Thanks, after a bit of examination here I think that disabling this API is the right approach for now.
There's no way to guarantee that the list length remains valid from time of check to time of calling .get_item_unchecked . So the safety invariant cannot realistically be met.
5c76da7 to
763a241
Compare
Contributor
Author
|
I also double-checked, and |
davidhewitt
approved these changes
Sep 30, 2024
Member
davidhewitt
left a comment
There was a problem hiding this comment.
Makes sense, thanks for being so thorough here!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Followup for #4410.
get_item_uncheckedallows possible access of dangling pointers and other data races becausePyList_GET_ITEMreturns a borrowed reference. I added bindings forPyList_GetItemRefin #4410 but missed that the liter iterator usesget_item_unchecked.I could leave the APIs visible since they're already marked as unsafe, but since this API is already cfg-ed out for the limited API I thought it might make sense to disable it for free-threaded build as well.
Will add a release note if we decide disabling it is the correct thing to do.