From 6f6403eddf0161deb63dcf8d91e408c81fa7280f Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Fri, 5 Jun 2015 17:36:00 -0400 Subject: [PATCH] runtime: fix checkmarks to rescan stacks Currently checkmarks mode fails to rescan stacks because it sees the leftover state bits indicating that the stacks haven't changed since the last scan. As a result, it won't detect lost marks caused by failing to scan stacks correctly during regular garbage collection. Fix this by marking all stacks dirty before performing the checkmark phase. Change-Id: I1f06882bb8b20257120a4b8e7f95bb3ffc263895 Reviewed-on: https://go-review.googlesource.com/10794 Reviewed-by: Russ Cox --- src/runtime/mgc.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/runtime/mgc.go b/src/runtime/mgc.go index 71b083b29c..baad5b6693 100644 --- a/src/runtime/mgc.go +++ b/src/runtime/mgc.go @@ -937,6 +937,7 @@ func gc(mode int) { // Run a full stop-the-world mark using checkmark bits, // to check that we didn't forget to mark anything during // the concurrent mark process. + gcResetGState() // Rescan stacks initCheckmarks() gcMark(startTime) clearCheckmarks() -- 2.48.1