]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.garbage] runtime: ignore objects in dead spans
authorRuss Cox <rsc@golang.org>
Wed, 5 Nov 2014 19:42:24 +0000 (14:42 -0500)
committerRuss Cox <rsc@golang.org>
Wed, 5 Nov 2014 19:42:24 +0000 (14:42 -0500)
We still don't know why this is happening.

LGTM=rlh
R=rlh
CC=golang-codereviews
https://golang.org/cl/169990043

src/runtime/mgc0.c

index 77a6c9377680f51364653eab53c2876997bd92e4..3ebaf005f5b7c36548fc545fbf41215c15355960 100644 (file)
@@ -326,12 +326,16 @@ objectstart(byte *b, Markbits *mbits)
 
                        // The following ensures that we are rigorous about what data 
                        // structures hold valid pointers
-                       runtime·printf("runtime:objectstart Span weird: obj=%p, k=%p", obj, k);
-                       if (s == nil)
-                               runtime·printf(" s=nil\n");
-                       else
-                               runtime·printf(" s->start=%p s->limit=%p, s->state=%d\n", s->start*PageSize, s->limit, s->state);
-                       runtime·throw("objectstart: bad span");
+                       if(0) {
+                               // Still happens sometimes. We don't know why.
+                               runtime·printf("runtime:objectstart Span weird: obj=%p, k=%p", obj, k);
+                               if (s == nil)
+                                       runtime·printf(" s=nil\n");
+                               else
+                                       runtime·printf(" s->start=%p s->limit=%p, s->state=%d\n", s->start*PageSize, s->limit, s->state);
+                               runtime·throw("objectstart: bad pointer in unexpected span");
+                       }
+                       return nil;
                }
                p = (byte*)((uintptr)s->start<<PageShift);
                if(s->sizeclass != 0) {