diff --git a/testes/all.lua b/testes/all.lua
index a4feeec..a8e4402 100644
--- a/testes/all.lua
+++ b/testes/all.lua
@@ -154,18 +154,8 @@
 
 dofile('main.lua')
 
-do
-  local next, setmetatable, stderr = next, setmetatable, io.stderr
-  -- track collections
-  local mt = {}
-  -- each time a table is collected, remark it for finalization
-  -- on next cycle
-  mt.__gc = function (o)
-     stderr:write'.'    -- mark progress
-     local n = setmetatable(o, mt)   -- remark it
-   end
-   local n = setmetatable({}, mt)    -- create object
-end
+-- trace GC cycles
+require"tracegc".start()
 
 report"gc.lua"
 local f = assert(loadfile('gc.lua'))
diff --git a/testes/cstack.lua b/testes/cstack.lua
index 7bd5506..213d15d 100644
--- a/testes/cstack.lua
+++ b/testes/cstack.lua
@@ -2,6 +2,8 @@
 -- See Copyright Notice in file all.lua
 
 
+local tracegc = require"tracegc"
+
 print"testing stack overflow detection"
 
 -- Segmentation faults in these tests probably result from a C-stack
@@ -21,7 +23,9 @@
     count = count + 1
     return 1 + loop(x, y, z)
   end
+  tracegc.stop()    -- __gc should not be called with a full stack
   local res, msg = xpcall(loop, loop)
+  tracegc.start()
   assert(msg == "error in error handling")
   print("final count: ", count)
 end
@@ -135,18 +139,18 @@
   local topB, sizeB   -- top and size Before overflow
   local topA, sizeA   -- top and size After overflow
   topB, sizeB = T.stacklevel()
-  collectgarbage("stop")    -- __gc should not be called with a full stack
+  tracegc.stop()    -- __gc should not be called with a full stack
   xpcall(f, err)
-  collectgarbage("restart")
+  tracegc.start()
   topA, sizeA = T.stacklevel()
   -- sizes should be comparable
   assert(topA == topB and sizeA < sizeB * 2)
   print(string.format("maximum stack size: %d", stack1))
   LIM = N      -- will stop recursion at maximum level
   N = 0        -- to count again
-  collectgarbage("stop")    -- __gc should not be called with a full stack
+  tracegc.stop()    -- __gc should not be called with a full stack
   f()
-  collectgarbage("restart")
+  tracegc.start()
   print"+"
 end
 
diff --git a/testes/locals.lua b/testes/locals.lua
index a93839d..2c67edb 100644
--- a/testes/locals.lua
+++ b/testes/locals.lua
@@ -5,6 +5,8 @@
 
 local debug = require"debug"
 
+local tracegc = require"tracegc"
+
 
 -- bug in 5.1:
 
@@ -554,9 +556,9 @@
       obj[1] = 100
       flag = obj
     end)
-    collectgarbage("stop")
+    tracegc.stop()
     st, obj = xpcall(overflow, errorh, 0)
-    collectgarbage("restart")
+    tracegc.start()
   end)
   co()
   assert(not st and obj[1] == 10 and flag[1] == 100)
diff --git a/testes/tracegc.lua b/testes/tracegc.lua
new file mode 100644
index 0000000..9c5c1b3
--- /dev/null
+++ b/testes/tracegc.lua
@@ -0,0 +1,40 @@
+-- track collections
+
+local M = {}
+
+-- import list
+local setmetatable, stderr, collectgarbage =
+         setmetatable, io.stderr, collectgarbage
+
+_ENV = nil
+
+local active = false
+
+
+-- each time a table is collected, remark it for finalization on next
+-- cycle
+local mt = {}
+function mt.__gc (o)
+  stderr:write'.'    -- mark progress
+  if active then
+    setmetatable(o, mt)   -- remark object for finalization
+  end
+end
+
+
+function M.start ()
+  if not active then
+    active = true
+    setmetatable({}, mt)    -- create initial object
+  end
+end
+
+
+function M.stop ()
+  if active then
+    active = false
+    collectgarbage()   -- call finalizer for the last time
+  end
+end
+
+return M
