diff --git a/rts/sm/GC.c b/rts/sm/GC.c
index 993de51bf84db4f5c7f9e0902ade22245d9e8b28..aeadf6f42f9e0d95df6fa120ebb5210887aa193a 100644
--- a/rts/sm/GC.c
+++ b/rts/sm/GC.c
@@ -651,7 +651,9 @@ GarbageCollect (rtsBool force_major_gc,
           zero_static_object_list(gct->scavenged_static_objects);
       } else {
           for (i = 0; i < n_gc_threads; i++) {
-              zero_static_object_list(gc_threads[i]->scavenged_static_objects);
+              if (!gc_threads[i]->idle) {
+                  zero_static_object_list(gc_threads[i]->scavenged_static_objects);
+              }
           }
       }
   }