From 7ea40f6594ada6631b3fd153c87916c51628a7e2 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 15 Apr 2020 15:39:53 -0700 Subject: runtime: use mcache0 if no P in profilealloc A case that I missed in CL 205239: profilealloc can be called at program startup if GOMAXPROCS is large enough. Fixes #38474 Change-Id: I2f089fc6ec00c376680e1c0b8a2557b62789dd7f Reviewed-on: https://go-review.googlesource.com/c/go/+/228420 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Michael Pratt --- src/runtime/malloc.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/runtime/malloc.go') diff --git a/src/runtime/malloc.go b/src/runtime/malloc.go index 5a0d85f645..e1ec5e6496 100644 --- a/src/runtime/malloc.go +++ b/src/runtime/malloc.go @@ -1207,7 +1207,16 @@ func reflect_unsafe_NewArray(typ *_type, n int) unsafe.Pointer { } func profilealloc(mp *m, x unsafe.Pointer, size uintptr) { - mp.p.ptr().mcache.next_sample = nextSample() + var c *mcache + if mp.p != 0 { + c = mp.p.ptr().mcache + } else { + c = mcache0 + if c == nil { + throw("profilealloc called with no P") + } + } + c.next_sample = nextSample() mProf_Malloc(x, size) } -- cgit v1.3-5-g9baa