bpo-42972: _thread.RLock type implements tp_traverse#26734
Conversation
The _thread.RLock type now fully implement the GC protocol: add a traverse function and the Py_TPFLAGS_HAVE_GC flag.
|
Don't we have a warning for when heap types don't implement a |
Sorry, something went wrong.
No, the warning is when a heap type has the GC flags but don't have tp_traverse. in this case we were missing the GC flags so the check failed to raise the warning |
Sorry, something went wrong.
I agree that a warning should be emitted at runtime when a heap type doesn't have the Py_TPFLAGS_HAVE_GC or doesn't implement tp_traverse. I suggest to discuss this idea in https://bugs.python.org/issue42972 It's super hard to discover such very tricky bug if you don't have a very deep understanding of GC internals and how Python works. |
Sorry, something went wrong.
shihai1991
left a comment
There was a problem hiding this comment.
LGTM.
Sorry, something went wrong.
|
Thanks @vstinner for the PR 🌮🎉.. I'm working now to backport this PR to: 3.10. |
Sorry, something went wrong.
The _thread.RLock type now fully implement the GC protocol: add a traverse function and the Py_TPFLAGS_HAVE_GC flag. (cherry picked from commit 1cd3d85) Co-authored-by: Victor Stinner <vstinner@python.org>
The _thread.RLock type now fully implement the GC protocol: add a traverse function and the Py_TPFLAGS_HAVE_GC flag.
The _thread.RLock type now fully implement the GC protocol: add a
traverse function and the the Py_TPFLAGS_HAVE_GC flag.
https://bugs.python.org/issue42972