Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd/go: "fatal error: concurrent map writes" during go get #35317

Closed
zikaeroh opened this issue Nov 2, 2019 · 8 comments
Closed

cmd/go: "fatal error: concurrent map writes" during go get #35317

zikaeroh opened this issue Nov 2, 2019 · 8 comments
Assignees
Milestone

Comments

@zikaeroh
Copy link

@zikaeroh zikaeroh commented Nov 2, 2019

What version of Go are you using (go version)?

$ go version
go version go1.13.4 linux/amd64

Does this issue reproduce with the latest release?

1.13.4, yes.

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/jake/.cache/go-build"
GOENV="/home/jake/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/jake/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/lib/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/jake/zikaeroh/hortbot/hortbot/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build914153731=/tmp/go-build -gno-record-gcc-switches"
GOROOT/bin/go version: go version go1.13.4 linux/amd64
GOROOT/bin/go tool compile -V: compile version go1.13.4
uname -sr: Linux 4.19.81-1-lts
/usr/lib/libc.so.6: GNU C Library (GNU libc) stable release version 2.30.
lldb --version: lldb version 9.0.0
gdb --version: GNU gdb (GDB) 8.3.1

What did you do?

Was using go get to update some dependencies, normally. It was essentially go get -d -t <a bunch of stuff with @upgrade>.

What did you expect to see?

No panics.

What did you see instead?

From go get:

fatal error: concurrent map writes

goroutine 478 [running]:
runtime.throw(0xa44e1d, 0x15)
	/usr/lib/go/src/runtime/panic.go:774 +0x72 fp=0xc000417f08 sp=0xc000417ed8 pc=0x42f9f2
runtime.mapassign_faststr(0x9927c0, 0xc00049cf00, 0xc0001f8f40, 0x11, 0xc0001a2000)
	/usr/lib/go/src/runtime/map_faststr.go:211 +0x417 fp=0xc000417f70 sp=0xc000417f08 pc=0x414c27
cmd/go/internal/modget.runGet.func1(0xc00049cf00, 0xc0004c8540, 0xc0000bc900)
	/usr/lib/go/src/cmd/go/internal/modget/get.go:467 +0x10d fp=0xc000417fc8 sp=0xc000417f70 pc=0x901fcd
runtime.goexit()
	/usr/lib/go/src/runtime/asm_amd64.s:1357 +0x1 fp=0xc000417fd0 sp=0xc000417fc8 pc=0x45c861
created by cmd/go/internal/modget.runGet
	/usr/lib/go/src/cmd/go/internal/modget/get.go:463 +0xddb

goroutine 1 [semacquire]:
sync.runtime_Semacquire(0xc0004c8548)
	/usr/lib/go/src/runtime/sema.go:56 +0x42
sync.(*WaitGroup).Wait(0xc0004c8540)
	/usr/lib/go/src/sync/waitgroup.go:130 +0x64
cmd/go/internal/modget.runGet(0xea2a60, 0xc000020440, 0x3a, 0x3c)
	/usr/lib/go/src/cmd/go/internal/modget/get.go:473 +0xe87
main.main()
	/usr/lib/go/src/cmd/go/main.go:189 +0x57f

goroutine 6 [syscall]:
os/signal.signal_recv(0x0)
	/usr/lib/go/src/runtime/sigqueue.go:147 +0x9c
os/signal.loop()
	/usr/lib/go/src/os/signal/signal_unix.go:23 +0x22
created by os/signal.init.0
	/usr/lib/go/src/os/signal/signal_unix.go:29 +0x41

goroutine 96 [runnable]:
internal/poll.runtime_pollWait(0x7fccf5b39df8, 0x72, 0xffffffffffffffff)
	/usr/lib/go/src/runtime/netpoll.go:184 +0x55
internal/poll.(*pollDesc).wait(0xc0002dc298, 0x72, 0x2000, 0x2083, 0xffffffffffffffff)
	/usr/lib/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
	/usr/lib/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc0002dc280, 0xc000014500, 0x2083, 0x2083, 0x0, 0x0, 0x0)
	/usr/lib/go/src/internal/poll/fd_unix.go:169 +0x1cf
