From d77ef8fa515e1420f141b5a9d8de7ca7cb6a8fc4 Mon Sep 17 00:00:00 2001 From: Armin Rigo Date: Wed, 28 Jun 2006 10:49:51 +0000 Subject: 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 0000000..5438d91 --- /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 0000000..b439ad9 --- /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()) -- cgit v0.12