merge 3.2
diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py
index 1d897f2..1ad7f97 100644
--- a/Lib/test/test_exceptions.py
+++ b/Lib/test/test_exceptions.py
@@ -7,8 +7,9 @@
 import weakref
 import errno
 
-from test.support import (TESTFN, unlink, run_unittest, captured_output,
-                          gc_collect, cpython_only, no_tracing)
+from test.support import (TESTFN, captured_output, check_impl_detail,
+                          cpython_only, gc_collect, run_unittest, no_tracing,
+                          unlink)
 
 class NaiveException(Exception):
     def __init__(self, x):
@@ -551,7 +552,9 @@
             e.__context__ = None
             obj = None
             obj = wr()
-            gc_collect()
+            # guarantee no ref cycles on CPython (don't gc_collect)
+            if check_impl_detail(cpython=False):
+                gc_collect()
             self.assertTrue(obj is None, "%s" % obj)
 
         # Some complicated construct
@@ -568,7 +571,8 @@
             except MyException:
                 pass
         obj = None
-        gc_collect()
+        if check_impl_detail(cpython=False):
+            gc_collect()
         obj = wr()
         self.assertTrue(obj is None, "%s" % obj)
 
@@ -583,7 +587,8 @@
         with Context():
             inner_raising_func()
         obj = None
-        gc_collect()
+        if check_impl_detail(cpython=False):
+            gc_collect()
         obj = wr()
         self.assertTrue(obj is None, "%s" % obj)