Commit 86871015 authored by Victor Stinner's avatar Victor Stinner Committed by GitHub

bpo-31323: Fix reference leak in test_ssl (#3263)

Store exceptions as string rather than object to prevent reference
cycles which cause leaking dangling threads.
parent e8a533fb
......@@ -1889,7 +1889,11 @@ if _have_threads:
# XXX Various errors can have happened here, for example
# a mismatching protocol version, an invalid certificate,
# or a low-level bug. This should be made more discriminating.
self.server.conn_errors.append(e)
#
# bpo-31323: Store the exception as string to prevent
# a reference leak: server -> conn_errors -> exception
# -> traceback -> self (ConnectionHandler) -> server
self.server.conn_errors.append(str(e))
if self.server.chatty:
handle_error("\n server: bad connection attempt from " + repr(self.addr) + ":\n")
self.running = False
......@@ -3097,7 +3101,7 @@ if _have_threads:
with context.wrap_socket(socket.socket()) as s:
with self.assertRaises(OSError):
s.connect((HOST, server.port))
self.assertIn("no shared cipher", str(server.conn_errors[0]))
self.assertIn("no shared cipher", server.conn_errors[0])
def test_version_basic(self):
"""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment