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 · 12 comments
Closed

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

zikaeroh opened this issue Nov 2, 2019 · 12 comments
Labels
NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. release-blocker
Milestone

Comments

@zikaeroh
Copy link
Contributor

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 smasher164 added the NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. label Nov 3, 2019
@smasher164
Copy link
Member

/cc @bcmills @jayconrod

@bcmills
Copy link
Contributor

bcmills commented Nov 3, 2019

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

@bcmills bcmills added the NeedsFix The path to resolution is known, but the work has not been done. label Nov 3, 2019
@gopherbot gopherbot removed the NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. label Nov 3, 2019
@bcmills bcmills added NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. release-blocker labels Nov 3, 2019
@bcmills bcmills added this to the Go1.14 milestone Nov 3, 2019
@gopherbot gopherbot removed the NeedsFix The path to resolution is known, but the work has not been done. label Nov 3, 2019
@bcmills
Copy link
Contributor

bcmills commented Nov 3, 2019

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

@gopherbot
Copy link

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
Copy link

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

@gopherbot
Copy link

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
Copy link

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
Copy link

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>
@sakshi-bansal
Copy link

Facing a similar issue while running Telegraf.

Telegraf version: 1.13.4
Go Version: 1.13.8

Error:
fatal error: concurrent map writes
fatal error: concurrent map writes

goroutine 3184 [running]:
runtime.throw(0x27d9597, 0x15)
/usr/local/go/src/runtime/panic.go:774 +0x72 fp=0xc00053dc90 sp=0xc00053dc60 pc=0x4313e2
runtime.mapassign_faststr(0x22108a0, 0xc0001035c0, 0x27ac8f4, 0x6, 0xc00002a748)
/usr/local/go/src/runtime/map_faststr.go:291 +0x3fe fp=0xc00053dcf8 sp=0xc00053dc90 pc=0x4152de
github.com/influxdata/telegraf/plugins/inputs/ntpq.(*NTPQ).Gather(0xc00054b450, 0x2ca8f00, 0xc0003e4200, 0x34, 0x0)
/go/src/github.com/influxdata/telegraf/plugins/inputs/ntpq/ntpq.go:104 +0x1244 fp=0xc00053df18 sp=0xc00053dcf8 pc=0x162e9f4
github.com/influxdata/telegraf/internal/models.(*RunningInput).Gather(0xc000362c80, 0x2ca8f00, 0xc0003e4200, 0x97d1000, 0x0)
/go/src/github.com/influxdata/telegraf/internal/models/running_input.go:115 +0x6d fp=0xc00053df78 sp=0xc00053df18 pc=0x7e69ad
github.com/influxdata/telegraf/agent.(*Agent).gatherOnce.func1(0xc000434240, 0xc000362c80, 0x2ca8f00, 0xc0003e4200)
/go/src/github.com/influxdata/telegraf/agent/agent.go:336 +0x3f fp=0xc00053dfc0 sp=0xc00053df78 pc=0x98e90f
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1357 +0x1 fp=0xc00053dfc8 sp=0xc00053dfc0 pc=0x4615c1
created by github.com/influxdata/telegraf/agent.(*Agent).gatherOnce

@bcmills
Copy link
Contributor

bcmills commented Mar 3, 2020

@sakshi-bansal, this issue is about a concurrent write within the go tool itself. The failure you observe is in some program built by the go tool.

The general solution to these sorts of issues is to build the program using the race detector and then run it and fix the reported races.

@phpstudyer
Copy link

go version go1.14 darwin/amd64 also found this error, only run sync.Map Store() func

@davecheney
Copy link
Contributor

@phpstudyer please open a new issue. Thank you.

@golang golang locked as resolved and limited conversation to collaborators Jun 10, 2020
@rsc rsc unassigned bcmills Jun 23, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. release-blocker
Projects
None yet
Development

No branches or pull requests

7 participants