net.(*netFD).Read(0xc0002dc280, 0xc000014500, 0x2083, 0x2083, 0x203000, 0x4385e8, 0xc00016e900)
	/usr/lib/go/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc000186088, 0xc000014500, 0x2083, 0x2083, 0x0, 0x0, 0x0)
	/usr/lib/go/src/net/net.go:184 +0x68
crypto/tls.(*atLeastReader).Read(0xc0004ce520, 0xc000014500, 0x2083, 0x2083, 0x27, 0x0, 0xc0002f7970)
	/usr/lib/go/src/crypto/tls/conn.go:780 +0x60
bytes.(*Buffer).ReadFrom(0xc000388258, 0xb27680, 0xc0004ce520, 0x40b9b5, 0x9a87c0, 0xa20d40)
	/usr/lib/go/src/bytes/buffer.go:204 +0xb4
crypto/tls.(*Conn).readFromUntil(0xc000388000, 0xb27b20, 0xc000186088, 0x5, 0xc000186088, 0x5)
	/usr/lib/go/src/crypto/tls/conn.go:802 +0xec
crypto/tls.(*Conn).readRecordOrCCS(0xc000388000, 0x0, 0x0, 0x0)
	/usr/lib/go/src/crypto/tls/conn.go:609 +0x124
crypto/tls.(*Conn).readRecord(...)
	/usr/lib/go/src/crypto/tls/conn.go:577
crypto/tls.(*Conn).Read(0xc000388000, 0xc00058f000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/lib/go/src/crypto/tls/conn.go:1255 +0x161
bufio.(*Reader).Read(0xc00006df80, 0xc00037ad58, 0x9, 0x9, 0x11, 0x0, 0x0)
	/usr/lib/go/src/bufio/bufio.go:226 +0x26a
io.ReadAtLeast(0xb27200, 0xc00006df80, 0xc00037ad58, 0x9, 0x9, 0x9, 0xc0002f7d20, 0xc0002f7df0, 0x73cb5a)
	/usr/lib/go/src/io/io.go:310 +0x87
io.ReadFull(...)
	/usr/lib/go/src/io/io.go:329
net/http.http2readFrameHeader(0xc00037ad58, 0x9, 0x9, 0xb27200, 0xc00006df80, 0x0, 0x0, 0x0, 0x0)
	/usr/lib/go/src/net/http/h2_bundle.go:1477 +0x87
net/http.(*http2Framer).ReadFrame(0xc00037ad20, 0xc0005ea320, 0x0, 0x0, 0x0)
	/usr/lib/go/src/net/http/h2_bundle.go:1735 +0xa1
net/http.(*http2clientConnReadLoop).run(0xc0002f7fb8, 0x1000000000001, 0xc000336050)
	/usr/lib/go/src/net/http/h2_bundle.go:8175 +0x8e
net/http.(*http2ClientConn).readLoop(0xc000078a80)
	/usr/lib/go/src/net/http/h2_bundle.go:8103 +0xa3
created by net/http.(*http2Transport).newClientConn
	/usr/lib/go/src/net/http/h2_bundle.go:7162 +0x62f

goroutine 371 [IO wait]:
internal/poll.runtime_pollWait(0x7fccf5b39b88, 0x72, 0xffffffffffffffff)
	/usr/lib/go/src/runtime/netpoll.go:184 +0x55
internal/poll.(*pollDesc).wait(0xc0004f4898, 0x72, 0x2000, 0x2083, 0xffffffffffffffff)
	/usr/lib/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
	/usr/lib/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc0004f4880, 0xc000016a00, 0x2083, 0x2083, 0x0, 0x0, 0x0)
	/usr/lib/go/src/internal/poll/fd_unix.go:169 +0x1cf
net.(*netFD).Read(0xc0004f4880, 0xc000016a00, 0x2083, 0x2083, 0x203000, 0x7fccf5b3b950, 0x46)
	/usr/lib/go/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc000186218, 0xc000016a00, 0x2083, 0x2083, 0x0, 0x0, 0x0)
	/usr/lib/go/src/net/net.go:184 +0x68
crypto/tls.(*atLeastReader).Read(0xc0004ce8c0, 0xc000016a00, 0x2083, 0x2083, 0x2000, 0x400, 0xc000360970)
	/usr/lib/go/src/crypto/tls/conn.go:780 +0x60
bytes.(*Buffer).ReadFrom(0xc000388958, 0xb27680, 0xc0004ce8c0, 0x40b9b5, 0x9a87c0, 0xa20d40)
	/usr/lib/go/src/bytes/buffer.go:204 +0xb4
crypto/tls.(*Conn).readFromUntil(0xc000388700, 0xb27b20, 0xc000186218, 0x5, 0xc000186218, 0x203000)
	/usr/lib/go/src/crypto/tls/conn.go:802 +0xec
crypto/tls.(*Conn).readRecordOrCCS(0xc000388700, 0x0, 0x0, 0xc0004ce720)
	/usr/lib/go/src/crypto/tls/conn.go:609 +0x124
crypto/tls.(*Conn).readRecord(...)
	/usr/lib/go/src/crypto/tls/conn.go:577
crypto/tls.(*Conn).Read(0xc000388700, 0xc0005d3000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/usr/lib/go/src/crypto/tls/conn.go:1255 +0x161
bufio.(*Reader).Read(0xc00043ab40, 0xc00053a3b8, 0x9, 0x9, 0xc000360d10, 0x0, 0x73b922)
	/usr/lib/go/src/bufio/bufio.go:226 +0x26a
io.ReadAtLeast(0xb27200, 0xc00043ab40, 0xc00053a3b8, 0x9, 0x9, 0x9, 0xc000056060, 0x0, 0xb278e0)
	/usr/lib/go/src/io/io.go:310 +0x87
io.ReadFull(...)
	/usr/lib/go/src/io/io.go:329
net/http.http2readFrameHeader(0xc00053a3b8, 0x9, 0x9, 0xb27200, 0xc00043ab40, 0x0, 0x0, 0xc0004488a0, 0x0)
	/usr/lib/go/src/net/http/h2_bundle.go:1477 +0x87
net/http.(*http2Framer).ReadFrame(0xc00053a380, 0xc0004488a0, 0x0, 0x0, 0x0)
	/usr/lib/go/src/net/http/h2_bundle.go:1735 +0xa1
net/http.(*http2clientConnReadLoop).run(0xc000360fb8, 0x1000000000001, 0x0)
	/usr/lib/go/src/net/http/h2_bundle.go:8175 +0x8e
net/http.(*http2ClientConn).readLoop(0xc00047ed80)
	/usr/lib/go/src/net/http/h2_bundle.go:8103 +0xa3
created by net/http.(*http2Transport).newClientConn
	/usr/lib/go/src/net/http/h2_bundle.go:7162 +0x62f

goroutine 469 [select]:
net/http.(*http2ClientConn).roundTrip(0xc000078a80, 0xc0005ec300, 0x0, 0x0, 0x0, 0x0)
	/usr/lib/go/src/net/http/h2_bundle.go:7573 +0x9a0
net/http.(*http2Transport).RoundTripOpt(0xc0001a28a0, 0xc0005ec300, 0xc00034ac00, 0x7442a5, 0x0, 0xc00018a240)
	/usr/lib/go/src/net/http/h2_bundle.go:6936 +0x172
net/http.(*http2Transport).RoundTrip(...)
	/usr/lib/go/src/net/http/h2_bundle.go:6897
net/http.http2noDialH2RoundTripper.RoundTrip(0xc0001a28a0, 0xc0005ec300, 0xc0004aa940, 0x5, 0xc00018a2c8)
	/usr/lib/go/src/net/http/h2_bundle.go:9032 +0x3e
net/http.(*Transport).roundTrip(0xea4360, 0xc0005ec300, 0x0, 0xc00034af10, 0x40e248)
	/usr/lib/go/src/net/http/transport.go:485 +0xdc1
net/http.(*Transport).RoundTrip(0xea4360, 0xc0005ec300, 0xea4360, 0x0, 0x0)
	/usr/lib/go/src/net/http/roundtrip.go:17 +0x35
net/http.send(0xc0005ec300, 0xb27ba0, 0xea4360, 0x0, 0x0, 0x0, 0xc000010408, 0x203000, 0x1, 0x0)
	/usr/lib/go/src/net/http/client.go:250 +0x443
net/http.(*Client).send(0xe9baa0, 0xc0005ec300, 0x0, 0x0, 0x0, 0xc000010408, 0x0, 0x1, 0xa2b640)
	/usr/lib/go/src/net/http/client.go:174 +0xfa
net/http.(*Client).do(0xe9baa0, 0xc0005ec300, 0x0, 0x0, 0x0)
	/usr/lib/go/src/net/http/client.go:641 +0x3ce
net/http.(*Client).Do(...)
	/usr/lib/go/src/net/http/client.go:509
cmd/go/internal/web.get.func1(0xc0000bc480, 0xc0000bc480, 0x0, 0x0, 0x44541c)
	/usr/lib/go/src/cmd/go/internal/web/http.go:96 +0x122
cmd/go/internal/web.get(0x1, 0xc000615548, 0x2, 0xc00025ed20, 0x25)
	/usr/lib/go/src/cmd/go/internal/web/http.go:111 +0x1aa
cmd/go/internal/web.Get(...)
	/usr/lib/go/src/cmd/go/internal/web/api.go:100
cmd/go/internal/modfetch.(*proxyRepo).getBody(0xc0001d3280, 0xc0001b4fc0, 0xd, 0xc000027140, 0x6, 0xa3ad71, 0x4)
	/usr/lib/go/src/cmd/go/internal/modfetch/proxy.go:235 +0x17d
cmd/go/internal/modfetch.(*proxyRepo).Zip(0xc0001d3280, 0xb27e00, 0xc0000103e8, 0xc000027140, 0x6, 0x0, 0x0)
	/usr/lib/go/src/cmd/go/internal/modfetch/proxy.go:385 +0x1d0
cmd/go/internal/modfetch.(*cachingRepo).Zip(0xc0003032c0, 0xb27e00, 0xc0000103e8, 0xc000027140, 0x6, 0xc0003032c0, 0x0)
	/usr/lib/go/src/cmd/go/internal/modfetch/cache.go:248 +0x5c
cmd/go/internal/modfetch.downloadZip.func2(0xa4b98e, 0x18, 0x2, 0x0)
	/usr/lib/go/src/cmd/go/internal/modfetch/fetch.go:213 +0xbd
cmd/go/internal/modfetch.TryProxies(0xc000615918, 0x3e, 0xc00036ce9f)
	/usr/lib/go/src/cmd/go/internal/modfetch/proxy.go:154 +0x84
cmd/go/internal/modfetch.downloadZip(0xc0001f8ea0, 0x16, 0xc000027140, 0x6, 0xc00036ca50, 0x49, 0x0, 0x0)
	/usr/lib/go/src/cmd/go/internal/modfetch/fetch.go:208 +0x2c7
cmd/go/internal/modfetch.DownloadZip.func1(0x0, 0x0)
	/usr/lib/go/src/cmd/go/internal/modfetch/fetch.go:172 +0x2df
cmd/go/internal/par.(*Cache).Do(0xeacde0, 0x9c2e40, 0xc0004bac00, 0xc000414b00, 0xb289e0, 0xe5e640)
	/usr/lib/go/src/cmd/go/internal/par/work.go:128 +0xec
cmd/go/internal/modfetch.DownloadZip(0xc0001f8ea0, 0x16, 0xc000027140, 0x6, 0xb27e60, 0xc0002108d0, 0x1d, 0x0)
	/usr/lib/go/src/cmd/go/internal/modfetch/fetch.go:143 +0xd3
cmd/go/internal/modfetch.download(0xc0001f8ea0, 0x16, 0xc000027140, 0x6, 0xc0004aa640, 0x33, 0xb27e60, 0xc0002108d0)
	/usr/lib/go/src/cmd/go/internal/modfetch/fetch.go:67 +0xca
cmd/go/internal/modfetch.Download.func1(0xeacda0, 0x9c2e40)
	/usr/lib/go/src/cmd/go/internal/modfetch/fetch.go:48 +0xa2
cmd/go/internal/par.(*Cache).Do(0xeacda0, 0x9c2e40, 0xc0004babc0, 0xc000414e58, 0x0, 0x0)
	/usr/lib/go/src/cmd/go/internal/par/work.go:128 +0xec
cmd/go/internal/modfetch.Download(0xc0001f8ea0, 0x16, 0xc000027140, 0x6, 0x0, 0x0, 0x0, 0x0)
	/usr/lib/go/src/cmd/go/internal/modfetch/fetch.go:43 +0xef
cmd/go/internal/modload.fetch(0xc0001f8ea0, 0x16, 0xc000027140, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0)
	/usr/lib/go/src/cmd/go/internal/modload/load.go:1228 +0xcf
cmd/go/internal/modload.ModuleHasRootPackage(0xc0001f8ea0, 0x16, 0xc000027140, 0x6, 0x0, 0x0, 0x0)
	/usr/lib/go/src/cmd/go/internal/modload/query.go:570 +0x4d
cmd/go/internal/modget.runGet.func1(0xc00049cf00, 0xc0004c8540, 0xc0000bc300)
	/usr/lib/go/src/cmd/go/internal/modget/get.go:464 +0x4e
created by cmd/go/internal/modget.runGet
	/usr/lib/go/src/cmd/go/internal/modget/get.go:463 +0xddb

goroutine 472 [semacquire]:
sync.runtime_SemacquireMutex(0xeacda4, 0xce500900, 0x1)
	/usr/lib/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0xeacda0)
	/usr/lib/go/src/sync/mutex.go:138 +0xfc
