And one more simplification to test_saveall().
diff --git a/Lib/test/test_gc.py b/Lib/test/test_gc.py
index 2e1bc11..1e684bf 100644
--- a/Lib/test/test_gc.py
+++ b/Lib/test/test_gc.py
@@ -174,22 +174,21 @@
     gc.collect()
     vereq(gc.garbage, []) # if this fails, someone else created immortal trash
 
-    debug = gc.get_debug()
-    gc.set_debug(debug | gc.DEBUG_SAVEALL)
     l = []
     l.append(l)
     id_l = id(l)
-    del l
 
+    debug = gc.get_debug()
+    gc.set_debug(debug | gc.DEBUG_SAVEALL)
+    del l
     gc.collect()
-    try:
-        vereq(len(gc.garbage), 1)
-        if id(gc.garbage[0]) == id_l:
-            del gc.garbage[0]
-        else:
-            raise TestFailed, "didn't find obj in garbage (saveall)"
-    finally:
-        gc.set_debug(debug)
+    gc.set_debug(debug)
+
+    vereq(len(gc.garbage), 1)
+    if id(gc.garbage[0]) == id_l:
+        del gc.garbage[0]
+    else:
+        raise TestFailed, "didn't find obj in garbage (saveall)"
 
 def test_del():
     # __del__ methods can trigger collection, make this to happen