FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

[gh-117657] _Py_MergeZeroLocalRefcount isn't loading ob_ref_shared with strong enough semantics by DinoV · Pull Request #118111 · python/cpython · GitHub

/ cpython Public

[gh-117657] _Py_MergeZeroLocalRefcount isn't loading ob_ref_shared with strong enough semantics - #118111

Merged
DinoV merged 1 commit into
python:mainfrom
DinoV:nogil_tsan_decref
Apr 19, 2024
Merged

[gh-117657] _Py_MergeZeroLocalRefcount isn't loading ob_ref_shared with strong enough semantics#118111
DinoV merged 1 commit into
python:mainfrom
DinoV:nogil_tsan_decref

Conversation

DinoV commented Apr 19, 2024
edited by bedevere-app Bot
Loading

Copy link
Copy Markdown
Contributor

In the nogil-integration branch there's some intermittent TSAN warnings like these:

https://gist.github.com/DinoV/52b7131cb149b9ebb2e965970c4ae9e8

It looks like we're racing on the loading of ob_ref_shared in _Py_MergeZeroLocalRefcount because we're doing a relaxed load, leading to the object potentially being freed while another thread holds a reference to it. This is occurring because with a lock-free read from the inline values there's no other synchronization points with the thread which owns the object.

This just changes the read to be acquire.

mpage commented Apr 19, 2024

Copy link
Copy Markdown
Contributor

This looks right to me but it'd be good to have @colesbury take a look as well.

mpage requested a review from colesbury April 19, 2024 19:36
DinoV merged commit b45af00 into python:main Apr 19, 2024
DinoV deleted the nogil_tsan_decref branch May 31, 2024 18:22
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants


Back | FazBrowse Home | New Git URL