sync.(*Mutex).Lock(...)
	/usr/lib/go/src/sync/mutex.go:81
sync.(*Map).LoadOrStore(0xeacda0, 0x9c2e40, 0xc0004cf040, 0x95a7c0, 0xc0004baf80, 0x9c2e00, 0xc0004cf040, 0xc000440638)
	/usr/lib/go/src/sync/map.go:209 +0x5fd
cmd/go/internal/par.(*Cache).Do(0xeacda0, 0x9c2e40, 0xc0004cf040, 0xc000413e58, 0x23e0e62a09255e2b, 0x62f317eefedc8395)
	/usr/lib/go/src/cmd/go/internal/par/work.go:122 +0x18a
cmd/go/internal/modfetch.Download(0xc0001d58c0, 0x1c, 0xc0003ec980, 0x13, 0x0, 0x0, 0x0, 0x0)
	/usr/lib/go/src/cmd/go/internal/modfetch/fetch.go:43 +0xef
cmd/go/internal/modload.fetch(0xc0001d58c0, 0x1c, 0xc0003ec980, 0x13, 0xe398b30ccff0274c, 0x6300fb97aeeb7a24, 0xb4edfa73991f9f40, 0xcd0294435e0d80a0, 0x35ca52f8940d82b8)
	/usr/lib/go/src/cmd/go/internal/modload/load.go:1228 +0xcf
