]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: temporary disable concurrent GC sweep
authorDmitriy Vyukov <dvyukov@google.com>
Wed, 12 Feb 2014 20:03:27 +0000 (00:03 +0400)
committerDmitriy Vyukov <dvyukov@google.com>
Wed, 12 Feb 2014 20:03:27 +0000 (00:03 +0400)
We see failures on builders, e.g.:
http://build.golang.org/log/70bb28cd6bcf8c4f49810a011bb4337a61977bf4

LGTM=rsc, dave
R=rsc, dave
CC=golang-codereviews
https://golang.org/cl/62360043

src/pkg/runtime/mgc0.c

index 02872759b14b7165ca50344f5b3ae6d9ba16d694..a6dc1d58ae8bfe2a3f74ca29e17b437564402a76 100644 (file)
@@ -2383,14 +2383,21 @@ gc(struct gc_args *args)
        sweep.nspan = runtime·mheap.nspan;
        sweep.spanidx = 0;
 
-       runtime·lock(&gclock);
-       if(sweep.g == nil)
-               sweep.g = runtime·newproc1(&bgsweepv, nil, 0, 0, runtime·gc);
-       else if(sweep.parked) {
-               sweep.parked = false;
-               runtime·ready(sweep.g);
+       // Temporary disable concurrent sweep, because we see failures on builders.
+       if(false) {
+               runtime·lock(&gclock);
+               if(sweep.g == nil)
+                       sweep.g = runtime·newproc1(&bgsweepv, nil, 0, 0, runtime·gc);
+               else if(sweep.parked) {
+                       sweep.parked = false;
+                       runtime·ready(sweep.g);
+               }
+               runtime·unlock(&gclock);
+       } else {
+               // Sweep all spans eagerly.
+               while(runtime·sweepone() != -1)
+                       gcstats.npausesweep++;
        }
-       runtime·unlock(&gclock);
 
        runtime·MProf_GC();
 }