-
-
Notifications
You must be signed in to change notification settings - Fork 31.8k
gh-124715: Fix method_dealloc(): use PyObject_GC_UnTrack() #133199
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
Conversation
Replace _PyObject_GC_UNTRACK() with PyObject_GC_UnTrack() to not fail if the method was already untracked.
This change fix test_functools on s390x: #132280 (comment) But I'm not sure why "Move trashcan mechanism into Py_Dealloc" requires this change. |
I don't see any reason either. |
s390x buildbot is fast. Other buildbots are still running. Maybe test_functools will fail on other buildbots, I don't know so far. |
Oh, I cannot reproduce the issue on s390x RHEL9 (GCC 11.5.0) nor on s390x Fedora Stable (GCC 14.2.1), only on s390x RHEL8 (GCC 8.5.0). |
test_functools does also crash on:
|
I confirm that test_functools does crash randomly when I build Python using clang on my laptop:
|
It seems like methods are special and can be untracked by something that I failed to identify when they enter the trashcan mechanism. I hope that only methods are treated in a special way and that other objects don't have to be modified for the recent trashcan change. |
Does this fix all the buildbots? |
See also #133261 : test_frame crash randomly on RHEL8, but this time on x86-64. |
Yes. Buildbots which are back to green:
#124715 is still open. |
Replace _PyObject_GC_UNTRACK() with PyObject_GC_UnTrack() to not fail if the method was already untracked.