]> Cypherpunks repositories - gostls13.git/commit
runtime: guarantee checkfinalizers test allocates in a shared tiny block
authorMichael Anthony Knyszek <mknyszek@google.com>
Tue, 20 May 2025 20:26:56 +0000 (20:26 +0000)
committerMichael Knyszek <mknyszek@google.com>
Wed, 21 May 2025 16:50:31 +0000 (09:50 -0700)
commit8b45a3f78b178ce66f419038a664cbd6a82ada54
tree62d8244f9bde2554525137724cab46a137b32b54
parent896097000912761dbd31cead2bec99f17534f521
runtime: guarantee checkfinalizers test allocates in a shared tiny block

Currently the checkfinalizers test (TestDetectCleanupOrFinalizerLeak)
only *tries* to ensure the tiny alloc with a cleanup attached shares a
block with other objects. However, what it does is insufficient, because
it could get unlucky and have the last object allocated be the first
object of a new block.

This change changes the test to guarantee that a tiny object is not at
the start of a fresh block by looking at the alignment of the object's
pointer. If the object's pointer is odd, then that's good enough to know
that it shares a block with something else, since the blocks themselves
are aligned to a much higher power of two.

This fixes a failure I've seen on the builders.

Fixes #73810.

Change-Id: Ieafdbb9cccb0d2dc3659a9a5d9d9233718461635
Reviewed-on: https://go-review.googlesource.com/c/go/+/674655
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
src/runtime/malloc.go
src/runtime/testdata/testprog/checkfinalizers.go