Test for the bug in recurse_down_subclasses() that I just fixed.
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index 1168106..852115b 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -2773,6 +2773,16 @@
     else:
         raise TestFailed, "d.foo should be undefined now"
 
+    # Test a nasty bug in recurse_down_subclasses()
+    import gc
+    class A(object):
+        pass
+    class B(A):
+        pass
+    del B
+    gc.collect()
+    A.__setitem__ = lambda *a: None # crash
+
 def buffer_inherit():
     import binascii
     # SF bug [#470040] ParseTuple t# vs subclasses.