]> Cypherpunks repositories - gostls13.git/commit
test/recover4.go: use mprotect to create a hole instead of munmap
authorMichael Anthony Knyszek <mknyszek@google.com>
Fri, 12 Nov 2021 05:04:32 +0000 (05:04 +0000)
committerMichael Knyszek <mknyszek@google.com>
Fri, 12 Nov 2021 16:58:34 +0000 (16:58 +0000)
commit95d06576702c54139796f3e24e2eec4b135b1a09
treebb14c9c0c09dc4c514efae2682255695eb603ada
parent23adc139bf1c0c099dd075da076f5a1f3ac700d4
test/recover4.go: use mprotect to create a hole instead of munmap

Currently the recover4 test, which recovers from a panic created from a
fault, generates a fault by creating a hole in a mapping. It does this
via munmap. However, it's possible the runtime can create a new mapping
that ends up in that hole, for example if the GC executes, causing the
test to fail.

In fact, this is the case now with a smaller minimum heap size.

Modify the test to use mprotect, and clean up the code a little while
we're here: define everything in terms of the length of original
mapping, deduplicate some constants and expressions, and have the test
recover properly even if recover() returns nil (right now it panics
because it fails to type assert nil as error).

Fixes #49381.

Change-Id: If399eca564466e5e8aeb2dc6f86a246d0fce7b5d
Reviewed-on: https://go-review.googlesource.com/c/go/+/363534
Trust: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
test/recover4.go