An object with __call__ as an attribute, when called, will have that attribute checked for __call__ itself, and will continue to look until it finds an object without the attribute. This can lead to an infinite recursion.
Closes bug #532646, again. Will be backported.
diff --git a/Misc/NEWS b/Misc/NEWS
index 3bd732e..3ec43af 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,12 @@
Core and builtins
-----------------
+- Bug #532646: object.__call__() will continue looking for the __call__
+ attribute on objects until one without one is found. This leads to recursion
+ when you take a class and set its __call__ attribute to an instance of the
+ class. Originally fixed for classic classes, but this fix is for new-style.
+ Removes the infinite_rec_3 crasher.
+
- The string and unicode methods startswith() and endswith() now accept
a tuple of prefixes/suffixes to look for. Implements RFE #1491485.