aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/crashers/gc_has_finalizer.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/crashers/gc_has_finalizer.py')
-rw-r--r--Lib/test/crashers/gc_has_finalizer.py36
1 files changed, 0 insertions, 36 deletions
diff --git a/Lib/test/crashers/gc_has_finalizer.py b/Lib/test/crashers/gc_has_finalizer.py
deleted file mode 100644
index 737959bb9b5..00000000000
--- a/Lib/test/crashers/gc_has_finalizer.py
+++ /dev/null
@@ -1,36 +0,0 @@
-"""
-The gc module can still invoke arbitrary Python code and crash.
-This is an attack against _PyInstance_Lookup(), which is documented
-as follows:
-
- The point of this routine is that it never calls arbitrary Python
- code, so is always "safe": all it does is dict lookups.
-
-But of course dict lookups can call arbitrary Python code.
-The following code causes mutation of the object graph during
-the call to has_finalizer() in gcmodule.c, and that might
-segfault.
-"""
-
-import gc
-
-
-class A:
- def __hash__(self):
- return hash("__del__")
- def __eq__(self, other):
- del self.other
- return False
-
-a = A()
-b = A()
-
-a.__dict__[b] = 'A'
-
-a.other = b
-b.other = a
-
-gc.collect()
-del a, b
-
-gc.collect()