cmd/go/internal/modload.ModuleHasRootPackage(0xc0001d58c0, 0x1c, 0xc0003ec980, 0x13, 0x91dfb9bee25cbfe6, 0x675f36db8a7a9868, 0x48edfa7d88a397ba)
	/usr/lib/go/src/cmd/go/internal/modload/query.go:570 +0x4d
cmd/go/internal/modget.runGet.func1(0xc00049cf00, 0xc0004c8540, 0xc0000bc580)
	/usr/lib/go/src/cmd/go/internal/modget/get.go:464 +0x4e
created by cmd/go/internal/modget.runGet
	/usr/lib/go/src/cmd/go/internal/modget/get.go:463 +0xddb

goroutine 473 [runnable]:
syscall.Syscall(0x0, 0x7, 0xc0005a78c0, 0x22f, 0x2f, 0x22f, 0x0)
	/usr/lib/go/src/syscall/asm_linux_amd64.s:18 +0x5
syscall.read(0x7, 0xc0005a78c0, 0x22f, 0x22f, 0x0, 0xc0005a78c0, 0xc000414a00)
	/usr/lib/go/src/syscall/zsyscall_linux_amd64.go:732 +0x5a
syscall.Read(...)
	/usr/lib/go/src/syscall/syscall_unix.go:183
internal/poll.(*FD).Read(0xc00043a9c0, 0xc0005a78c0, 0x22f, 0x22f, 0x0, 0x0, 0x0)
	/usr/lib/go/src/internal/poll/fd_unix.go:165 +0x164
os.(*File).read(...)
	/usr/lib/go/src/os/file_unix.go:259
os.(*File).Read(0xc000010500, 0xc0005a78c0, 0x22f, 0x22f, 0xc0005a78c0, 0x0, 0x0)
	/usr/lib/go/src/os/file.go:116 +0x71
bytes.(*Buffer).ReadFrom(0xc000414b00, 0xb27dc0, 0xc000010500, 0xc000414ae0, 0x4d40d9, 0xc0002bc850)
	/usr/lib/go/src/bytes/buffer.go:204 +0xb4
