aboutsummaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
authorCherry Mui <cherryyz@google.com>2021-08-04 19:41:19 -0400
committerCherry Mui <cherryyz@google.com>2021-08-16 23:32:14 +0000
commit8ff16c19909e5aecf51c6b993cba36ea51791f34 (patch)
tree0a2fa62f17fe95a05448a980074feb65625cdde5 /src/runtime
parentdf9c5d8f5dc96977dad865dc531d6c1e665ea1cb (diff)
downloadgo-8ff16c19909e5aecf51c6b993cba36ea51791f34.tar.gz
go-8ff16c19909e5aecf51c6b993cba36ea51791f34.zip
runtime: accept restartable sequence pcdata values in isAsyncSafePoint
If the pcdata value indicates a restartable sequence, it is okay to asynchronously preempt (and resume at the restart PC). Accept it in isAsyncSafePoint. Fixes #47530. Change-Id: I419225717c8eee5812f3235338262da5895aad0d Reviewed-on: https://go-review.googlesource.com/c/go/+/340011 Trust: Cherry Mui <cherryyz@google.com> Run-TryBot: Cherry Mui <cherryyz@google.com> Reviewed-by: Joel Sing <joel@sing.id.au> Reviewed-by: Austin Clements <austin@google.com>
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/preempt.go2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/runtime/preempt.go b/src/runtime/preempt.go
index a38ab79398..334bac779e 100644
--- a/src/runtime/preempt.go
+++ b/src/runtime/preempt.go
@@ -399,7 +399,7 @@ func isAsyncSafePoint(gp *g, pc, sp, lr uintptr) (bool, uintptr) {
return false, 0
}
up, startpc := pcdatavalue2(f, _PCDATA_UnsafePoint, pc)
- if up != _PCDATA_UnsafePointSafe {
+ if up == _PCDATA_UnsafePointUnsafe {
// Unsafe-point marked by compiler. This includes
// atomic sequences (e.g., write barrier) and nosplit
// functions (except at calls).