From b64334cb93d0ddbb551c8cd712942bab2fc72772 Mon Sep 17 00:00:00 2001 From: Mario Corchero Date: Fri, 6 Dec 2019 14:27:38 +0000 Subject: bpo-36820: Break unnecessary cycle in socket.py, codeop.py and dyld.py (GH-13135) Break cycle generated when saving an exception in socket.py, codeop.py and dyld.py as they keep alive not only the exception but user objects through the ``__traceback__`` attribute. https://bugs.python.org/issue36820 Automerge-Triggered-By: @pablogsal --- Lib/socket.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'Lib/socket.py') diff --git a/Lib/socket.py b/Lib/socket.py index 84a5dcb0da..374f1124bf 100755 --- a/Lib/socket.py +++ b/Lib/socket.py @@ -839,7 +839,11 @@ def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT, sock.close() if err is not None: - raise err + try: + raise err + finally: + # Break explicitly a reference cycle + err = None else: raise error("getaddrinfo returns an empty list") -- cgit v1.2.1