• Rhys Hiltner's avatar
    runtime: emit trace event in direct semaphore handoff · a4c579e8
    Rhys Hiltner authored
    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: default avatarAustin Clements <austin@google.com>
    a4c579e8
proc.go 150 KB