Index: src/Common/GC.cc
===================================================================
--- src/Common/GC.cc	(revision 42107b41a887b7888f179ea48e8f6e41ba1607d8)
+++ src/Common/GC.cc	(revision 7a37f258e086b5eac5ad3782c1f4116bce1b1fc6)
@@ -96,4 +96,7 @@
 	Generation& old = gens[--g];
 
+	// ensure static roots traced
+	trace_static_roots();
+
 	// collect young gen
 	for ( GC_Object*& obj : young ) {
@@ -120,4 +123,7 @@
 	assert(g == 0 && "Cannot do old collection when young generation is active");
 	Generation& old = gens[0];
+
+	// ensure static roots traced
+	trace_static_roots();
 
 	// collect old gen
Index: src/Common/GC.h
===================================================================
--- src/Common/GC.h	(revision 42107b41a887b7888f179ea48e8f6e41ba1607d8)
+++ src/Common/GC.h	(revision 7a37f258e086b5eac5ad3782c1f4116bce1b1fc6)
@@ -108,5 +108,4 @@
 	GC& gc = GC::get();
 	traceAll(gc, roots...);
-	gc.trace_static_roots();
 }
 
@@ -116,5 +115,4 @@
 	GC& gc = GC::get();
 	traceAll(gc, roots...);
-	gc.trace_static_roots();
 	gc.collect();
 }