io/ioutil.readAll(0xb27dc0, 0xc000010500, 0x22f, 0x0, 0x0, 0x0, 0x0, 0x0)
	/usr/lib/go/src/io/ioutil/ioutil.go:36 +0x100
io/ioutil.ReadFile(0xc0002bc850, 0x65, 0x0, 0x0, 0x0, 0x0, 0x0)
	/usr/lib/go/src/io/ioutil/ioutil.go:73 +0x117
cmd/go/internal/robustio.readFile(...)
	/usr/lib/go/src/cmd/go/internal/robustio/robustio_other.go:19
cmd/go/internal/robustio.ReadFile(0xc0002bc850, 0x65, 0xc0005c4d80, 0x13, 0xa3ca2b, 0x7, 0xc0002bc850)
	/usr/lib/go/src/cmd/go/internal/robustio/robustio.go:30 +0x35
cmd/go/internal/renameio.ReadFile(...)
	/usr/lib/go/src/cmd/go/internal/renameio/renameio.go:79
cmd/go/internal/modfetch.checkMod(0xc0001d58f0, 0x21, 0xc0005c4d80, 0x13)
	/usr/lib/go/src/cmd/go/internal/modfetch/fetch.go:366 +0xb6
cmd/go/internal/modfetch.Download.func1(0xeacda0, 0x9c2e40)
	/usr/lib/go/src/cmd/go/internal/modfetch/fetch.go:51 +0x145
cmd/go/internal/par.(*Cache).Do(0xeacda0, 0x9c2e40, 0xc0004c67c0, 0xc000414e58, 0x432612236de77b3a, 0xf420549aff6d8ca2)
	/usr/lib/go/src/cmd/go/internal/par/work.go:128 +0xec
cmd/go/internal/modfetch.Download(0xc0001d58f0, 0x21, 0xc0005c4d80, 0x13, 0x0, 0x0, 0x0, 0x0)
	/usr/lib/go/src/cmd/go/internal/modfetch/fetch.go:43 +0xef
cmd/go/internal/modload.fetch(0xc0001d58f0, 0x21, 0xc0005c4d80, 0x13, 0x100ba01138495c8d, 0x95dc25924c549220, 0xdbc9cb8dbb8577a6, 0x78a097da6aa3aeda, 0xe5776f81ac52a618)
	/usr/lib/go/src/cmd/go/internal/modload/load.go:1228 +0xcf
cmd/go/internal/modload.ModuleHasRootPackage(0xc0001d58f0, 0x21, 0xc0005c4d80, 0x13, 0x62daae46c2dc60d, 0x54e4fe36c580ada4, 0xdb8c4ef6fbd967ab)
	/usr/lib/go/src/cmd/go/internal/modload/query.go:570 +0x4d
cmd/go/internal/modget.runGet.func1(0xc00049cf00, 0xc0004c8540, 0xc0000bc600)
	/usr/lib/go/src/cmd/go/internal/modget/get.go:464 +0x4e
created by cmd/go/internal/modget.runGet
	/usr/lib/go/src/cmd/go/internal/modget/get.go:463 +0xddb

goroutine 480 [runnable]:
sync.(*Map).LoadOrStore(0xeacda0, 0x9c2e40, 0xc0004c67e0, 0x95a7c0, 0xc0004baf60, 0x9c2e00, 0xc0004c67e0, 0xc00043c638)
	/usr/lib/go/src/sync/map.go:226 +0x46d
cmd/go/internal/par.(*Cache).Do(0xeacda0, 0x9c2e40, 0xc0004c67e0, 0xc000361e58, 0xc9bde055f7de3cd3, 0x8e303947471f8731)
	/usr/lib/go/src/cmd/go/internal/par/work.go:122 +0x18a
cmd/go/internal/modfetch.Download(0xc0001f8f80, 0xf, 0xc00030c878, 0x6, 0x0, 0x0, 0x0, 0x0)
	/usr/lib/go/src/cmd/go/internal/modfetch/fetch.go:43 +0xef
