Skip to content

Commit

Permalink
runtime: add edge lockRankSysmon -> lockRankRwmutexR
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Michael Knyszek <[email protected]>
  • Loading branch information
danscales committed Oct 28, 2020
1 parent b85c2dd commit a69cda9
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion src/runtime/lockrank.go
Original file line number Diff line number Diff line change
Expand Up @@ -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},
Expand Down

0 comments on commit a69cda9

Please sign in to comment.