diff options
Diffstat (limited to 'src/runtime/proc.go')
| -rw-r--r-- | src/runtime/proc.go | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/runtime/proc.go b/src/runtime/proc.go index 03ba00fd97..3d84968b10 100644 --- a/src/runtime/proc.go +++ b/src/runtime/proc.go @@ -93,7 +93,7 @@ func main() { // let the other goroutine finish printing the panic trace. // Once it does, it will exit. See issue 3934. if panicking != 0 { - gopark(nil, nil, "panicwait") + gopark(nil, nil, "panicwait", traceEvGoStop) } exit(0) @@ -117,7 +117,7 @@ func forcegchelper() { throw("forcegc: phase error") } atomicstore(&forcegc.idle, 1) - goparkunlock(&forcegc.lock, "force gc (idle)") + goparkunlock(&forcegc.lock, "force gc (idle)", traceEvGoBlock) // this goroutine is explicitly resumed by sysmon if debug.gctrace > 0 { println("GC forced") @@ -136,7 +136,7 @@ func Gosched() { // Puts the current goroutine into a waiting state and calls unlockf. // If unlockf returns false, the goroutine is resumed. -func gopark(unlockf func(*g, unsafe.Pointer) bool, lock unsafe.Pointer, reason string) { +func gopark(unlockf func(*g, unsafe.Pointer) bool, lock unsafe.Pointer, reason string, traceEv byte) { mp := acquirem() gp := mp.curg status := readgstatus(gp) @@ -146,6 +146,7 @@ func gopark(unlockf func(*g, unsafe.Pointer) bool, lock unsafe.Pointer, reason s mp.waitlock = lock mp.waitunlockf = *(*unsafe.Pointer)(unsafe.Pointer(&unlockf)) gp.waitreason = reason + mp.waittraceev = traceEv releasem(mp) // can't do anything that might move the G between Ms here. mcall(park_m) @@ -153,8 +154,8 @@ func gopark(unlockf func(*g, unsafe.Pointer) bool, lock unsafe.Pointer, reason s // Puts the current goroutine into a waiting state and unlocks the lock. // The goroutine can be made runnable again by calling goready(gp). -func goparkunlock(lock *mutex, reason string) { - gopark(parkunlock_c, unsafe.Pointer(lock), reason) +func goparkunlock(lock *mutex, reason string, traceEv byte) { + gopark(parkunlock_c, unsafe.Pointer(lock), reason, traceEv) } func goready(gp *g) { |
