From 5b110c7b08946a2a2810cb4614c078c74645a3d1 Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Thu, 6 Nov 2014 09:30:41 -0800 Subject: [PATCH] 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 --- src/runtime/heapdump.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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: