diff options
Diffstat (limited to 'src/runtime/proc.go')
| -rw-r--r-- | src/runtime/proc.go | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/runtime/proc.go b/src/runtime/proc.go index a112c1b80c..9a7bd941db 100644 --- a/src/runtime/proc.go +++ b/src/runtime/proc.go @@ -1917,6 +1917,7 @@ func oneNewExtraM() { casgstatus(gp, _Gidle, _Gdead) gp.m = mp mp.curg = gp + mp.isextra = true mp.lockedInt++ mp.lockedg.set(gp) gp.lockedm.set(mp) @@ -1924,6 +1925,14 @@ func oneNewExtraM() { if raceenabled { gp.racectx = racegostart(abi.FuncPCABIInternal(newextram) + sys.PCQuantum) } + if trace.enabled { + // trigger two trace events for the locked g in the extra m, + // since the next event of the g will be traceEvGoSysExit in exitsyscall, + // while calling from C thread to Go. + traceGoCreate(gp, 0) // no start pc + gp.traceseq++ + traceEvent(traceEvGoInSyscall, -1, gp.goid) + } // put on allg for garbage collector allgadd(gp) |
