GH-104142: Fix _Py_RefcntAdd to respect immortality#104143
Conversation
|
🤖 New build scheduled with the buildbot fleet by @brandtbucher for commit be3b103 🤖 If you want to schedule another build, you need to add the 🔨 test-with-buildbots label again. |
Sorry, something went wrong.
Sorry, something went wrong.
|
(Not sure why buildbots aren't running...) |
Sorry, something went wrong.
|
@brandtbucher cpython/Modules/_testcapi/immortal.c Lines 34 to 38 in 9885677
cpython/Modules/_testcapi/immortal.c Lines 5 to 10 in 9885677 |
Sorry, something went wrong.
|
Nice catch, I could have sworn that I had added the check to Thanks for the fix! |
Sorry, something went wrong.
|
LGTM, all increments to |
Sorry, something went wrong.
|
There is a USan failure: Not sure what that means, but the line is in _Py_IsImmortal (https://github.com/brandtbucher/cpython/blob/py-refcnt-add-immortal/Include/object.h#L227), so it may be real. |
Sorry, something went wrong.
|
🤖 New build scheduled with the buildbot fleet by @JelleZijlstra for commit 1471b39 🤖 If you want to schedule another build, you need to add the 🔨 test-with-buildbots label again. |
Sorry, something went wrong.
|
(Trying again just in case it was something flaky.) |
Sorry, something went wrong.
|
Grrr... it failed again. |
Sorry, something went wrong.
|
I honestly don't know what to do here. It feels like a bug in USan, since I honestly don't get how the new code could cause that failure. But it's reproducible, and indeed seems to indeed be related to my change here. |
Sorry, something went wrong.
|
Ah, wait, the same buildbot is also failing on So it's an existing issue (but one that probably should still be looked into). |
Sorry, something went wrong.
See #104190 |
Sorry, something went wrong.
|
Nice catch! |
Sorry, something went wrong.
* main: (61 commits) pythongh-64595: Argument Clinic: Touch source file if any output file changed (python#104152) pythongh-64631: Test exception messages in cloned Argument Clinic funcs (python#104167) pythongh-68395: Avoid naming conflicts by mangling variable names in Argument Clinic (python#104065) pythongh-64658: Expand Argument Clinic return converter docs (python#104175) pythonGH-103092: port `_asyncio` freelist to module state (python#104196) pythongh-104051: fix crash in test_xxtestfuzz with -We (python#104052) pythongh-104190: fix ubsan crash (python#104191) pythongh-104106: Add gcc fallback of mkfifoat/mknodat for macOS (pythongh-104129) pythonGH-104142: Fix _Py_RefcntAdd to respect immortality (pythonGH-104143) pythongh-104112: link from cached_property docs to method-caching FAQ (python#104113) pythongh-68968: Correcting message display issue with assertEqual (python#103937) pythonGH-103899: Provide a hint when accidentally calling a module (pythonGH-103900) pythongh-103963: fix 'make regen-opcode' in out-of-tree builds (python#104177) pythongh-102500: Add PEP 688 and 698 to the 3.12 release highlights (python#104174) pythonGH-81079: Add case_sensitive argument to `pathlib.Path.glob()` (pythonGH-102710) pythongh-91896: Deprecate collections.abc.ByteString (python#102096) pythongh-99593: Add tests for Unicode C API (part 2) (python#99868) pythongh-102500: Document PEP 688 (python#102571) pythongh-102500: Implement PEP 688 (python#102521) pythongh-96534: socketmodule: support FreeBSD divert(4) socket (python#96536) ...
Also, make the existing immortality tests a bit stricter and more comprehensive.
_Py_RefcntAdddoesn't respect immortality #104142