From 2817e77024a53aae31cc02c01a26fce0ebb11a79 Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Mon, 19 Dec 2016 22:55:53 -0500 Subject: runtime: debug prints for spanBytesAlloc underflow Updates #18043. Change-Id: I24e687fdd5521c48b672987f15f0d5de9f308884 Reviewed-on: https://go-review.googlesource.com/34612 Run-TryBot: Austin Clements Reviewed-by: Rick Hudson TryBot-Result: Gobot Gobot --- src/runtime/mgcsweep.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/runtime/mgcsweep.go b/src/runtime/mgcsweep.go index e74a451d0d..fb5c488ffc 100644 --- a/src/runtime/mgcsweep.go +++ b/src/runtime/mgcsweep.go @@ -405,7 +405,10 @@ func reimburseSweepCredit(unusableBytes uintptr) { // Nobody cares about the credit. Avoid the atomic. return } - if int64(atomic.Xadd64(&mheap_.spanBytesAlloc, -int64(unusableBytes))) < 0 { + nval := atomic.Xadd64(&mheap_.spanBytesAlloc, -int64(unusableBytes)) + if int64(nval) < 0 { + // Debugging for #18043. + print("runtime: bad spanBytesAlloc=", nval, " (was ", nval+uint64(unusableBytes), ") unusableBytes=", unusableBytes, " sweepPagesPerByte=", mheap_.sweepPagesPerByte, "\n") throw("spanBytesAlloc underflow") } } -- cgit v1.2.3-54-g00ecf