]> Cypherpunks repositories - gostls13.git/commit
runtime: update large object stats before freeSpan in sweep
authorMichael Anthony Knyszek <mknyszek@google.com>
Sun, 5 May 2024 21:17:27 +0000 (21:17 +0000)
committerGopher Robot <gobot@golang.org>
Wed, 8 May 2024 17:52:18 +0000 (17:52 +0000)
commit36d32f68f41561fb64677297e3733f5d5b866c2a
treef3157645038a263434b0f542e63b22c4e9419d63
parent97c13cfb254763dc4c06d21a32883acae3ece537
runtime: update large object stats before freeSpan in sweep

Currently freeSpan is called before large object stats are updated when
sweeping large objects. This means heapStats.inHeap might get subtracted
before the large object is added to the largeFree field. The end result
is that the /memory/classes/heap/unused:bytes metric, which subtracts
live objects (alloc-free) from inHeap may overflow.

Fix this by always updating the large object stats before calling
freeSpan.

Fixes #67019.

Change-Id: Ib02bd8dcd1cf8cd1bc0110b6141e74f678c10445
Reviewed-on: https://go-review.googlesource.com/c/go/+/583380
Auto-Submit: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Felix Geisendörfer <felix.geisendoerfer@datadoghq.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
src/runtime/metrics_test.go
src/runtime/mgcsweep.go