Skip to content

Commit 1b00bdd

Browse files
miss-islingtonvstinner
authored andcommitted
[3.6] bpo-31323: Fix reference leak in test_ssl (GH-3263) (#3538)
Store exceptions as string rather than object to prevent reference cycles which cause leaking dangling threads. (cherry picked from commit 8687101)
1 parent 547f2a9 commit 1b00bdd

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

Lib/test/test_ssl.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1867,7 +1867,11 @@ def wrap_conn(self):
18671867
# XXX Various errors can have happened here, for example
18681868
# a mismatching protocol version, an invalid certificate,
18691869
# or a low-level bug. This should be made more discriminating.
1870-
self.server.conn_errors.append(e)
1870+
#
1871+
# bpo-31323: Store the exception as string to prevent
1872+
# a reference leak: server -> conn_errors -> exception
1873+
# -> traceback -> self (ConnectionHandler) -> server
1874+
self.server.conn_errors.append(str(e))
18711875
if self.server.chatty:
18721876
handle_error("\n server: bad connection attempt from " + repr(self.addr) + ":\n")
18731877
self.running = False
@@ -3081,7 +3085,7 @@ def test_default_ciphers(self):
30813085
with context.wrap_socket(socket.socket()) as s:
30823086
with self.assertRaises(OSError):
30833087
s.connect((HOST, server.port))
3084-
self.assertIn("no shared cipher", str(server.conn_errors[0]))
3088+
self.assertIn("no shared cipher", server.conn_errors[0])
30853089

30863090
def test_version_basic(self):
30873091
"""

0 commit comments

Comments
 (0)