From e0c8512012f87b7a2149a4c0a0c65b1cbd0b9a33 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 21 Aug 2017 23:24:40 +0200 Subject: [PATCH] bpo-31238: pydoc ServerThread.stop() clears ref cycle ServerThread.stop() now explicitly sets its docserver attribute to None to break a reference cycle. --- Lib/pydoc.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Lib/pydoc.py b/Lib/pydoc.py index 39db3915dc2cac9..892cdb49f6ffa39 100644 --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -2266,6 +2266,9 @@ def ready(self, server): def stop(self): """Stop the server and this thread nicely""" self.docserver.quit = True + # explicitly break a reference cycle: DocServer.callback + # has indirectly a reference to ServerThread. + self.docserver = None self.serving = False self.url = None