From d77ef8fa515e1420f141b5a9d8de7ca7cb6a8fc4 Mon Sep 17 00:00:00 2001 From: Armin Rigo Date: Wed, 28 Jun 2006 10:49:51 +0000 Subject: [PATCH] A couple of crashers of the "won't fix" kind. --- Lib/test/crashers/bogus_code_obj.py | 9 +++++++++ Lib/test/crashers/gc_inspection.py | 17 +++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 Lib/test/crashers/bogus_code_obj.py create mode 100644 Lib/test/crashers/gc_inspection.py diff --git a/Lib/test/crashers/bogus_code_obj.py b/Lib/test/crashers/bogus_code_obj.py new file mode 100644 index 00000000000..5438d912b15 --- /dev/null +++ b/Lib/test/crashers/bogus_code_obj.py @@ -0,0 +1,9 @@ +""" +Broken bytecode objects can easily crash the interpreter. +""" + +import types + +co = types.CodeType(0, 0, 0, 0, '\x04\x71\x00\x00', (), + (), (), '', '', 1, '') +exec co diff --git a/Lib/test/crashers/gc_inspection.py b/Lib/test/crashers/gc_inspection.py new file mode 100644 index 00000000000..b439ad97a74 --- /dev/null +++ b/Lib/test/crashers/gc_inspection.py @@ -0,0 +1,17 @@ +""" +gc.get_referrers() can be used to see objects before they are fully built. +""" + +import gc + + +def g(): + marker = object() + yield marker + # now the marker is in the tuple being constructed + [tup] = [x for x in gc.get_referrers(marker) if type(x) is tuple] + print tup + print tup[1] + + +tuple(g())