cmd/go/internal/modload.fetch(0xc0001f8f80, 0xf, 0xc00030c878, 0x6, 0x92ce9a864de3d525, 0xb3959e7d086f9f2d, 0xbb17a3b5d9a396fb, 0x13108eb8066e48da, 0xd1d8353ee6fad0e)
	/usr/lib/go/src/cmd/go/internal/modload/load.go:1228 +0xcf
cmd/go/internal/modload.ModuleHasRootPackage(0xc0001f8f80, 0xf, 0xc00030c878, 0x6, 0x5322725e6d3a400d, 0xddc3b6e6da44777a, 0x8d7ef9dce3428be1)
	/usr/lib/go/src/cmd/go/internal/modload/query.go:570 +0x4d
cmd/go/internal/modget.runGet.func1(0xc00049cf00, 0xc0004c8540, 0xc0000bca00)
	/usr/lib/go/src/cmd/go/internal/modget/get.go:464 +0x4e
created by cmd/go/internal/modget.runGet
	/usr/lib/go/src/cmd/go/internal/modget/get.go:463 +0xddb

Forgive me, I don't yet have a reliable repro; I just saw this panic when going about my day after the most recent point release.

@smasher164

This comment has been minimized.

Copy link
Member

@smasher164 smasher164 commented Nov 3, 2019

@bcmills

This comment has been minimized.

Copy link
Member

@bcmills bcmills commented Nov 3, 2019

Yep, there is definitely a race there. Thanks for the report.

@bcmills

This comment has been minimized.

Copy link
Member

@bcmills bcmills commented Nov 3, 2019

@gopherbot, please backport to 1.13: this is a regression and a data race.

@gopherbot

This comment has been minimized.

Copy link

@gopherbot gopherbot commented Nov 3, 2019

Backport issue(s) opened: #35318 (for 1.13).

Remember to create the cherry-pick CL(s) as soon as the patch is submitted to master, according to https://golang.org/wiki/MinorReleases.

@gopherbot

This comment has been minimized.

Copy link

@gopherbot gopherbot commented Nov 4, 2019

Change https://golang.org/cl/205067 mentions this issue: cmd/go/internal/modget: synchronize writes to modOnly map in runGet

@gopherbot gopherbot closed this in 7e71c9c Nov 5, 2019
@gopherbot

This comment has been minimized.

Copy link

@gopherbot gopherbot commented Nov 5, 2019

Change https://golang.org/cl/205517 mentions this issue: [release-branch.go1.13] cmd/go/internal/modget: synchronize writes to modOnly map in runGet

gopherbot pushed a commit that referenced this issue Nov 26, 2019
… modOnly map in runGet

Updates #35317
Fixes #35318

Change-Id: Id858a25dc16a1bbff1802d25bcd4aca31c1133bc
Reviewed-on: https://go-review.googlesource.com/c/go/+/205067
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
(cherry picked from commit 7e71c9c)
Reviewed-on: https://go-review.googlesource.com/c/go/+/205517
@gopherbot

This comment has been minimized.

Copy link

@gopherbot gopherbot commented Nov 27, 2019

Change https://golang.org/cl/209237 mentions this issue: cmd/go/internal/modget: synchronize writes to modOnly map in runGet

gopherbot pushed a commit that referenced this issue Nov 27, 2019
Adds an additional lock around an access to modOnly.

Updates #35317

Change-Id: Ia1e75f9a674ec2a2c0489b41283c1cd3e7924d1e
Reviewed-on: https://go-review.googlesource.com/c/go/+/209237
Run-TryBot: Jay Conrod <jayconrod@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
@gopherbot

This comment has been minimized.

Copy link

@gopherbot gopherbot commented Nov 27, 2019

Change https://golang.org/cl/209222 mentions this issue: [release-branch.go1.13] cmd/go/internal/modget: synchronize writes to modOnly map in runGet

gopherbot pushed a commit that referenced this issue Dec 3, 2019
… modOnly map in runGet

Adds an additional lock around an access to modOnly.

Updates #35317
Fixes #35318

Change-Id: Ia1e75f9a674ec2a2c0489b41283c1cd3e7924d1e
Reviewed-on: https://go-review.googlesource.com/c/go/+/209237
Run-TryBot: Jay Conrod <jayconrod@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
(cherry picked from commit 9174e2c)
Reviewed-on: https://go-review.googlesource.com/c/go/+/209222
Run-TryBot: Alexander Rakoczy <alex@golang.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants
You can’t perform that action at this time.