aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/malloc_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/malloc_test.go')
-rw-r--r--src/runtime/malloc_test.go18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/runtime/malloc_test.go b/src/runtime/malloc_test.go
index 97cf0eed54..b76b0a02ac 100644
--- a/src/runtime/malloc_test.go
+++ b/src/runtime/malloc_test.go
@@ -664,10 +664,24 @@ func TestArenaCollision(t *testing.T) {
}
t.Logf("reserved [%#x, %#x)", start, end)
disallowed = append(disallowed, [2]uintptr{start, end})
+
+ hint, ok := NextArenaHint()
+ if !ok {
+ // We're out of arena hints. There's not much we can do now except give up.
+ // This might happen for a number of reasons, like if there's just something
+ // else already mapped in the address space where we put our hints. This is
+ // a bit more common than it used to be thanks to heap base randomization.
+ t.Skip("ran out of arena hints")
+ }
+
// Allocate until the runtime tries to use the hint we
// just mapped over.
- hint := GetNextArenaHint()
- for GetNextArenaHint() == hint {
+ for {
+ if next, ok := NextArenaHint(); !ok {
+ t.Skip("ran out of arena hints")
+ } else if next != hint {
+ break
+ }
ac := new(acLink)
arenaCollisionSink = append(arenaCollisionSink, ac)
// The allocation must not have fallen into