diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2023-10-19 14:52:02 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-19 14:52:02 (GMT) |
commit | d23a2f988771f4abd771ab4274529dcbf60dae37 (patch) | |
tree | f8b38d16b5b1216f271a8e0b1fca055106e219ee | |
parent | 6741d5af32101c27c3f930bfc575a7e567f9bf20 (diff) | |
download | cpython-d23a2f988771f4abd771ab4274529dcbf60dae37.zip cpython-d23a2f988771f4abd771ab4274529dcbf60dae37.tar.gz cpython-d23a2f988771f4abd771ab4274529dcbf60dae37.tar.bz2 |
gh-76785: Make interpreters.*Channel Objects Shareable (gh-110607)
This restores their shareability, which was disabled by gh-110318 due to ref leaks.
-rw-r--r-- | Lib/test/support/interpreters.py | 2 | ||||
-rw-r--r-- | Lib/test/test_interpreters.py | 1 | ||||
-rw-r--r-- | 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); |