mirror of https://github.com/golang/go.git
runtime: add edge lockRankSysmon -> lockRankRwmutexR
Sysmon can actually get the RW lock execLock while holding the sysmon lock (if no M is available), so there is an edge from lockRankSysmon to lockRankRwmutexR. The stack trace is sysmon() [gets sched.sysmonlock] -> startm() -> newm() -> newm1() -> execLock.runlock() [gets execLock.rLock] Change-Id: I9658659ba3899afb5219114d66b989abd50540db Reviewed-on: https://go-review.googlesource.com/c/go/+/265721 Trust: Dan Scales <danscales@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
parent
b85c2dd56c
commit
a69cda9a65
|
|
@ -222,7 +222,7 @@ var lockPartialOrder [][]lockRank = [][]lockRank{
|
|||
lockRankNetpollInit: {lockRankTimers},
|
||||
|
||||
lockRankRwmutexW: {},
|
||||
lockRankRwmutexR: {lockRankRwmutexW},
|
||||
lockRankRwmutexR: {lockRankSysmon, lockRankRwmutexW},
|
||||
|
||||
lockRankSpanSetSpine: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankAssistQueue, lockRankCpuprof, lockRankSweep, lockRankSched, lockRankAllg, lockRankAllp, lockRankTimers, lockRankItab, lockRankReflectOffs, lockRankNotifyList, lockRankTraceBuf, lockRankTraceStrings, lockRankHchan},
|
||||
lockRankGscan: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankCpuprof, lockRankSweep, lockRankSched, lockRankTimers, lockRankItab, lockRankReflectOffs, lockRankHchan, lockRankFin, lockRankTraceBuf, lockRankTraceStrings, lockRankRoot, lockRankNotifyList, lockRankProf, lockRankGcBitsArenas, lockRankTrace, lockRankTraceStackTab, lockRankNetpollInit, lockRankSpanSetSpine},
|
||||
|
|
|
|||
Loading…
Reference in New Issue