mirror of
https://github.com/golang/go
synced 2024-11-23 03:50:03 -07:00
cmd/compile: add edge from lock rank edge from forceGC to traceStackTab
This edge can happen when forcegchelper() calls goparkunlock(&forcegc.lock, ...) while holding the forcegc lock. goparkunlock() eventually calls park_m(). In park_m(), traceGoPark() (which leads to (*traceStackTable).put() and acquires the traceStackTab lock) can be called before the forcegc lock is released. Fixes #45774 Change-Id: If0fceab596712eb9ec0b9b47326778bc0ff80913 Reviewed-on: https://go-review.googlesource.com/c/go/+/316029 Run-TryBot: Dan Scales <danscales@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Michael Knyszek <mknyszek@google.com> Trust: Carlos Amedee <carlos@golang.org>
This commit is contained in:
parent
7b768d43d0
commit
d75fbac54d
@ -217,7 +217,7 @@ var lockPartialOrder [][]lockRank = [][]lockRank{
|
||||
lockRankGcBitsArenas: {lockRankSysmon, lockRankScavenge, lockRankAssistQueue, lockRankCpuprof, lockRankSched, lockRankAllg, lockRankTimers, lockRankItab, lockRankReflectOffs, lockRankHchan, lockRankNotifyList, lockRankTraceBuf, lockRankTraceStrings},
|
||||
lockRankRoot: {},
|
||||
lockRankTrace: {lockRankSysmon, lockRankScavenge, lockRankForcegc, lockRankAssistQueue, lockRankSweep, lockRankSched, lockRankHchan, lockRankTraceBuf, lockRankTraceStrings, lockRankRoot},
|
||||
lockRankTraceStackTab: {lockRankScavenge, lockRankSweepWaiters, lockRankAssistQueue, lockRankSweep, lockRankSched, lockRankAllg, lockRankTimers, lockRankHchan, lockRankFin, lockRankNotifyList, lockRankTraceBuf, lockRankTraceStrings, lockRankRoot, lockRankTrace},
|
||||
lockRankTraceStackTab: {lockRankScavenge, lockRankForcegc, lockRankSweepWaiters, lockRankAssistQueue, lockRankSweep, lockRankSched, lockRankAllg, lockRankTimers, lockRankHchan, lockRankFin, lockRankNotifyList, lockRankTraceBuf, lockRankTraceStrings, lockRankRoot, lockRankTrace},
|
||||
lockRankNetpollInit: {lockRankTimers},
|
||||
|
||||
lockRankRwmutexW: {},
|
||||
|
Loading…
Reference in New Issue
Block a user