diff options
author | Keith Randall <khr@golang.org> | 2014-11-06 09:30:41 -0800 |
---|---|---|
committer | Keith Randall <khr@golang.org> | 2014-11-06 09:30:41 -0800 |
commit | 5b110c7b08946a2a2810cb4614c078c74645a3d1 (patch) | |
tree | 9dc8f34299082aeebe339d6611e74969204ca4db | |
parent | 6ad16c4a48accddee2e711b565e9214eae945da4 (diff) | |
download | go-5b110c7b08946a2a2810cb4614c078c74645a3d1.tar.gz go-5b110c7b08946a2a2810cb4614c078c74645a3d1.zip |
runtime: don't stop bitmap dump at BitsDead
Stack bitmaps need to be scanned past any BitsDead entries.
Object bitmaps will not have any BitsDead in them (bitmap extraction stops at
the first BitsDead entry in makeheapobjbv). data/bss bitmaps also have no BitsDead entries.
LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/168270043
-rw-r--r-- | src/runtime/heapdump.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/runtime/heapdump.c b/src/runtime/heapdump.c index 94a4bd2be5..eddbc1d1c9 100644 --- a/src/runtime/heapdump.c +++ b/src/runtime/heapdump.c @@ -251,7 +251,9 @@ dumpbv(BitVector *bv, uintptr offset) for(i = 0; i < bv->n; i += BitsPerPointer) { switch(bv->bytedata[i/8] >> i%8 & 3) { case BitsDead: - return; + // BitsDead has already been processed in makeheapobjbv. + // We should only see it in stack maps, in which case we should continue processing. + break; case BitsScalar: break; case BitsPointer: |