]> Cypherpunks repositories - gostls13.git/commit
runtime: use innermost frame's func name for async preemption check
authorCherry Zhang <cherryyz@google.com>
Wed, 18 Dec 2019 20:19:05 +0000 (15:19 -0500)
committerCherry Zhang <cherryyz@google.com>
Wed, 18 Dec 2019 21:02:58 +0000 (21:02 +0000)
commitdcdee153cd61de47d0cabd6729a17673536b0418
treef4bf4ca4bda5c8f8ee047b4f6dacf5ada188f7c1
parent87a546776b7f5a0a19abc1d439c73b19a974fc28
runtime: use innermost frame's func name for async preemption check

We don't asynchronously preempt if we are in the runtime. We do
this by checking the function name. However, it failed to take
inlining into account. If a runtime function gets inlined into
a non-runtime function, it can be preempted, and bad things can
happen. One instance of this is dounlockOSThread inlined into
UnlockOSThread which is in turn inlined into a non-runtime
function.

Fix this by using the innermost frame's function name.

Change-Id: Ifa036ce1320700aaaefd829b4bee0d04d05c395d
Reviewed-on: https://go-review.googlesource.com/c/go/+/211978
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
src/runtime/preempt.go