buildx
buildx copied to clipboard
monitor: breakpoint debugger on monitor and on IDEs (via DAP)
Related: #1104
Breakpoint debugger
This commit adds an interactive breakpoint debugger on monitor.
This adds a Solve controller API for requesting building a specific vertex.
Please see each commit's commit message for details.
Monitor walks the LLB graph with support for breakpoints and can exec into each step's container using Solve and Invoke API. Monitor provides DAP (Debug Adapter Protocol) so that IDE's debugger can use the breakpoints on their rich UI. DAP implementation is mostly inheited from buildg.
Debugger on the monitor
show command shows the source file with breakpoint information.
(buildx) show
Filename: "Dockerfile"
1| FROM busybox
2| RUN echo hi > /hi
3| RUN echo aaaa > /a
continue starts the build.
=> shows the position where the build is pausing.
(buildx) continue
...
Break at [stopOnEntry]
Filename: "Dockerfile"
=> 1| FROM busybox
2| RUN echo hi > /hi
3| RUN echo aaaa > /a
break command sets a breakpoint
The position of the breakpoint is shown by * on the show command output.
(buildx) break 3
(buildx) show
Filename: "Dockerfile"
=> 1| FROM busybox
2| RUN echo hi > /hi
* 3| RUN echo aaaa > /a
continue resumes the build and stops when it encounters a breakpoint.
C-a-c switches IO to the shell.
(buildx) Switched IO
/ # cat /a
aaaa
- Implemented commands
show: shows the Dockerfilebreak: set a breakpoint at the specified linebreakpoints: list key-value pairs of available breakpointsclear: clear the breakpoint specified by the keyclearall: clear all breakpointsnext: proceed to the next linecontinue: resume the build until the next breakpoint
Debugger on IDEs
monitor provides DAP (Debug Adapter Protocol) and allows controlling the monitor on IDEs. Editors can use buildx monitor via that standard protocol.
Please see docs/guides/breakpoints.md for details about configuration.
| VS Code | emacs | neovim |
|---|---|---|
![]() |
![]() |
![]() |
- VS Code
vscode-buildx-debuggerextension can be used https://github.com/ktock/vscode-buildx-debugger- I think this should also be part of buildx repo or maybe we can introduce a VS Code extension for buildx with support for other features as well?
- emacs
- dap-mode can be used.
- neovim
- nvim-dap can be used.
CI passed about the codes.
CI fails on docs-upstream / validate / run (pull_request) but make docs didn't fix that :thinking:
CI passed about the codes. CI fails on
docs-upstream / validate / run (pull_request)butmake docsdidn't fix that 🤔
https://github.com/docker/buildx/actions/runs/4299321437/jobs/7494431087#step:7:38
/tmp/_data/buildx/docker_buildx__INTERNAL_DAP_ATTACH_CONTAINER.yaml => _data/buildx/docker_buildx__INTERNAL_DAP_ATTACH_CONTAINER.yaml
@ktock Yes looks linked to the new internal command you just added. Can you add an extra commit replacing https://github.com/docker/buildx/blob/5e685c0e049e8bad16896168d04a8305d31750c4/hack/dockerfiles/docs.Dockerfile#L25
with
rm -f /out/reference/*__INTERNAL_*
Thank you for the comment! but it looks still failing with that change:
https://github.com/docker/buildx/pull/1656/files#diff-db64df798bacc13502bd135604bce3b7cb9c5a8a551cd674a2e03d86fdc7ceba
Thank you for the comment! but it looks still failing with that change:
https://github.com/docker/buildx/pull/1656/files#diff-db64df798bacc13502bd135604bce3b7cb9c5a8a551cd674a2e03d86fdc7ceba
Thanks I will take a look
@ktock I try to find the root cause for the docs-upstream issue. I keep you posted when I have smth.
Edit: looks good now
@crazy-max Thank you for fixing it.
See https://github.com/docker/buildx/pull/1640#issuecomment-1500164111 :eyes: I know there's a lot of vendor changes here as well, but there's still a lot going on :tada:
I think it might even be worth splitting out the DAP into a separate PR (though maybe once https://github.com/docker/buildx/pull/1640 is merged, to prevent too much PR chaining), it feels like a separate feature, with it's own complexities to me.
What's the intended way to use the debugger? I am starting it using --invoke=sh, setting a break and then using reload - but I don't stop at that point?
When using on-error I easily hit a panic:
$ buildx build . --detach=false --invoke on-error
...
Interactive container was restarted. Press Ctrl-a-c to switch to the new container
(buildx) show
...
(buildx) continue
(buildx) fatal error: concurrent map read and map write
...
I also don't see show showing the current line in the Dockerfile when stopping on on-error.
@jedevc Thank you for trying this patch.
What's the intended way to use the debugger?
Could you use continue to start the breakpoint debugger? Please see also the doc: https://github.com/docker/buildx/blob/371f2bb0d90f5e62f63e5a53b3577cff41e14273/docs/guides/breakpoints.md
When using on-error I easily hit a panic:
Could you post the reproducer?
Hm, so I can reproduce by taking a fresh clone of buildkit and then modifying the last part of the Dockerfile to add a bad line:
diff --git a/Dockerfile b/Dockerfile
index b489426d4..b11637145 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -302,3 +302,4 @@ ENTRYPOINT ["rootlesskit", "buildkitd"]
# buildkit builds the buildkit container image
FROM buildkit-$TARGETOS AS buildkit
+RUN skdfjalsdkfj
Then I can build with buildx build --detach=false . --invoke=on-error. I then switch back to monitor mode, and type continue to get the panic:
$ buildx build --detach=false . --invoke=on-error
INFO: launching local buildx controller
WARNING: No output specified with docker-container driver. Build result will only remain in the build cache. To push result image into registry use --push or to load image into docker use --load
[+] Building 1.9s (44/44) FINISHED docker-container:container
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 12.76kB 0.0s
=> resolve image config for docker.io/docker/dockerfile-upstream:master 0.5s
=> CACHED docker-image://docker.io/docker/dockerfile-upstream:master@sha256:9da94d31a48e7e8e7d0e6ba522a9857e3cba83037c6bcd5768668600 0.0s
=> => resolve docker.io/docker/dockerfile-upstream:master@sha256:9da94d31a48e7e8e7d0e6ba522a9857e3cba83037c6bcd5768668600cf8263cb 0.0s
=> [internal] load metadata for docker.io/tonistiigi/binfmt:buildkit-v7.1.0-30@sha256:45dd57b4ba2f24e2354f71f1e4e51f073cb7a28fd848ce 0.0s
=> [internal] load metadata for docker.io/library/alpine:3.17 0.9s
=> [internal] load metadata for docker.io/library/golang:1.20-alpine3.17 0.8s
=> [internal] load metadata for docker.io/tonistiigi/xx:1.2.1 0.6s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 56B 0.0s
=> [git 1/2] FROM docker.io/library/alpine:3.17@sha256:124c7d2707904eea7431fffe91522a01e5a861a624ee31d03372cc1d138a3126 0.0s
=> => resolve docker.io/library/alpine:3.17@sha256:124c7d2707904eea7431fffe91522a01e5a861a624ee31d03372cc1d138a3126 0.0s
=> [internal] load build context 0.4s
=> => transferring context: 1.19MB 0.3s
=> FROM docker.io/tonistiigi/binfmt:buildkit-v7.1.0-30@sha256:45dd57b4ba2f24e2354f71f1e4e51f073cb7a28fd848ce6f5f2a7701142a6bf0 0.0s
=> => resolve docker.io/tonistiigi/binfmt:buildkit-v7.1.0-30@sha256:45dd57b4ba2f24e2354f71f1e4e51f073cb7a28fd848ce6f5f2a7701142a6bf0 0.0s
=> [golatest 1/1] FROM docker.io/library/golang:1.20-alpine3.17@sha256:08e9c086194875334d606765bd60aa064abd3c215abfbcf5737619110d48d 0.0s
=> => resolve docker.io/library/golang:1.20-alpine3.17@sha256:08e9c086194875334d606765bd60aa064abd3c215abfbcf5737619110d48d114 0.0s
=> [xx 1/1] FROM docker.io/tonistiigi/xx:1.2.1@sha256:8879a398dedf0aadaacfbd332b29ff2f84bc39ae6d4e9c0a1109db27ac5ba012 0.0s
=> => resolve docker.io/tonistiigi/xx:1.2.1@sha256:8879a398dedf0aadaacfbd332b29ff2f84bc39ae6d4e9c0a1109db27ac5ba012 0.0s
=> CACHED [runc 2/3] RUN set -e; xx-apk add musl-dev gcc libseccomp-dev libseccomp-static; [ "$(xx-info arch)" != "ppc64le" ] || X 0.0s
=> CACHED [runc 3/3] RUN --mount=from=runc-src,src=/usr/src/runc,target=. --mount=target=/root/.cache,type=cache CGO_ENABLED=1 xx- 0.0s
=> CACHED [gobuild-base 1/2] RUN apk add --no-cache file bash clang lld pkgconfig git make 0.0s
=> CACHED [runc 1/3] WORKDIR /go/src/github.com/opencontainers/runc 0.0s
=> CACHED [buildkit-export 1/2] RUN apk add --no-cache fuse3 git openssh pigz xz && ln -s fusermount3 /usr/bin/fusermount 0.0s
=> CACHED [git 2/2] RUN apk add --no-cache git 0.0s
=> CACHED [runc-src 1/2] WORKDIR /usr/src 0.0s
=> CACHED [runc-src 2/2] RUN git clone https://github.com/opencontainers/runc.git runc && cd runc && git checkout -q "v1.1.6" 0.0s
=> CACHED [buildkit-base 1/1] WORKDIR /src 0.0s
=> CACHED [buildkit-version 1/1] RUN --mount=target=. PKG=github.com/moby/buildkit VERSION=$(git describe --match 'v[0-9]*' --dirt 0.0s
=> CACHED [buildctl 1/1] RUN --mount=target=. --mount=target=/root/.cache,type=cache --mount=target=/go/pkg/mod,type=cache --mou 0.0s
=> CACHED [buildkitd 1/1] RUN --mount=target=. --mount=target=/root/.cache,type=cache --mount=target=/go/pkg/mod,type=cache --mo 0.0s
=> ERROR [buildkit 1/1] RUN skdfjalsdkfj 0.0s
=> CACHED [binaries-linux 3/4] COPY --link --from=buildctl /usr/bin/buildctl / 0.0s
=> CACHED [binaries-linux 4/4] COPY --link --from=buildkitd /usr/bin/buildkitd / 0.0s
=> CACHED [buildkit-linux 1/1] COPY --link --from=binaries / /usr/bin/ 0.0s
=> CACHED [buildkit-export 2/2] COPY --link examples/buildctl-daemonless/buildctl-daemonless.sh /usr/bin/ 0.0s
=> CACHED [gobuild-base 2/2] COPY --link --from=xx / / 0.0s
=> CACHED [binaries-linux 2/4] COPY --link --from=tonistiigi/binfmt:buildkit-v7.1.0-30@sha256:45dd57b4ba2f24e2354f71f1e4e51f073cb7a2 0.0s
------
> [buildkit 1/1] RUN skdfjalsdkfj:
#0 0.040 /bin/sh: skdfjalsdkfj: not found
------
Launching interactive container. Press Ctrl-a-c to switch to monitor console
Interactive container was restarted with process "nv61di6am2cgoae8trnz0ydn2". Press Ctrl-a-c to switch to the new container
/ # Switched IO
(buildx) continue
(buildx) fatal error: concurrent map read and map write
goroutine 17370 [running]:
github.com/moby/buildkit/client/llb.(*DefinitionOp).Inputs(0xc000869cc0)
github.com/moby/[email protected]/client/llb/definition.go:214 +0x368
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0015be500}, {{0x2668b60, 0xc0003c35c0}, 0xc0009dc2d0, {0x1ebeae0, 0xc00015dfe0}, 0xc0008a2ba0, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:85 +0x142
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 1 [select]:
github.com/docker/buildx/monitor.RunMonitor({_, _}, {_, _}, _, _, {{0x0, 0x0, 0x0}, {0xc0008739a0, ...}, ...}, ...)
github.com/docker/buildx/monitor/monitor.go:475 +0x12fa
github.com/docker/buildx/commands.launchControllerAndRunBuild({_, _}, {{0x37ab9a0, 0x0, 0x0}, {0x37ab9a0, 0x0, 0x0}, {0x37ab9a0, 0x0, ...}, ...})
github.com/docker/buildx/commands/build.go:607 +0xe05
github.com/docker/buildx/commands.buildCmd.func1(0xc000350600?, {0xc000875830?, 0x3?, 0x3?})
github.com/docker/buildx/commands/build.go:264 +0x3c8
github.com/spf13/cobra.(*Command).execute(0xc000350600, {0xc0000500c0, 0x3, 0x3})
github.com/spf13/[email protected]/command.go:916 +0x862
github.com/spf13/cobra.(*Command).ExecuteC(0xc000350300)
github.com/spf13/[email protected]/command.go:1044 +0x3bd
github.com/spf13/cobra.(*Command).Execute(...)
github.com/spf13/[email protected]/command.go:968
main.runStandalone(0x234b838?)
github.com/docker/buildx/cmd/buildx/main.go:44 +0x75
main.main()
github.com/docker/buildx/cmd/buildx/main.go:64 +0x108
goroutine 51 [select]:
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward(0xc0000bac60)
github.com/docker/buildx/util/ioset/ioset.go:213 +0x168
created by github.com/docker/buildx/util/ioset.NewSingleForwarder
github.com/docker/buildx/util/ioset/ioset.go:154 +0xca
goroutine 52 [syscall]:
syscall.Syscall(0xc0000955d8?, 0x4b86c6?, 0x800000?, 0x7ffff800000?)
syscall/syscall_linux.go:69 +0x27
syscall.read(0xc0000ba060?, {0xc00089e000?, 0x40d401?, 0x7ff06971ab88?})
syscall/zsyscall_linux_amd64.go:711 +0x45
syscall.Read(...)
syscall/syscall_unix.go:178
internal/poll.ignoringEINTRIO(...)
internal/poll/fd_unix.go:794
internal/poll.(*FD).Read(0xc0000ba060?, {0xc00089e000?, 0x1000?, 0x1000?})
internal/poll/fd_unix.go:163 +0x2ce
os.(*File).read(...)
os/file_posix.go:31
os.(*File).Read(0xc000012010, {0xc00089e000?, 0x231c548?, 0x0?})
os/file.go:118 +0x5e
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward.func1()
github.com/docker/buildx/util/ioset/ioset.go:173 +0xe6
created by github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward
github.com/docker/buildx/util/ioset/ioset.go:169 +0x10b
goroutine 17356 [select]:
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward(0xc001576c00)
github.com/docker/buildx/util/ioset/ioset.go:213 +0x168
created by github.com/docker/buildx/util/ioset.NewSingleForwarder
github.com/docker/buildx/util/ioset/ioset.go:154 +0xca
goroutine 17268 [select]:
google.golang.org/grpc.newClientStreamWithParams.func4()
google.golang.org/[email protected]/stream.go:366 +0x92
created by google.golang.org/grpc.newClientStreamWithParams
google.golang.org/[email protected]/stream.go:365 +0xf2a
goroutine 67 [IO wait]:
internal/poll.runtime_pollWait(0x7ff069a00f58, 0x72)
runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc000066100?, 0xc000912000?, 0x0)
internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000066100, {0xc000912000, 0x1000, 0x1000})
internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc000066100, {0xc000912000?, 0x2?, 0xc0003de640?})
net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc00044e188, {0xc000912000?, 0x0?, 0x0?})
net/net.go:183 +0x45
net/http.(*persistConn).Read(0xc000466a20, {0xc000912000?, 0x44b3c0?, 0xc000900ec8?})
net/http/transport.go:1943 +0x4e
bufio.(*Reader).fill(0xc000131440)
bufio/bufio.go:106 +0xff
bufio.(*Reader).Peek(0xc000131440, 0x1)
bufio/bufio.go:144 +0x5d
net/http.(*persistConn).readLoop(0xc000466a20)
net/http/transport.go:2107 +0x1ac
created by net/http.(*Transport).dialConn
net/http/transport.go:1765 +0x16ea
goroutine 68 [select]:
net/http.(*persistConn).writeLoop(0xc000466a20)
net/http/transport.go:2410 +0xf2
created by net/http.(*Transport).dialConn
net/http/transport.go:1766 +0x173d
goroutine 17417 [select]:
io.(*pipe).read(0xc0010f5ec0, {0xc0009b8000, 0x1000, 0x43ad01?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0xc0000ac250?, {0xc0009b8000?, 0xc000926ae0?, 0xc0003aef50?})
io/pipe.go:136 +0x25
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward.func1()
github.com/docker/buildx/util/ioset/ioset.go:173 +0xe6
created by github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward
github.com/docker/buildx/util/ioset/ioset.go:169 +0x10b
goroutine 56 [IO wait]:
internal/poll.runtime_pollWait(0x7ff069a00e68, 0x72)
runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc0006d4d80?, 0xc00089f000?, 0x0)
internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0006d4d80, {0xc00089f000, 0x1000, 0x1000})
internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc0006d4d80, {0xc00089f000?, 0x43ade7?, 0xc0007cfc30?})
net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc00012db20, {0xc00089f000?, 0x0?, 0xc000642b60?})
net/net.go:183 +0x45
net/http.(*persistConn).Read(0xc000876d80, {0xc00089f000?, 0xc000146120?, 0xc0007cfd30?})
net/http/transport.go:1943 +0x4e
bufio.(*Reader).fill(0xc0000baea0)
bufio/bufio.go:106 +0xff
bufio.(*Reader).Peek(0xc0000baea0, 0x1)
bufio/bufio.go:144 +0x5d
net/http.(*persistConn).readLoop(0xc000876d80)
net/http/transport.go:2107 +0x1ac
created by net/http.(*Transport).dialConn
net/http/transport.go:1765 +0x16ea
goroutine 57 [select]:
net/http.(*persistConn).writeLoop(0xc000876d80)
net/http/transport.go:2410 +0xf2
created by net/http.(*Transport).dialConn
net/http/transport.go:1766 +0x173d
goroutine 81 [IO wait]:
internal/poll.runtime_pollWait(0x7ff069a00d78, 0x72)
runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc000176080?, 0xc0008cc000?, 0x0)
internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000176080, {0xc0008cc000, 0x8009, 0x8009})
internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc000176080, {0xc0008cc000?, 0xc000146480?, 0xc000906e48?})
net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc000156050, {0xc0008cc000?, 0x2f?, 0x8001?})
net/net.go:183 +0x45
github.com/docker/docker/pkg/stdcopy.StdCopy({0x2662560, 0xc000156060}, {0x26633e0, 0xc000012020}, {0x2662f80, 0xc000156050})
github.com/docker/[email protected]+incompatible/pkg/stdcopy/stdcopy.go:108 +0x444
created by github.com/docker/buildx/driver/docker-container.demuxConn
github.com/docker/buildx/driver/docker-container/driver.go:398 +0x1ed
goroutine 82 [select]:
go.opentelemetry.io/otel/sdk/trace.(*batchSpanProcessor).processQueue(0xc000690a00)
go.opentelemetry.io/otel/[email protected]/trace/batch_span_processor.go:293 +0x12c
go.opentelemetry.io/otel/sdk/trace.NewBatchSpanProcessor.func1()
go.opentelemetry.io/otel/[email protected]/trace/batch_span_processor.go:128 +0x65
created by go.opentelemetry.io/otel/sdk/trace.NewBatchSpanProcessor
go.opentelemetry.io/otel/[email protected]/trace/batch_span_processor.go:126 +0x2ea
goroutine 83 [select]:
google.golang.org/grpc.(*ccBalancerWrapper).watcher(0xc0006da3c0)
google.golang.org/[email protected]/balancer_conn_wrappers.go:115 +0x73
created by google.golang.org/grpc.newCCBalancerWrapper
google.golang.org/[email protected]/balancer_conn_wrappers.go:76 +0x22a
goroutine 59 [select]:
io.(*pipe).read(0xc000712420, {0xc0008d6000, 0x8000, 0x416030?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0x43ade7?, {0xc0008d6000?, 0x43ae20?, 0xc000489860?})
io/pipe.go:136 +0x25
github.com/docker/buildx/driver/docker-container.(*demux).Read(0x800000601?, {0xc0008d6000?, 0xc000a0dd28?, 0x800000601?})
github.com/docker/buildx/driver/docker-container/driver.go:411 +0x27
bufio.(*Reader).Read(0xc0000bb260, {0xc000442660, 0x9, 0x7ff090dce5b8?})
bufio/bufio.go:237 +0x1bb
io.ReadAtLeast({0x265bea0, 0xc0000bb260}, {0xc000442660, 0x9, 0x9}, 0x9)
io/io.go:332 +0x9a
io.ReadFull(...)
io/io.go:351
golang.org/x/net/http2.readFrameHeader({0xc000442660?, 0x9?, 0x18?}, {0x265bea0?, 0xc0000bb260?})
golang.org/x/[email protected]/http2/frame.go:237 +0x6e
golang.org/x/net/http2.(*Framer).ReadFrame(0xc000442620)
golang.org/x/[email protected]/http2/frame.go:498 +0x95
google.golang.org/grpc/internal/transport.(*http2Client).reader(0xc000569b00, 0xc000876d80?)
google.golang.org/[email protected]/internal/transport/http2_client.go:1597 +0x257
created by google.golang.org/grpc/internal/transport.newHTTP2Client
google.golang.org/[email protected]/internal/transport/http2_client.go:394 +0x1e2a
goroutine 60 [select]:
google.golang.org/grpc/internal/transport.(*controlBuffer).get(0xc000565450, 0x1)
google.golang.org/[email protected]/internal/transport/controlbuf.go:416 +0x115
google.golang.org/grpc/internal/transport.(*loopyWriter).run(0xc0000bb320)
google.golang.org/[email protected]/internal/transport/controlbuf.go:534 +0x85
google.golang.org/grpc/internal/transport.newHTTP2Client.func6()
google.golang.org/[email protected]/internal/transport/http2_client.go:448 +0x6d
created by google.golang.org/grpc/internal/transport.newHTTP2Client
google.golang.org/[email protected]/internal/transport/http2_client.go:446 +0x23fc
goroutine 17267 [select]:
io.(*pipe).read(0xc0010f5800, {0xc000dc2000, 0x1000, 0x1000?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0x405d3d?, {0xc000dc2000?, 0x231c548?, 0xc85a01?})
io/pipe.go:136 +0x25
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward.func1()
github.com/docker/buildx/util/ioset/ioset.go:173 +0xe6
created by github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward
github.com/docker/buildx/util/ioset/ioset.go:169 +0x10b
goroutine 17273 [select]:
io.(*pipe).read(0xc0007d0f60, {0xc000dc3000, 0x1000, 0x1000?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0x405d3d?, {0xc000dc3000?, 0x231c548?, 0xc85a01?})
io/pipe.go:136 +0x25
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward.func1()
github.com/docker/buildx/util/ioset/ioset.go:173 +0xe6
created by github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward
github.com/docker/buildx/util/ioset/ioset.go:169 +0x10b
goroutine 17445 [semacquire]:
sync.runtime_Semacquire(0xc0002c56c0?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000a24a01?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0004d5c80)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e140}, {{0x2668b60, 0xc0003cc9c0}, 0xc0004f3e50, {0x1ebeae0, 0xc00015ddd0}, 0xc0010f5f20, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17434 [semacquire]:
sync.runtime_Semacquire(0xc0002c5860?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775201?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000e1c080)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0006e61e0}, {{0x2668b60, 0xc000938750}, 0xc000af55e0, {0x1ebeae0, 0xc001517b20}, 0xc000a55ab8, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17396 [select]:
io.(*pipe).read(0xc0010f5d40, {0xc000997000, 0x1000, 0xc000907da8?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0xc001576960?, {0xc000997000?, 0x1?, 0x1000?})
io/pipe.go:136 +0x25
github.com/docker/buildx/util/ioset.copyToFunc({0x7ff069985268, 0xc0008a2960}, 0xc000907f60)
github.com/docker/buildx/util/ioset/mux.go:231 +0x62
github.com/docker/buildx/util/ioset.NewMuxIO.func3()
github.com/docker/buildx/util/ioset/mux.go:75 +0x1da
created by github.com/docker/buildx/util/ioset.NewMuxIO
github.com/docker/buildx/util/ioset/mux.go:71 +0x5f1
goroutine 16887 [semacquire]:
sync.runtime_Semacquire(0xc0005831e0?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775001?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000e1c200)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000af5720}, {{0x2668b60, 0xc0008869c0}, 0xc000af5810, {0x1ebeae0, 0xc001517c40}, 0xc0003b7860, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 16886 [semacquire]:
sync.runtime_Semacquire(0xc00040a4e0?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000a24b01?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000e1c100)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000af5630}, {{0x2668b60, 0xc000886960}, 0xc000af56d0, {0x1ebeae0, 0xc001517b90}, 0xc000a55ae8, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17359 [select]:
io.(*pipe).read(0xc001576ae0, {0xc000e0e000, 0x1000, 0x1000?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0x0?, {0xc000e0e000?, 0x231c548?, 0x0?})
io/pipe.go:136 +0x25
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward.func1()
github.com/docker/buildx/util/ioset/ioset.go:173 +0xe6
created by github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward
github.com/docker/buildx/util/ioset/ioset.go:169 +0x10b
goroutine 17393 [select]:
io.(*pipe).read(0xc001576a20, {0xc001337000, 0x1000, 0x1?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0x0?, {0xc001337000?, 0x0?, 0x0?})
io/pipe.go:136 +0x25
github.com/docker/buildx/util/ioset.copyToFunc({0x2662520, 0xc0001570f8}, 0xc000a46d60)
github.com/docker/buildx/util/ioset/mux.go:231 +0x62
github.com/docker/buildx/util/ioset.NewMuxIO.func2()
github.com/docker/buildx/util/ioset/mux.go:58 +0x12f
created by github.com/docker/buildx/util/ioset.NewMuxIO
github.com/docker/buildx/util/ioset/mux.go:56 +0x205
goroutine 17395 [select]:
io.(*pipe).read(0xc001576ba0, {0xc000743000, 0x1000, 0x1?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0x0?, {0xc000743000?, 0x0?, 0x0?})
io/pipe.go:136 +0x25
github.com/docker/buildx/util/ioset.copyToFunc({0x2662520, 0xc000157128}, 0xc000a4dd60)
github.com/docker/buildx/util/ioset/mux.go:231 +0x62
github.com/docker/buildx/util/ioset.NewMuxIO.func2()
github.com/docker/buildx/util/ioset/mux.go:58 +0x12f
created by github.com/docker/buildx/util/ioset.NewMuxIO
github.com/docker/buildx/util/ioset/mux.go:56 +0x205
goroutine 17358 [select]:
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward(0xc001576cc0)
github.com/docker/buildx/util/ioset/ioset.go:213 +0x168
created by github.com/docker/buildx/util/ioset.NewSingleForwarder
github.com/docker/buildx/util/ioset/ioset.go:154 +0xca
goroutine 17357 [select]:
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward(0xc001576c60)
github.com/docker/buildx/util/ioset/ioset.go:213 +0x168
created by github.com/docker/buildx/util/ioset.NewSingleForwarder
github.com/docker/buildx/util/ioset/ioset.go:154 +0xca
goroutine 17394 [select]:
io.(*pipe).read(0xc001576b40, {0xc00095f000, 0x1000, 0xc00083e460?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0x0?, {0xc00095f000?, 0x0?, 0x0?})
io/pipe.go:136 +0x25
github.com/docker/buildx/util/ioset.copyToFunc({0x2662520, 0xc000157118}, 0xc000a4cd60)
github.com/docker/buildx/util/ioset/mux.go:231 +0x62
github.com/docker/buildx/util/ioset.NewMuxIO.func1()
github.com/docker/buildx/util/ioset/mux.go:43 +0x12f
created by github.com/docker/buildx/util/ioset.NewMuxIO
github.com/docker/buildx/util/ioset/mux.go:41 +0x3cf
goroutine 17360 [select]:
io.(*pipe).read(0xc0015769c0, {0xc00058c000, 0x1000, 0xc00083e460?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0x4d6a7a5766503535?, {0xc00058c000?, 0x585a636f44756c58?, 0x6a2f61625a785346?})
io/pipe.go:136 +0x25
github.com/docker/buildx/util/ioset.copyToFunc({0x2662520, 0xc0001570e8}, 0xc0003b4d60)
github.com/docker/buildx/util/ioset/mux.go:231 +0x62
github.com/docker/buildx/util/ioset.NewMuxIO.func1()
github.com/docker/buildx/util/ioset/mux.go:43 +0x12f
created by github.com/docker/buildx/util/ioset.NewMuxIO
github.com/docker/buildx/util/ioset/mux.go:41 +0x3cf
goroutine 17391 [select]:
io.(*pipe).read(0xc001576960, {0xc0006be000, 0x1000, 0x1000?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0x49?, {0xc0006be000?, 0x231c548?, 0x1?})
io/pipe.go:136 +0x25
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward.func1()
github.com/docker/buildx/util/ioset/ioset.go:173 +0xe6
created by github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward
github.com/docker/buildx/util/ioset/ioset.go:169 +0x10b
goroutine 17340 [chan receive]:
github.com/docker/buildx/build.NewContainer.func1.1({0x267f4b0?, 0xc000542190?}, {0x2683be0, 0xc000796400})
github.com/docker/buildx/build/invoke.go:64 +0x43d
github.com/docker/buildx/build.(*ResultContext).build(...)
github.com/docker/buildx/build/result.go:179
github.com/docker/buildx/build.NewContainer.func1()
github.com/docker/buildx/build/invoke.go:33 +0x98
created by github.com/docker/buildx/build.NewContainer
github.com/docker/buildx/build/invoke.go:32 +0x131
goroutine 17397 [select]:
github.com/docker/buildx/controller/local.(*localController).Invoke(0xc0005658b0, {_, _}, {_, _}, {_, _}, {{0x0, 0x0, 0x0}, ...}, ...)
github.com/docker/buildx/controller/local/controller.go:137 +0x486
github.com/docker/buildx/monitor.RunMonitor.func9({0x267f4b0?, 0xc0004f3590?}, {0x22ff949?, _}, {_, _}, {{0x0, 0x0, 0x0}, {0xc0008739a0, ...}, ...}, ...)
github.com/docker/buildx/monitor/monitor.go:112 +0xff
github.com/docker/buildx/monitor.(*monitor).invoke(0xc000998a80, {0x267f4e8, 0xc000054108}, {0x22ff949, 0x5}, {0xc0009ae921, 0x19}, {{0x0, 0x0, 0x0}, ...})
github.com/docker/buildx/monitor/monitor.go:568 +0x5a9
github.com/docker/buildx/monitor.(*monitor).startInvoke.func1()
github.com/docker/buildx/monitor/monitor.go:531 +0x9e
created by github.com/docker/buildx/monitor.(*monitor).startInvoke
github.com/docker/buildx/monitor/monitor.go:529 +0x21f
goroutine 17365 [semacquire]:
sync.runtime_Semacquire(0xc000974000?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775001?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0015b2dc0)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0015be050}, {{0x2668b60, 0xc0003c33e0}, 0xc0015be230, {0x1ebeae0, 0xc0008310e0}, 0xc000c168a0, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17342 [select]:
io.(*pipe).read(0xc0010f57a0, {0xc000996000, 0x1000, 0x1000?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0xc00009b000?, {0xc000996000?, 0x231c548?, 0xc000931f30?})
io/pipe.go:136 +0x25
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward.func1()
github.com/docker/buildx/util/ioset/ioset.go:173 +0xe6
created by github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward
github.com/docker/buildx/util/ioset/ioset.go:169 +0x10b
goroutine 17344 [select]:
io.(*pipe).read(0xc0007d0f00, {0xc0013b2000, 0x8000, 0x8000?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0x405d3d?, {0xc0013b2000?, 0xc00066d340?, 0xc85a01?})
io/pipe.go:136 +0x25
io.copyBuffer({0x2662560, 0xc00066d340}, {0x2662520, 0xc000774f98}, {0x0, 0x0, 0x0})
io/io.go:427 +0x1b2
io.Copy(...)
io/io.go:386
github.com/moby/buildkit/frontend/gateway/grpcclient.(*container).Start.func2()
github.com/moby/[email protected]/frontend/gateway/grpcclient/client.go:891 +0x85
created by github.com/moby/buildkit/frontend/gateway/grpcclient.(*container).Start
github.com/moby/[email protected]/frontend/gateway/grpcclient/client.go:890 +0x8b1
goroutine 17363 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc000dbc901?, 0xc0?, 0xc0000ac250?)
runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0xc000dbd968)
sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
sync/mutex.go:90
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0005dbd60}, {{0x2668b60, 0xc0003c3320}, 0xc0005dbe00, {0x1ebeae0, 0xc000830b50}, 0xc0005d1cc8, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:95 +0x2b9
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17398 [select]:
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward(0xc001576d20)
github.com/docker/buildx/util/ioset/ioset.go:213 +0x168
created by github.com/docker/buildx/util/ioset.NewSingleForwarder
github.com/docker/buildx/util/ioset/ioset.go:154 +0xca
goroutine 17399 [select]:
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward(0xc001576d80)
github.com/docker/buildx/util/ioset/ioset.go:213 +0x168
created by github.com/docker/buildx/util/ioset.NewSingleForwarder
github.com/docker/buildx/util/ioset/ioset.go:154 +0xca
goroutine 17419 [semacquire]:
sync.runtime_Semacquire(0xc000583380?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775001?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0004d5d40)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0004f3ea0}, {{0x2668b60, 0xc00072fe30}, 0xc0004f3ef0, {0x1ebeae0, 0xc00015de40}, 0xc0010f5f80, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 16889 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc000dbcb01?, 0xc0?, 0xc0000ac250?)
runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0xc000dbd968)
sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
sync/mutex.go:90
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000af5860}, {{0x2668b60, 0xc000886de0}, 0xc000af5900, {0x1ebeae0, 0xc001517cb0}, 0xc000a55b48, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:95 +0x2b9
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 265 [select]:
golang.org/x/net/http2.(*serverConn).serve(0xc000958480)
golang.org/x/[email protected]/http2/server.go:938 +0x8ac
golang.org/x/net/http2.(*Server).ServeConn(0xc00029c4b0, {0x2688388?, 0xc000243880}, 0xc000c0f990)
golang.org/x/[email protected]/http2/server.go:531 +0xbc5
github.com/moby/buildkit/session.serve({0x267f4b0?, 0xc00047ff90}, 0xc0006c3860, {0x2688388?, 0xc000243880})
github.com/moby/[email protected]/session/grpc.go:29 +0x16a
github.com/moby/buildkit/session.(*Session).Run(0xc000243810, {0x267f4b0?, 0xc00047f8b0?}, 0xc000475908)
github.com/moby/[email protected]/session/session.go:124 +0x715
github.com/moby/buildkit/client.(*Client).solve.func1()
github.com/moby/[email protected]/client/solve.go:216 +0x9f
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 264 [semacquire]:
sync.runtime_Semacquire(0xc000583520?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc00047f901?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000a23580)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/moby/buildkit/client.(*Client).solve(0xc000434ab0, {0x267f4e8, _}, _, _, {{0x37ab9a0, 0x0, 0x0}, 0xc000887050, 0x0, ...}, ...)
github.com/moby/[email protected]/client/solve.go:324 +0x1b1b
github.com/moby/buildkit/client.(*Client).Build(0xc000434ab0, {0x267f4e8?, _}, {{0x37ab9a0, 0x0, 0x0}, 0xc000887050, 0x0, {0xc00083d9c0, 0x19}, ...}, ...)
github.com/moby/[email protected]/client/build.go:65 +0x4e8
github.com/docker/buildx/build.getResultAt.func2()
github.com/docker/buildx/build/result.go:94 +0x227
created by github.com/docker/buildx/build.getResultAt
github.com/docker/buildx/build/result.go:88 +0x2df
goroutine 17415 [chan receive (nil chan)]:
github.com/docker/buildx/monitor.RunMonitor.func10.1()
github.com/docker/buildx/monitor/monitor.go:143 +0x2e
created by github.com/docker/buildx/monitor.RunMonitor.func10
github.com/docker/buildx/monitor/monitor.go:142 +0x285
goroutine 263 [chan receive]:
github.com/docker/buildx/build.getResultAt.func1()
github.com/docker/buildx/build/result.go:70 +0x6d
created by github.com/docker/buildx/build.getResultAt
github.com/docker/buildx/build/result.go:68 +0x1f5
goroutine 17341 [chan receive (nil chan)]:
github.com/docker/buildx/build.NewContainer.func1.1.1()
github.com/docker/buildx/build/invoke.go:36 +0x32
created by github.com/docker/buildx/build.NewContainer.func1.1
github.com/docker/buildx/build/invoke.go:35 +0x134
goroutine 17418 [semacquire]:
sync.runtime_Semacquire(0xc000974d00?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775001?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0015b2b00)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0004f3ea0}, {{0x2668b60, 0xc00072fe00}, 0xc0005dbd10, {0x1ebeae0, 0xc0008309b0}, 0xc000c16360, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17269 [select]:
google.golang.org/grpc/internal/transport.(*recvBufferReader).readClient(0xc000db17c0, {0xc000a26d90, 0x5, 0x5})
google.golang.org/[email protected]/internal/transport/transport.go:195 +0xa5
google.golang.org/grpc/internal/transport.(*recvBufferReader).Read(0xc000db17c0, {0xc000a26d90?, 0xc000669b00?, 0xc00092e9c8?})
google.golang.org/[email protected]/internal/transport/transport.go:175 +0x147
google.golang.org/grpc/internal/transport.(*transportReader).Read(0xc0004992c0, {0xc000a26d90?, 0xc00092ea40?, 0xc93bc7?})
google.golang.org/[email protected]/internal/transport/transport.go:495 +0x32
io.ReadAtLeast({0x2661dc0, 0xc0004992c0}, {0xc000a26d90, 0x5, 0x5}, 0x5)
io/io.go:332 +0x9a
io.ReadFull(...)
io/io.go:351
google.golang.org/grpc/internal/transport.(*Stream).Read(0xc000566d80, {0xc000a26d90, 0x5, 0x5})
google.golang.org/[email protected]/internal/transport/transport.go:479 +0xac
google.golang.org/grpc.(*parser).recvMsg(0xc000a26d80, 0x1000000)
google.golang.org/[email protected]/rpc_util.go:561 +0x47
google.golang.org/grpc.recvAndDecompress(0xc0014c7a80?, 0xc000566d80, {0x0, 0x0}, 0x1000000, 0x0, {0x0, 0x0})
google.golang.org/[email protected]/rpc_util.go:692 +0x66
google.golang.org/grpc.recv(0xc00092ec60?, {0x7ff069a45d00, 0x37ab9a0}, 0x7ff0695bc768?, {0x0?, 0x0?}, {0x22833e0, 0xc0015b2580}, 0x0?, 0x0, ...)
google.golang.org/[email protected]/rpc_util.go:758 +0x6e
google.golang.org/grpc.(*csAttempt).recvMsg(0xc0014e9380, {0x22833e0?, 0xc0015b2580}, 0x416030?)
google.golang.org/[email protected]/stream.go:1060 +0x2cc
google.golang.org/grpc.(*clientStream).RecvMsg.func1(0x7ff090dcf878?)
google.golang.org/[email protected]/stream.go:900 +0x25
google.golang.org/grpc.(*clientStream).withRetry(0xc000566240, 0xc00092ee88, 0xc00092ee58)
google.golang.org/[email protected]/stream.go:735 +0x3be
google.golang.org/grpc.(*clientStream).RecvMsg(0xc000566240, {0x22833e0?, 0xc0015b2580?})
google.golang.org/[email protected]/stream.go:899 +0x125
github.com/moby/buildkit/frontend/gateway/pb.(*lLBBridgeExecProcessClient).Recv(0xc000a24160)
github.com/moby/[email protected]/frontend/gateway/pb/gateway.pb.go:2962 +0x4c
github.com/moby/buildkit/frontend/gateway/grpcclient.(*messageForwarder).Start.func2.1()
github.com/moby/[email protected]/frontend/gateway/grpcclient/client.go:654 +0x44
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17416 [select]:
io.(*pipe).read(0xc0010f5e00, {0xc0009a9000, 0x1000, 0x1000?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0xc0001570f0?, {0xc0009a9000?, 0x231c548?, 0x1000?})
io/pipe.go:136 +0x25
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward.func1()
github.com/docker/buildx/util/ioset/ioset.go:173 +0xe6
created by github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward
github.com/docker/buildx/util/ioset/ioset.go:169 +0x10b
goroutine 17364 [semacquire]:
sync.runtime_Semacquire(0xc000975520?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000a24b01?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0015b2c40)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0005dbf40}, {{0x2668b60, 0xc0003c3380}, 0xc0015be000, {0x1ebeae0, 0xc000830d80}, 0xc0005d1d58, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17410 [select]:
github.com/moby/buildkit/frontend/gateway/grpcclient.(*procMessageForwarder).Recv(0xc0007208a0, {0x267f4b0?, 0xc0004f3c70?})
github.com/moby/[email protected]/frontend/gateway/grpcclient/client.go:589 +0x9a
github.com/moby/buildkit/frontend/gateway/grpcclient.(*container).Start.func4()
github.com/moby/[email protected]/frontend/gateway/grpcclient/client.go:923 +0xb2
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17343 [chan receive]:
github.com/moby/buildkit/frontend/gateway/grpcclient.(*container).Start.func1()
github.com/moby/[email protected]/frontend/gateway/grpcclient/client.go:876 +0x28
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17444 [semacquire]:
sync.runtime_Semacquire(0xc000b829c0?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000a24f01?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000dbda00)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e050}, {{0x2668b60, 0xc0003cc960}, 0xc000a3e0f0, {0x1ebeae0, 0xc000a25130}, 0xc000a32288, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17431 [semacquire]:
sync.runtime_Semacquire(0xc000b82ea0?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000a24d01?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000b18000)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0006e6050}, {{0x2668b60, 0xc000938510}, 0xc000f86000, {0x1ebeae0, 0xc000834100}, 0xc0009f0000, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17400 [select]:
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward(0xc001576de0)
github.com/docker/buildx/util/ioset/ioset.go:213 +0x168
created by github.com/docker/buildx/util/ioset.NewSingleForwarder
github.com/docker/buildx/util/ioset/ioset.go:154 +0xca
goroutine 15266 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc000dbcb01?, 0xc0?, 0xc0000ac250?)
runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0xc000dbd968)
sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
sync/mutex.go:90
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000cbe050}, {{0x2668b60, 0xc000cc8000}, 0xc000cbe0f0, {0x1ebeae0, 0xc000864170}, 0xc000cd2018, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:95 +0x2b9
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 266 [select]:
google.golang.org/grpc/internal/transport.(*Stream).waitOnHeader(0xc000466360)
google.golang.org/[email protected]/internal/transport/transport.go:328 +0x7c
google.golang.org/grpc/internal/transport.(*Stream).RecvCompress(...)
google.golang.org/[email protected]/internal/transport/transport.go:343
google.golang.org/grpc.(*csAttempt).recvMsg(0xc0001624e0, {0x2201620?, 0xc0005ba780}, 0x7ff069a45d00?)
google.golang.org/[email protected]/stream.go:1046 +0xc5
google.golang.org/grpc.(*clientStream).RecvMsg.func1(0x0?)
google.golang.org/[email protected]/stream.go:900 +0x25
google.golang.org/grpc.(*clientStream).withRetry(0xc000466000, 0xc000c15a38, 0xc000c15a08)
google.golang.org/[email protected]/stream.go:751 +0x144
google.golang.org/grpc.(*clientStream).RecvMsg(0xc000466000, {0x2201620?, 0xc0005ba780?})
google.golang.org/[email protected]/stream.go:899 +0x125
google.golang.org/grpc.invoke({0x267f4b0?, 0xc00047f900?}, {0x2339108?, 0x416030?}, {0x2287b20, 0xc000a1e3c0}, {0x2201620, 0xc0005ba780}, 0xc000934c08?, {0xc0007a4440, ...})
google.golang.org/[email protected]/call.go:73 +0xd7
github.com/moby/buildkit/util/grpcerrors.UnaryClientInterceptor({0x267f4b0?, 0xc00047f900?}, {0x2339108?, 0x7ff0695d9288?}, {0x2287b20?, 0xc000a1e3c0?}, {0x2201620?, 0xc0005ba780?}, 0x0?, 0x243c570, ...)
github.com/moby/[email protected]/util/grpcerrors/intercept.go:41 +0x84
google.golang.org/grpc.(*ClientConn).Invoke(0x7ff0696d93c8?, {0x267f4b0?, 0xc00047f900?}, {0x2339108?, 0xc000a1e3c0?}, {0x2287b20?, 0xc000a1e3c0?}, {0x2201620?, 0xc0005ba780?}, {0x0, ...})
google.golang.org/[email protected]/call.go:35 +0x223
github.com/moby/buildkit/api/services/control.(*controlClient).Solve(0xc000934da0, {0x267f4b0, 0xc00047f900}, 0xc000672280?, {0x0, 0x0, 0x0})
github.com/moby/[email protected]/api/services/control/control.pb.go:2208 +0xc9
github.com/moby/buildkit/client.(*Client).solve.func2()
github.com/moby/[email protected]/client/solve.go:258 +0x725
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 267 [chan receive]:
github.com/docker/buildx/build.getResultAt.func2.1({0x267f4e8?, 0xc000054100?}, {0x2683be0, 0xc000796400})
github.com/docker/buildx/build/result.go:119 +0x33a
github.com/moby/buildkit/frontend/gateway/grpcclient.(*grpcClient).Run(0xc000796400, {0x267f4e8, 0xc000054100}, 0xc000720ce0)
github.com/moby/[email protected]/frontend/gateway/grpcclient/client.go:214 +0x1bb
github.com/moby/buildkit/client.(*Client).Build.func2({0xc000a1ac61, 0x19}, 0xc000243810, 0x265bf20?)
github.com/moby/[email protected]/client/build.go:59 +0x3cc
github.com/moby/buildkit/client.(*Client).solve.func3()
github.com/moby/[email protected]/client/solve.go:283 +0x5b
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 268 [select]:
google.golang.org/grpc/internal/transport.(*recvBufferReader).readClient(0xc00047fef0, {0xc0004758e8, 0x5, 0x5})
google.golang.org/[email protected]/internal/transport/transport.go:195 +0xa5
google.golang.org/grpc/internal/transport.(*recvBufferReader).Read(0xc00047fef0, {0xc0004758e8?, 0xc000120678?, 0xc00017f9b8?})
google.golang.org/[email protected]/internal/transport/transport.go:175 +0x147
google.golang.org/grpc/internal/transport.(*transportReader).Read(0xc000670c60, {0xc0004758e8?, 0xc00017fa30?, 0xc93bc7?})
google.golang.org/[email protected]/internal/transport/transport.go:495 +0x32
io.ReadAtLeast({0x2661dc0, 0xc000670c60}, {0xc0004758e8, 0x5, 0x5}, 0x5)
io/io.go:332 +0x9a
io.ReadFull(...)
io/io.go:351
google.golang.org/grpc/internal/transport.(*Stream).Read(0xc00014dd40, {0xc0004758e8, 0x5, 0x5})
google.golang.org/[email protected]/internal/transport/transport.go:479 +0xac
google.golang.org/grpc.(*parser).recvMsg(0xc0004758d8, 0x1000000)
google.golang.org/[email protected]/rpc_util.go:561 +0x47
google.golang.org/grpc.recvAndDecompress(0xc000712420?, 0xc00014dd40, {0x0, 0x0}, 0x1000000, 0x0, {0x0, 0x0})
google.golang.org/[email protected]/rpc_util.go:692 +0x66
google.golang.org/grpc.recv(0x4b64fa?, {0x7ff069a45d00, 0x37ab9a0}, 0x35?, {0x0?, 0x0?}, {0x2255240, 0xc000067f80}, 0xc000095cd0?, 0x0, ...)
google.golang.org/[email protected]/rpc_util.go:758 +0x6e
google.golang.org/grpc.(*csAttempt).recvMsg(0xc0007904e0, {0x2255240?, 0xc000067f80}, 0x416030?)
google.golang.org/[email protected]/stream.go:1060 +0x2cc
google.golang.org/grpc.(*clientStream).RecvMsg.func1(0x7ff06992aae8?)
google.golang.org/[email protected]/stream.go:900 +0x25
google.golang.org/grpc.(*clientStream).withRetry(0xc00014db00, 0xc00017fe78, 0xc00017fe48)
google.golang.org/[email protected]/stream.go:735 +0x3be
google.golang.org/grpc.(*clientStream).RecvMsg(0xc00014db00, {0x2255240?, 0xc000067f80?})
google.golang.org/[email protected]/stream.go:899 +0x125
github.com/moby/buildkit/api/services/control.(*controlStatusClient).Recv(0xc0009c9520)
github.com/moby/[email protected]/api/services/control/control.pb.go:2241 +0x4c
github.com/moby/buildkit/client.(*Client).solve.func4()
github.com/moby/[email protected]/client/solve.go:311 +0x112
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 269 [select]:
google.golang.org/grpc.newClientStreamWithParams.func4()
google.golang.org/[email protected]/stream.go:366 +0x92
created by google.golang.org/grpc.newClientStreamWithParams
google.golang.org/[email protected]/stream.go:365 +0xf2a
goroutine 270 [select]:
google.golang.org/grpc.newClientStreamWithParams.func4()
google.golang.org/[email protected]/stream.go:366 +0x92
created by google.golang.org/grpc.newClientStreamWithParams
google.golang.org/[email protected]/stream.go:365 +0xf2a
goroutine 271 [chan receive]:
github.com/moby/buildkit/session.serve.func1()
github.com/moby/[email protected]/session/grpc.go:25 +0x3b
created by github.com/moby/buildkit/session.serve
github.com/moby/[email protected]/session/grpc.go:24 +0xdb
goroutine 17435 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc000dbca01?, 0xc0?, 0xc0000ac250?)
runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0xc000dbd968)
sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
sync/mutex.go:90
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0006e61e0}, {{0x2668b60, 0xc000938780}, 0xc000af54f0, {0x1ebeae0, 0xc001517ad0}, 0xc000a55aa0, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:95 +0x2b9
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 338 [select]:
google.golang.org/grpc/internal/transport.(*recvBufferReader).readClient(0xc00029c230, {0xc0004759d8, 0x5, 0x5})
google.golang.org/[email protected]/internal/transport/transport.go:195 +0xa5
google.golang.org/grpc/internal/transport.(*recvBufferReader).Read(0xc00029c230, {0xc0004759d8?, 0xc000120690?, 0xc00017b810?})
google.golang.org/[email protected]/internal/transport/transport.go:175 +0x147
google.golang.org/grpc/internal/transport.(*transportReader).Read(0xc000670f30, {0xc0004759d8?, 0xc00017b888?, 0xc93bc7?})
google.golang.org/[email protected]/internal/transport/transport.go:495 +0x32
io.ReadAtLeast({0x2661dc0, 0xc000670f30}, {0xc0004759d8, 0x5, 0x5}, 0x5)
io/io.go:332 +0x9a
io.ReadFull(...)
io/io.go:351
google.golang.org/grpc/internal/transport.(*Stream).Read(0xc000980480, {0xc0004759d8, 0x5, 0x5})
google.golang.org/[email protected]/internal/transport/transport.go:479 +0xac
google.golang.org/grpc.(*parser).recvMsg(0xc0004759c8, 0x1000000)
google.golang.org/[email protected]/rpc_util.go:561 +0x47
google.golang.org/grpc.recvAndDecompress(0xc00017ba58?, 0xc000980480, {0x0, 0x0}, 0x1000000, 0x0, {0x0, 0x0})
google.golang.org/[email protected]/rpc_util.go:692 +0x66
google.golang.org/grpc.recv(0xd00000000000040?, {0x7ff069a45d00, 0x37ab9a0}, 0xc00017bae0?, {0x0?, 0x0?}, {0x2200ea0, 0xc000dbc940}, 0xc5a0e5?, 0x0, ...)
google.golang.org/[email protected]/rpc_util.go:758 +0x6e
google.golang.org/grpc.(*csAttempt).recvMsg(0xc0007905b0, {0x2200ea0?, 0xc000dbc940}, 0xc00017bcd0?)
google.golang.org/[email protected]/stream.go:1060 +0x2cc
google.golang.org/grpc.(*clientStream).RecvMsg.func1(0x0?)
google.golang.org/[email protected]/stream.go:900 +0x25
google.golang.org/grpc.(*clientStream).withRetry(0xc00014de60, 0xc00017bcd0, 0xc00017bca0)
google.golang.org/[email protected]/stream.go:735 +0x3be
google.golang.org/grpc.(*clientStream).RecvMsg(0xc00014de60, {0x2200ea0?, 0xc000dbc940?})
google.golang.org/[email protected]/stream.go:899 +0x125
github.com/moby/buildkit/session/grpchijack.(*conn).Read(0xc000243880, {0xc000442d60, 0x9, 0x7ff090dce5b8?})
github.com/moby/[email protected]/session/grpchijack/dial.go:71 +0x1fe
io.ReadAtLeast({0x7ff069a49078, 0xc000243880}, {0xc000442d60, 0x9, 0x9}, 0x9)
io/io.go:332 +0x9a
io.ReadFull(...)
io/io.go:351
golang.org/x/net/http2.readFrameHeader({0xc000442d60?, 0x9?, 0xc000669bf0?}, {0x7ff069a49078?, 0xc000243880?})
golang.org/x/[email protected]/http2/frame.go:237 +0x6e
golang.org/x/net/http2.(*Framer).ReadFrame(0xc000442d20)
golang.org/x/[email protected]/http2/frame.go:498 +0x95
golang.org/x/net/http2.(*serverConn).readFrames(0xc000958480)
golang.org/x/[email protected]/http2/server.go:818 +0x91
created by golang.org/x/net/http2.(*serverConn).serve
golang.org/x/[email protected]/http2/server.go:930 +0x55c
goroutine 17409 [select]:
io.(*pipe).read(0xc0010f5c80, {0xc00140c000, 0x8000, 0xc001448748?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0xc0007209a0?, {0xc00140c000?, 0x1?, 0x8000?})
io/pipe.go:136 +0x25
io.copyBuffer({0x26605e0, 0xc0007209a0}, {0x2662520, 0xc00066d338}, {0x0, 0x0, 0x0})
io/io.go:427 +0x1b2
io.Copy(...)
io/io.go:386
github.com/moby/buildkit/frontend/gateway/grpcclient.(*container).Start.func3()
github.com/moby/[email protected]/frontend/gateway/grpcclient/client.go:901 +0xbf
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17443 [semacquire]:
sync.runtime_Semacquire(0xc000728680?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775301?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000dbd980)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000db1f90}, {{0x2668b10, 0xc0005ab0e0}, 0xc000a3e000, {0x1ebeae0, 0xc000a250c0}, 0xc00091aa80, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).Walk(...)
github.com/docker/buildx/monitor/walker/walker.go:80
github.com/docker/buildx/monitor.RunMonitor.func10.5()
github.com/docker/buildx/monitor/monitor.go:319 +0xcc
created by github.com/docker/buildx/monitor.RunMonitor.func10
github.com/docker/buildx/monitor/monitor.go:318 +0x1fec
goroutine 17274 [semacquire]:
sync.runtime_Semacquire(0x40dbc8?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0x60?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0004d5b40)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/moby/buildkit/frontend/gateway/grpcclient.(*containerProcess).Wait(0xc000a24240?)
github.com/moby/[email protected]/frontend/gateway/grpcclient/client.go:1000 +0x79
github.com/docker/buildx/build.exec({0x267f4b0?, 0xc000db1860}, 0xc0003b3f60?, 0xc0009829c0?, {0x2668b88, 0xc000499320}, {0x266a258?, 0xc000774f98?}, {0x266a280, 0xc000774fb0}, ...)
github.com/docker/buildx/build/invoke.go:149 +0x33b
github.com/docker/buildx/build.(*Container).Exec(0xc0003b3f18?, {0x267f4b0?, 0xc000db1860?}, 0xc0003b3f60?, {0x266a258?, 0xc000774f98?}, {0x266a280?, 0xc000774fb0?}, {0x266a280, 0xc000774fc0}, ...)
github.com/docker/buildx/build/invoke.go:107 +0x125
github.com/docker/buildx/controller/processes.(*Manager).StartProcess.func2()
github.com/docker/buildx/controller/processes/processes.go:166 +0xf6
created by github.com/docker/buildx/controller/processes.(*Manager).StartProcess
github.com/docker/buildx/controller/processes/processes.go:164 +0x7ea
goroutine 17271 [select]:
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward(0xc0007d1080)
github.com/docker/buildx/util/ioset/ioset.go:213 +0x168
created by github.com/docker/buildx/util/ioset.NewSingleForwarder
github.com/docker/buildx/util/ioset/ioset.go:154 +0xca
goroutine 15253 [semacquire]:
sync.runtime_Semacquire(0xc000643040?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775101?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0015b2e80)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000f86050}, {{0x2668b60, 0xc000b2e000}, 0xc0015be3c0, {0x1ebeae0, 0xc0008312f0}, 0xc000c16a20, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17433 [semacquire]:
sync.runtime_Semacquire(0xc000728b60?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000720f01?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0006de2c0)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0006e60f0}, {{0x2668b60, 0xc000938630}, 0xc0006e6190, {0x1ebeae0, 0xc000870f80}, 0xc000d79518, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17270 [select]:
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward(0xc0007d1020)
github.com/docker/buildx/util/ioset/ioset.go:213 +0x168
created by github.com/docker/buildx/util/ioset.NewSingleForwarder
github.com/docker/buildx/util/ioset/ioset.go:154 +0xca
goroutine 16888 [semacquire]:
sync.runtime_Semacquire(0xc000729040?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775101?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000e1c1c0)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000af5720}, {{0x2668b60, 0xc0008869f0}, 0xc000af5770, {0x1ebeae0, 0xc001517c00}, 0xc0003b7800, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17432 [semacquire]:
sync.runtime_Semacquire(0xc0007291e0?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775201?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0006de240)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0006e6050}, {{0x2668b60, 0xc000938570}, 0xc0006e60a0, {0x1ebeae0, 0xc000870e10}, 0xc001567140, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17272 [select]:
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward(0xc0007d10e0)
github.com/docker/buildx/util/ioset/ioset.go:213 +0x168
created by github.com/docker/buildx/util/ioset.NewSingleForwarder
github.com/docker/buildx/util/ioset/ioset.go:154 +0xca
goroutine 17366 [semacquire]:
sync.runtime_Semacquire(0xc000729520?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775101?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0015b2d00)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0015be050}, {{0x2668b60, 0xc0003c3410}, 0xc0015be0a0, {0x1ebeae0, 0xc000830ed0}, 0xc000c16720, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17392 [select]:
io.(*pipe).read(0xc0010f5860, {0xc0006bf000, 0x1000, 0x406301?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0x405d3d?, {0xc0006bf000?, 0xc000b1ef60?, 0xc85a01?})
io/pipe.go:136 +0x25
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward.func1()
github.com/docker/buildx/util/ioset/ioset.go:173 +0xe6
created by github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward
github.com/docker/buildx/util/ioset/ioset.go:169 +0x10b
goroutine 17420 [select]:
github.com/docker/buildx/build.getResultAt({0x267f4e8, 0xc000054108}, _, {{0x37ab9a0, 0x0, 0x0}, 0xc000887050, 0x0, {0xc00083d9c0, 0x19}, ...}, ...)
github.com/docker/buildx/build/result.go:127 +0x37d
github.com/docker/buildx/build.GetResultAtFromResultContext(...)
github.com/docker/buildx/build/result.go:57
github.com/docker/buildx/controller/local.(*localController).Continue(0xc0005658b0, {0x267f4e8, 0xc000054108}, {0x22ff949, 0x5}, 0x0?, {0x267f4e8?, 0xc000054108?}, {0x26826c0, 0xc000012020}, ...)
github.com/docker/buildx/controller/local/controller.go:181 +0x172
github.com/docker/buildx/monitor.RunMonitor.func10.4({{0x2668b60, 0xc00072fe90}, 0xc0009dc000, {0x1ebeae0, 0xc00015deb0}, 0xc0008a29d8, {0x0, 0x0, 0x0}, 0x0})
github.com/docker/buildx/monitor/monitor.go:307 +0x3a4
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0004f3f40}, {{0x2668b60, 0xc00072fe90}, 0xc0009dc000, {0x1ebeae0, 0xc00015deb0}, 0xc0008a29d8, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:124 +0x5da
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17411 [select]:
github.com/docker/buildx/build.exec.func1()
github.com/docker/buildx/build/invoke.go:129 +0x125
created by github.com/docker/buildx/build.exec
github.com/docker/buildx/build/invoke.go:127 +0x325
goroutine 17413 [select]:
io.(*pipe).read(0xc001576900, {0xc0009a8000, 0x1000, 0x0?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0x8?, {0xc0009a8000?, 0x0?, 0xc000d4ab58?})
io/pipe.go:136 +0x25
bufio.(*Reader).fill(0xc0003b2f78)
bufio/bufio.go:106 +0xff
bufio.(*Reader).ReadRune(0xc0003b2f78)
bufio/bufio.go:300 +0x25
github.com/docker/buildx/util/ioset.traceReader.func1()
github.com/docker/buildx/util/ioset/mux.go:198 +0x18f
created by github.com/docker/buildx/util/ioset.traceReader
github.com/docker/buildx/util/ioset/mux.go:195 +0x1aa
goroutine 17275 [select]:
github.com/docker/buildx/controller/processes.(*Process).ForwardIO.func1()
github.com/docker/buildx/controller/processes/processes.go:46 +0xe5
created by github.com/docker/buildx/controller/processes.(*Process).ForwardIO
github.com/docker/buildx/controller/processes/processes.go:44 +0x165
goroutine 17276 [select]:
io.(*pipe).read(0xc0007d0fc0, {0xc000dc6000, 0x1000, 0xc00130e001?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0xc5e77d?, {0xc000dc6000?, 0xc0007f2718?, 0xc85a75?})
io/pipe.go:136 +0x25
github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward.func1()
github.com/docker/buildx/util/ioset/ioset.go:173 +0xe6
created by github.com/docker/buildx/util/ioset.(*SingleForwarder).doForward
github.com/docker/buildx/util/ioset/ioset.go:169 +0x10b
goroutine 17414 [select]:
io.(*pipe).read(0xc0010f5da0, {0xc000496e40, 0x100, 0x10?})
io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0x0?, {0xc000496e40?, 0xc000494240?, 0xc000d150c0?})
io/pipe.go:136 +0x25
golang.org/x/term.(*Terminal).readLine(0xc000496d80)
golang.org/x/[email protected]/terminal.go:789 +0x2e9
golang.org/x/term.(*Terminal).ReadLine(0x267f4e8?)
golang.org/x/[email protected]/terminal.go:716 +0x96
github.com/docker/buildx/monitor.RunMonitor.func10()
github.com/docker/buildx/monitor/monitor.go:148 +0x425
created by github.com/docker/buildx/monitor.RunMonitor
github.com/docker/buildx/monitor/monitor.go:139 +0x1272
goroutine 17446 [semacquire]:
sync.runtime_Semacquire(0xc000c04b60?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775301?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000dbdac0)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e140}, {{0x2668b60, 0xc0003cc9f0}, 0xc000a3e190, {0x1ebeae0, 0xc000a251a0}, 0xc00091ac00, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17447 [semacquire]:
sync.runtime_Semacquire(0xc000c04d00?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000a24f01?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000dbdb40)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e1e0}, {{0x2668b60, 0xc0003cca20}, 0xc000a3e280, {0x1ebeae0, 0xc000a25210}, 0xc000a322e8, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17448 [semacquire]:
sync.runtime_Semacquire(0xc000c04ea0?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000a24e01?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0006de180)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e2d0}, {{0x2668b60, 0xc0003cca80}, 0xc0006e6000, {0x1ebeae0, 0xc000870cd0}, 0xc0015670e0, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17449 [semacquire]:
sync.runtime_Semacquire(0xc000c05040?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775201?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000dbdc00)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e2d0}, {{0x2668b60, 0xc0003ccab0}, 0xc000a3e320, {0x1ebeae0, 0xc000a25280}, 0xc00091ad80, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17450 [semacquire]:
sync.runtime_Semacquire(0xc000c051e0?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000721001?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000dbdc80)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e370}, {{0x2668b60, 0xc0003ccb10}, 0xc000a3e410, {0x1ebeae0, 0xc000a252f0}, 0xc000a32348, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17451 [semacquire]:
sync.runtime_Semacquire(0xc000c05380?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775201?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0015b2bc0)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e460}, {{0x2668b60, 0xc0003ccb70}, 0xc0005dbef0, {0x1ebeae0, 0xc000830c00}, 0xc0005d1ce0, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17452 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc000dbca01?, 0xc0?, 0xc0000ac250?)
runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0xc000dbd968)
sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
sync/mutex.go:90
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e460}, {{0x2668b60, 0xc0003ccba0}, 0xc000af5400, {0x1ebeae0, 0xc001517a80}, 0xc000a55a88, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:95 +0x2b9
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17453 [semacquire]:
sync.runtime_Semacquire(0xc000c056c0?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000a24d01?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000dbddc0)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e460}, {{0x2668b60, 0xc0003ccbd0}, 0xc000a3e500, {0x1ebeae0, 0xc000a25380}, 0xc000a323a8, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17454 [semacquire]:
sync.runtime_Semacquire(0xc000c05860?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775201?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000dbdec0)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e550}, {{0x2668b60, 0xc0003ccc30}, 0xc000a3e6e0, {0x1ebeae0, 0xc000a25450}, 0xc000a32408, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17455 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc000dbca01?, 0xc0?, 0xc0000ac250?)
runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0xc000dbd968)
sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
sync/mutex.go:90
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e550}, {{0x2668b60, 0xc0003ccc60}, 0xc000a3e5f0, {0x1ebeae0, 0xc000a25400}, 0xc000a323f0, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:95 +0x2b9
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17436 [semacquire]:
sync.runtime_Semacquire(0xc000b83d40?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000a24d01?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0006de400)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0006e61e0}, {{0x2668b60, 0xc0009387b0}, 0xc0006e6280, {0x1ebeae0, 0xc000871160}, 0xc000d79578, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17367 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc000dbcc01?, 0xc0?, 0xc0000ac250?)
runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0xc000dbd968)
sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
sync/mutex.go:90
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0015be0f0}, {{0x2668b60, 0xc0003c3470}, 0xc0015be190, {0x1ebeae0, 0xc000831000}, 0xc0005d1e00, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:95 +0x2b9
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17456 [semacquire]:
sync.runtime_Semacquire(0xc000c05ba0?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000a24b01?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000dbdf40)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e730}, {{0x2668b60, 0xc0003cccc0}, 0xc000a3e7d0, {0x1ebeae0, 0xc000a254c0}, 0xc000a32438, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17437 [semacquire]:
sync.runtime_Semacquire(0xc0009824e0?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775201?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0006de500)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0006e62d0}, {{0x2668b60, 0xc000938810}, 0xc0006e6460, {0x1ebeae0, 0xc000871440}, 0xc000d795d8, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17438 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc000dbca01?, 0xc0?, 0xc0000ac250?)
runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0xc000dbd968)
sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
sync/mutex.go:90
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0006e62d0}, {{0x2668b60, 0xc000938840}, 0xc0006e6370, {0x1ebeae0, 0xc000871360}, 0xc000d795c0, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:95 +0x2b9
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17368 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc000dbcb01?, 0xc0?, 0xc0000ac250?)
runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0xc000dbd968)
sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
sync/mutex.go:90
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0015be280}, {{0x2668b60, 0xc0003c34d0}, 0xc0015be320, {0x1ebeae0, 0xc000831220}, 0xc0005d1e30, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:95 +0x2b9
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17457 [semacquire]:
sync.runtime_Semacquire(0xc000c05d40?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775001?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000cc2000)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e820}, {{0x2668b60, 0xc0003ccd20}, 0xc000cbe000, {0x1ebeae0, 0xc000864030}, 0xc000cc0000, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17458 [semacquire]:
sync.runtime_Semacquire(0xc0005836c0?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775101?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000a42000)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e820}, {{0x2668b60, 0xc0003ccd50}, 0xc000a3e870, {0x1ebeae0, 0xc000a25530}, 0xc00091b380, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17421 [chan receive]:
github.com/docker/buildx/build.getResultAt.func1()
github.com/docker/buildx/build/result.go:70 +0x6d
created by github.com/docker/buildx/build.getResultAt
github.com/docker/buildx/build/result.go:68 +0x1f5
goroutine 17439 [semacquire]:
sync.runtime_Semacquire(0xc0009836c0?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000a24b01?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0006de580)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0006e64b0}, {{0x2668b60, 0xc0009388a0}, 0xc0006e6550, {0x1ebeae0, 0xc000871590}, 0xc000d79608, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17422 [select]:
google.golang.org/grpc/internal/transport.(*Stream).waitOnHeader(0xc000467440)
google.golang.org/[email protected]/internal/transport/transport.go:328 +0x7c
google.golang.org/grpc/internal/transport.(*Stream).RecvCompress(...)
google.golang.org/[email protected]/internal/transport/transport.go:343
google.golang.org/grpc.(*csAttempt).recvMsg(0xc0005c65b0, {0x22014e0?, 0xc0004d5e80}, 0x7ff069a45d00?)
google.golang.org/[email protected]/stream.go:1046 +0xc5
google.golang.org/grpc.(*clientStream).RecvMsg.func1(0x0?)
google.golang.org/[email protected]/stream.go:900 +0x25
google.golang.org/grpc.(*clientStream).withRetry(0xc000467200, 0xc000ad96b8, 0xc000ad9688)
google.golang.org/[email protected]/stream.go:751 +0x144
google.golang.org/grpc.(*clientStream).RecvMsg(0xc000467200, {0x22014e0?, 0xc0004d5e80?})
google.golang.org/[email protected]/stream.go:899 +0x125
google.golang.org/grpc.invoke({0x267f4e8?, 0xc000054100?}, {0x2349068?, 0x0?}, {0x22013a0, 0xc0004d5e40}, {0x22014e0, 0xc0004d5e80}, 0x0?, {0xc0007a4440, ...})
google.golang.org/[email protected]/call.go:73 +0xd7
github.com/moby/buildkit/util/grpcerrors.UnaryClientInterceptor({0x267f4e8?, 0xc000054100?}, {0x2349068?, 0x7ff0695baaa8?}, {0x22013a0?, 0xc0004d5e40?}, {0x22014e0?, 0xc0004d5e80?}, 0x0?, 0x243c570, ...)
github.com/moby/[email protected]/util/grpcerrors/intercept.go:41 +0x84
google.golang.org/grpc.(*ClientConn).Invoke(0x7ff0695baaa8?, {0x267f4e8?, 0xc000054100?}, {0x2349068?, 0xc0004d5e40?}, {0x22013a0?, 0xc0004d5e40?}, {0x22014e0?, 0xc0004d5e80?}, {0x0, ...})
google.golang.org/[email protected]/call.go:35 +0x223
github.com/moby/buildkit/api/services/control.(*controlClient).ListWorkers(0xc000930a00, {0x267f4e8, 0xc000054100}, 0x37a56f0?, {0x0, 0x0, 0x0})
github.com/moby/[email protected]/api/services/control/control.pb.go:2280 +0xc9
github.com/moby/buildkit/client.(*Client).ListWorkers(0xc000434ab0, {0x267f4e8, 0xc000054100}, {0x0, 0x0, 0x0?})
github.com/moby/[email protected]/client/workers.go:31 +0x14c
github.com/moby/buildkit/client.(*Client).Build(0xc000434ab0, {0x267f4e8?, _}, {{0x37ab9a0, 0x0, 0x0}, 0xc000887050, 0x0, {0xc00083d9c0, 0x19}, ...}, ...)
github.com/moby/[email protected]/client/build.go:31 +0x165
github.com/docker/buildx/build.getResultAt.func2()
github.com/docker/buildx/build/result.go:94 +0x227
created by github.com/docker/buildx/build.getResultAt
github.com/docker/buildx/build/result.go:88 +0x2df
goroutine 15254 [semacquire]:
sync.runtime_Semacquire(0xc000b66000?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775201?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc000b180c0)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000f86050}, {{0x2668b60, 0xc000b2e030}, 0xc000f860a0, {0x1ebeae0, 0xc0008343c0}, 0xc0009f0180, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17459 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc000dbcc01?, 0xc0?, 0xc0000ac250?)
runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0xc000dbd968)
sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
sync/mutex.go:90
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000a3e8c0}, {{0x2668b60, 0xc0003ccdb0}, 0xc000a3e960, {0x1ebeae0, 0xc000a255a0}, 0xc000a32498, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:95 +0x2b9
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17440 [runnable]:
golang.org/x/sync/errgroup.(*Group).Go(0xc001346000, 0xc001346040)
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0x5a
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0006e65a0}, {{0x2668b60, 0xc000938900}, 0xc001342000, {0x1ebeae0, 0xc00021ac60}, 0xc001344000, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:87 +0x16a
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17473 [semacquire]:
sync.runtime_Semacquire(0xc000983a00?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000775101?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0006de640)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0006e65a0}, {{0x2668b60, 0xc000938930}, 0xc0006e65f0, {0x1ebeae0, 0xc000871700}, 0xc0015677a0, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17474 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc000dbcc01?, 0xc0?, 0xc0000ac250?)
runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0xc000dbd968)
sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
sync/mutex.go:90
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0006e6640}, {{0x2668b60, 0xc000938990}, 0xc0006e66e0, {0x1ebeae0, 0xc000871870}, 0xc000d79668, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:95 +0x2b9
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 15255 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc000dbd101?, 0xc0?, 0xc0000ac250?)
runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0xc000dbd968)
sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
sync/mutex.go:90
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000f860f0}, {{0x2668b60, 0xc000b2e060}, 0xc000f86190, {0x1ebeae0, 0xc000834520}, 0xc000b3e048, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:95 +0x2b9
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17460 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc000dbcc01?, 0xc0?, 0xc0000ac250?)
runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0xc000dbd968)
sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
sync/mutex.go:90
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc000af57c0}, {{0x2668b60, 0xc0003cce10}, 0xc000a3ea50, {0x1ebeae0, 0xc000a25610}, 0xc000a324c8, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:95 +0x2b9
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17369 [semacquire]:
sync.runtime_Semacquire(0xc0015c0000?)
runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc000a24c01?)
sync/waitgroup.go:116 +0x4b
golang.org/x/sync/errgroup.(*Group).Wait(0xc0015b2f00)
golang.org/x/[email protected]/errgroup/errgroup.go:53 +0x27
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0015be410}, {{0x2668b60, 0xc0003c3560}, 0xc0015be4b0, {0x1ebeae0, 0xc0008313d0}, 0xc0005d1e60, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17371 [runnable]:
golang.org/x/sync/errgroup.(*Group).Wait(0xc0015b2fc0)
golang.org/x/[email protected]/errgroup/errgroup.go:52 +0x5a
github.com/docker/buildx/monitor/walker.(*Walker).walk(0xc000dbd940, {0x267f4b0, 0xc0015be500}, {{0x2668b60, 0xc0003c35f0}, 0xc0015be5a0, {0x1ebeae0, 0xc000831540}, 0xc0005d1ef0, {0x0, ...}, ...}, ...)
github.com/docker/buildx/monitor/walker/walker.go:91 +0x277
github.com/docker/buildx/monitor/walker.(*Walker).walk.func1()
github.com/docker/buildx/monitor/walker/walker.go:88 +0xbb
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
goroutine 17372 [runnable]:
golang.org/x/sync/errgroup.(*Group).Go.func1()
golang.org/x/[email protected]/errgroup/errgroup.go:72
created by golang.org/x/sync/errgroup.(*Group).Go
golang.org/x/[email protected]/errgroup/errgroup.go:72 +0xa5
Thank you for the reproducer. Fixed the patch not to panic.
Rebased.
rebased
@ktock Do you think walking the definitionOp from build result is enough for all the cases we would want to support in the DAP debugger or would we need to add some of the functionality directly to frontends. If not making the frontends understand DAP protocol itself then would it help to add some requests there that help buildx do the correct things on client side. We have the subrequests support in frontends so theoretically this can be added in backward compatible manner.
I also wonder what to do with frontend that chain multiple long builds (evaluate in the middle). With the current structure, we can only debug the result of the final solve request that was returned.
Another case would be when for example, I have Dockerfile with 2 stages. I add a breakpoint to the beginning of first stage but I have an error in the base image of the second stage. Now my build will fail before it ever gets to debugging although visually this was later in my code and I only want to debug the first stage atm. before getting to the second one. But because images need to be resolved before DefinitionOp can be created for build result then this needs to run first in frontend.
Is there a good way we could also show the LLB operations that do not map directly to the source code but still participate in the execution path? Maybe a "fake" source file to LLB definition (like gdb shows machine code if no source I believe).
What should the "call stack" mean in our case? Should we put the whole LLB parent chain there? I guess that we have multiple inputs for steps is problematic for this data structure as well. I haven't fully investigated what are all the capabilities in DAP (or vscode extension).
Is there a point in trying to combine the "Buildx Interactive Debugger" command and monitor mode commands or are they completely different?
I think this should also be part of buildx repo or maybe we can introduce a VS Code extension for buildx with support for other features as well?
What do you mean by "other features" in here. Generally, I agree on taking the extension under buildx umbrella, but we can do that after the quick prototype phase.
chain multiple long builds
So far I haven't encountered this kind of problems for Dockerfile debugging but if we want to handle this case (e.g. for non-Dockerfile sources?), then I think walker needs to be implemented in the frontend. To make DAP server work on that frontend, it needs to provide breakpoint-related APIs like implemented by the current walker.Controller.
a "fake" source file to LLB definition
SGTM.
What should the "call stack" mean in our case? Should we put the whole LLB parent chain there? I guess that we have multiple inputs for steps is problematic for this data structure as well. I haven't fully investigated what are all the capabilities in DAP (or vscode extension).
I'm not sure LLB has "call stack" as it doesn't have stack nor call instruction. Some frontends (e.g. HLB) seem to have their own "function" feature so maybe these source languages have their own definition of call stack?
Is there a point in trying to combine the "Buildx Interactive Debugger" command and monitor mode commands or are they completely different?
I've added the interactive debugger to monitor because both of them are debugging-related features. But having the interactive debugger as a separated CLI/subcommand sounds also ok to me.
"other features"
I don't have a concrete proposal for this as of now but what this patch doesn't cover is LSP-based extensions. (But there are already LSP extensions for Dockerfile in community so I'm not sure if there are unique features we can provide.)
To make DAP server work on that frontend, it needs to provide breakpoint-related APIs like implemented by the current walker.Controller.
I was thinking something like:
- New buildkit exposes that it has a debug capability on the grpc protobuf API. If such cap is detected client can ask "build in debug mode"
- When such frontend is started it runs normally, except when it makes llbBridge calls to
Solve/ResolveImageConfigthese would stop in BuildKit before the sent back to frontend. Now client is sent the ref for the intermediate graph. It can debug it and eventually it will send some continue signal to buildkit. That would release the result being sent to frontend and it can continue processing it. - I think this should work with just a BuildKit update. No frontend updates needed. Frontend just needs to provide the source mappings. There are some other things in DAP though that I need to look into more (completions, expressions, setting breakpoints by expression) that might need functions implemented by frontend. There is also a way to detect if line can have a breakpoint that looks quite useful. With single-shot builds we could detect this from LLB based on source mapping but for the chained scenario, I don't think it is possible without frontend changes.
I guess in this blocked mode all solves should be serial as well and not run in parallel.
I'm not sure LLB has "call stack" as it doesn't have stack nor call instruction. Some frontends (e.g. HLB) seem to have their own "function" feature so maybe these source languages have their own definition of call stack?
Technically every stage in Dockerfile could be a separate debug thread and all serial commands in a stage could be part of the stack. Maybe this is too much information though.
Otoh step-over should go next line in Dockerfile, step-in could go to the first command of the inner stage for commands like COPY --from=. Backwards movement could be supported as well. I don't think we can support variable modifications as that would mean generating new LLB (unless we do whole rebuild).
patch doesn't cover is LSP-based extensions.
Are these directly related to debugger? Some examples what you think in here?
Question: in a classical debugger, breakpoint in a line runs before that line runs. In Dockerfile I think both cases could make sense. Eg. if I have a line like RUN --mount=from=foo,target=/foo mycmd (or even COPY --from=foo /abc /def) if I add a breakpoint to that line in order to run debug container in that place I think I would expect to get to the shell where /foo is already mounted or /def copied. The problem is also about how to debug the last line of the stage. I think one of the most common cases is to get a debug container from the end of the stage, to prototype with new commands that would eventually be added to that stage.


