]> Cypherpunks repositories - gostls13.git/commit
runtime: emit trace event in direct semaphore handoff
authorRhys Hiltner <rhys@justin.tv>
Wed, 18 Dec 2019 00:40:46 +0000 (16:40 -0800)
committerAustin Clements <austin@google.com>
Thu, 2 Jan 2020 20:13:03 +0000 (20:13 +0000)
commita4c579e8f7c8129b2c27779f206ebd2c9b393633
treedfe75aa1cb160812d5acc74bf6572983574be8d1
parentbf268472408b0f46767d46ae1d14439e5eb84014
runtime: emit trace event in direct semaphore handoff

When a goroutine yields the remainder of its time to another goroutine
during direct semaphore handoff (as in an Unlock of a sync.Mutex in
starvation mode), it needs to signal that change to the execution
tracer. The discussion in CL 200577 didn't reach consensus on how best
to describe that, but pointed out that "traceEvGoSched / goroutine calls
Gosched" could be confusing.

Emit a "traceEvGoPreempt / goroutine is preempted" event in this case,
to allow the execution tracer to find a consistent event ordering
without being both specific and inaccurate about why the active
goroutine has changed.

Fixes #36186

Change-Id: Ic4ade19325126db2599aff6aba7cba028bb0bee9
Reviewed-on: https://go-review.googlesource.com/c/go/+/211797
Run-TryBot: Dan Scales <danscales@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
src/cmd/trace/trace_test.go
src/runtime/proc.go
src/runtime/sema.go