From d23a2f988771f4abd771ab4274529dcbf60dae37 Mon Sep 17 00:00:00 2001 From: Eric Snow Date: Thu, 19 Oct 2023 08:52:02 -0600 Subject: gh-76785: Make interpreters.*Channel Objects Shareable (gh-110607) This restores their shareability, which was disabled by gh-110318 due to ref leaks. --- Lib/test/support/interpreters.py | 2 +- Lib/test/test_interpreters.py | 1 - Modules/_xxinterpchannelsmodule.c | 4 ++++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Lib/test/support/interpreters.py b/Lib/test/support/interpreters.py index 860b2bb..182f47b 100644 --- a/Lib/test/support/interpreters.py +++ b/Lib/test/support/interpreters.py @@ -264,4 +264,4 @@ class SendChannel(_ChannelEnd): # XXX This is causing leaks (gh-110318): -#_channels._register_end_types(SendChannel, RecvChannel) +_channels._register_end_types(SendChannel, RecvChannel) diff --git a/Lib/test/test_interpreters.py b/Lib/test/test_interpreters.py index 63d41cb..e124a7c 100644 --- a/Lib/test/test_interpreters.py +++ b/Lib/test/test_interpreters.py @@ -833,7 +833,6 @@ class TestChannels(TestBase): after = set(interpreters.list_all_channels()) self.assertEqual(after, created) - @unittest.expectedFailure # See gh-110318: def test_shareable(self): rch, sch = interpreters.create_channel() diff --git a/Modules/_xxinterpchannelsmodule.c b/Modules/_xxinterpchannelsmodule.c index 8dd8050..11fe8cd 100644 --- a/Modules/_xxinterpchannelsmodule.c +++ b/Modules/_xxinterpchannelsmodule.c @@ -441,6 +441,10 @@ _get_current_module_state(void) static int traverse_module_state(module_state *state, visitproc visit, void *arg) { + /* external types */ + Py_VISIT(state->send_channel_type); + Py_VISIT(state->recv_channel_type); + /* heap types */ Py_VISIT(state->ChannelInfoType); Py_VISIT(state->ChannelIDType); -- cgit v0.12