-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
"fatal error: concurrent map read and map write" in buildkit builder docker image #2111
Comments
Looks like there is a bunch of trace missing from what you have pasted. Eg. where is |
Hello,
Our docker version is |
@erebe This looks like containerd/containerd#4855 . Original report is different. |
Indeed, I just found it by browsing other issues. Thanks for having looked at it :) |
We use buildx with kubernetes driver to build our images. Sometimes buildkit pods fail with the following error:
fatal error: concurrent map read and map write
Two interesting goroutines have the following stacktraces:
goroutine 4114488 [running]: runtime.throw(0x1300e9d, 0x21) /usr/local/go/src/runtime/panic.go:774 +0x72 fp=0xc001ff33d8 sp=0xc001ff33a8 pc=0x42f572 runtime.mapaccess1_faststr(0x10fb0e0, 0xc000c83c20, 0x12e9a38, 0xf, 0xc001ff34a8) /usr/local/go/src/runtime/map_faststr.go:21 +0x44f fp=0xc001ff3448 sp=0xc001ff33d8 pc=0x412d3f github.com/moby/buildkit/cache/metadata.(*StorageItem).Get(0xc000bcf130, 0x12e9a38, 0xf, 0xc0cb33) /src/cache/metadata/metadata.go:267 +0x63 fp=0xc001ff3488 sp=0xc001ff3448 pc=0xc0cb33 ...
goroutine 4115673 [runnable]: go.etcd.io/bbolt.(*node).root(0xc0002e33b0, 0x0) /src/vendor/go.etcd.io/bbolt/node.go:24 +0x5c go.etcd.io/bbolt.(*Bucket).spill(0xc002aea100, 0xc001a0c100, 0xc0022539e0) /src/vendor/go.etcd.io/bbolt/bucket.go:573 +0x497 go.etcd.io/bbolt.(*Bucket).spill(0xc002aea080, 0xc001a0c000, 0xc002253bd8) /src/vendor/go.etcd.io/bbolt/bucket.go:537 +0x3d5 go.etcd.io/bbolt.(*Bucket).spill(0xc0001f9898, 0x3baed82819d30, 0x1d19940) /src/vendor/go.etcd.io/bbolt/bucket.go:537 +0x3d5 go.etcd.io/bbolt.(*Tx).Commit(0xc0001f9880, 0x0, 0x0) /src/vendor/go.etcd.io/bbolt/tx.go:160 +0xec go.etcd.io/bbolt.(*DB).Update(0xc0004b4400, 0xc002253e18, 0x0, 0x0) /src/vendor/go.etcd.io/bbolt/db.go:701 +0x106 github.com/moby/buildkit/cache/metadata.(*Store).Update(0xc00000e0f8, 0xc0008d7f41, 0x19, 0xc002253e80, 0x0, 0x0) /src/cache/metadata/metadata.go:167 +0x76 github.com/moby/buildkit/cache/metadata.(*StorageItem).Update(...) /src/cache/metadata/metadata.go:250 github.com/moby/buildkit/cache.updateLastUsed(0xc000bcf130, 0xc000c83c01, 0xc002253f40) /src/cache/metadata.go:503 +0x185 ...
So it's clear that
si.SetValue
in the second goroutine is called without locking mutexThe text was updated successfully, but these errors were encountered: