aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/proc.go
diff options
context:
space:
mode:
authorRhys Hiltner <rhys@justin.tv>2022-02-14 12:16:22 -0800
committerMichael Knyszek <mknyszek@google.com>2022-05-03 20:49:07 +0000
commit209942fa88ef49e98a0f36dbbfa74c936a8d0fad (patch)
tree429acb5bdd6bcbd8ad4f30fc496400ddbbe223fc /src/runtime/proc.go
parent7c404d59db3591a7c5854b38dc0f05fcb7ac0cff (diff)
downloadgo-209942fa88ef49e98a0f36dbbfa74c936a8d0fad.tar.xz
runtime/pprof: add race annotations for goroutine profiles
The race annotations for goroutine label maps covered the special type of read necessary to create CPU profiles. Extend that to include goroutine profiles. Annotate the copy involved in creating new goroutines. Fixes #50292 Change-Id: I10f69314e4f4eba85c506590fe4781f4d6b8ec2d Reviewed-on: https://go-review.googlesource.com/c/go/+/385660 Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Austin Clements <austin@google.com>
Diffstat (limited to 'src/runtime/proc.go')
-rw-r--r--src/runtime/proc.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/runtime/proc.go b/src/runtime/proc.go
index f29cc800f7..34b09f2a35 100644
--- a/src/runtime/proc.go
+++ b/src/runtime/proc.go
@@ -4155,6 +4155,11 @@ func newproc1(fn *funcval, callergp *g, callerpc uintptr) *g {
_p_.goidcache++
if raceenabled {
newg.racectx = racegostart(callerpc)
+ if newg.labels != nil {
+ // See note in proflabel.go on labelSync's role in synchronizing
+ // with the reads in the signal handler.
+ racereleasemergeg(newg, unsafe.Pointer(&labelSync))
+ }
}
if trace.enabled {
traceGoCreate(newg, newg.startpc)