As Mike Fletcher pointed out, a __deepcopy__() method should be called
with the memo as an argument.
diff --git a/Lib/copy.py b/Lib/copy.py
index 1fbd481..1bdd4e1 100644
--- a/Lib/copy.py
+++ b/Lib/copy.py
@@ -215,7 +215,7 @@
 
 def _deepcopy_inst(x, memo):
 	if hasattr(x, '__deepcopy__'):
-		return x.__deepcopy__()
+		return x.__deepcopy__(memo)
 	if hasattr(x, '__getinitargs__'):
 		args = x.__getinitargs__()
 		_keep_alive(args, memo)