diff options
author | Michael Pratt <mpratt@google.com> | 2020-04-17 15:36:13 -0400 |
---|---|---|
committer | Michael Pratt <mpratt@google.com> | 2020-04-21 20:22:06 +0000 |
commit | 300ff5d8ac12a5515234e68aa8a03637ba181937 (patch) | |
tree | c7193db3b4ce186ef559db21cf624a330909d4ed /src/runtime/lockrank.go | |
parent | e464d7d7970be972a17a98c7ad996c2db4a04997 (diff) | |
download | go-300ff5d8ac12a5515234e68aa8a03637ba181937.tar.gz go-300ff5d8ac12a5515234e68aa8a03637ba181937.zip |
runtime: allow proflock and mheap.speciallock above globalAlloc.mutex
During schedinit, these may occur in:
mProf_Malloc
stkbucket
newBucket
persistentalloc
persistentalloc1
mProf_Malloc
setprofilebucket
fixalloc.alloc
persistentalloc
persistentalloc1
These seem to be legitimate lock orderings.
Additionally, mheap.speciallock had a defined rank, but it was never
actually used. That is fixed now.
Updates #38474
Change-Id: I0f6e981852eac66dafb72159f426476509620a65
Reviewed-on: https://go-review.googlesource.com/c/go/+/228786
Run-TryBot: Michael Pratt <mpratt@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dan Scales <danscales@google.com>
Diffstat (limited to 'src/runtime/lockrank.go')
-rw-r--r-- | src/runtime/lockrank.go | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/runtime/lockrank.go b/src/runtime/lockrank.go index 784f4236f4..d96369b1a5 100644 --- a/src/runtime/lockrank.go +++ b/src/runtime/lockrank.go @@ -76,9 +76,9 @@ const ( // Memory-related non-leaf locks lockRankWbufSpans lockRankMheap + lockRankMheapSpecial // Memory-related leaf locks - lockRankMheapSpecial lockRankGlobalAlloc // Other leaf locks @@ -144,11 +144,11 @@ var lockNames = []string{ lockRankDefer: "defer", lockRankSudog: "sudog", - lockRankWbufSpans: "wbufSpans", - lockRankMheap: "mheap", - + lockRankWbufSpans: "wbufSpans", + lockRankMheap: "mheap", lockRankMheapSpecial: "mheapSpecial", - lockRankGlobalAlloc: "globalAlloc.mutex", + + lockRankGlobalAlloc: "globalAlloc.mutex", lockRankGFree: "gFree", @@ -221,7 +221,7 @@ var lockPartialOrder [][]lockRank = [][]lockRank{ lockRankWbufSpans: {lockRankScavenge, lockRankSweepWaiters, lockRankAssistQueue, lockRankSweep, lockRankSched, lockRankAllg, lockRankPollDesc, lockRankTimers, lockRankItab, lockRankReflectOffs, lockRankHchan, lockRankNotifyList, lockRankTraceStrings, lockRankMspanSpecial, lockRankProf, lockRankRoot, lockRankDefer, lockRankSudog}, lockRankMheap: {lockRankScavenge, lockRankSweepWaiters, lockRankAssistQueue, lockRankCpuprof, lockRankSweep, lockRankSched, lockRankAllg, lockRankAllp, lockRankPollDesc, lockRankTimers, lockRankItab, lockRankReflectOffs, lockRankNotifyList, lockRankTraceBuf, lockRankTraceStrings, lockRankHchan, lockRankMspanSpecial, lockRankProf, lockRankGcBitsArenas, lockRankRoot, lockRankMcentral, lockRankStackpool, lockRankStackLarge, lockRankDefer, lockRankSudog, lockRankWbufSpans}, lockRankMheapSpecial: {lockRankScavenge, lockRankCpuprof, lockRankSched, lockRankAllg, lockRankAllp, lockRankTimers, lockRankItab, lockRankReflectOffs, lockRankNotifyList, lockRankTraceBuf, lockRankTraceStrings, lockRankHchan}, - lockRankGlobalAlloc: {lockRankSpine, lockRankMheap}, + lockRankGlobalAlloc: {lockRankProf, lockRankSpine, lockRankMheap, lockRankMheapSpecial}, lockRankGFree: {lockRankSched}, |