aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/lockrank.go
diff options
context:
space:
mode:
authorMichael Pratt <mpratt@google.com>2020-04-17 15:36:13 -0400
committerMichael Pratt <mpratt@google.com>2020-04-21 20:22:06 +0000
commit300ff5d8ac12a5515234e68aa8a03637ba181937 (patch)
treec7193db3b4ce186ef559db21cf624a330909d4ed /src/runtime/lockrank.go
parente464d7d7970be972a17a98c7ad996c2db4a04997 (diff)
downloadgo-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.go12
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},