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())