summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2014-11-05 14:42:24 -0500
committerRuss Cox <rsc@golang.org>2014-11-05 14:42:24 -0500
commit6d5e8c9c938b45ddcc62470a790408642a26218b (patch)
tree99dae9b3f0668dabaf2013f1486ec1b14d0b0fb3
parentc4bde225a28b8ce8e0b2075c912f7726b3756300 (diff)
downloadgo-6d5e8c9c938b45ddcc62470a790408642a26218b.tar.gz
[dev.garbage] runtime: ignore objects in dead spans
We still don't know why this is happening. LGTM=rlh R=rlh CC=golang-codereviews https://codereview.appspot.com/169990043
-rw-r--r--src/runtime/mgc0.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/runtime/mgc0.c b/src/runtime/mgc0.c
index 77a6c9377..3ebaf005f 100644
--- a/src/runtime/mgc0.c
+++ b/src/runtime/mgc0.c
@@ -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) {