]> Cypherpunks repositories - gostls13.git/commit
[release-branch.go1.22] 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)
committerCarlos Amedee <carlos@golang.org>
Fri, 24 May 2024 21:00:06 +0000 (21:00 +0000)
commit3c96ae08701dd3ed66e0f8a81a80e3336a4d9aae
treed3db0016a622d732401341ab0b1cf83e8b0b962f
parent6b89e7dc5a8f6c86db6dbb72f756bd555e8552e0
[release-branch.go1.22] 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.

For #67019.
Fixes #67188.

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>
(cherry picked from commit 36d32f68f41561fb64677297e3733f5d5b866c2a)
Reviewed-on: https://go-review.googlesource.com/c/go/+/584339
Reviewed-by: Carlos Amedee <carlos@golang.org>
src/runtime/metrics_test.go
src/runtime/mgcsweep.go