chainguard-dev / go-apk

native go library for installation and management of apk packages
Apache License 2.0
29 stars 27 forks source link

concurrent map read/write in memfs #23

Closed mattmoor closed 1 year ago

mattmoor commented 1 year ago

Saw this in tf-apko's presubmit testing. It was just once, but also without -race so perhaps that'll flush it out quicker because I've never seen this before.

cc @deitch

Full panic trace below:

fatal error: concurrent map read and map write

goroutine 3647 [running]:
github.com/chainguard-dev/go-apk/pkg/fs.(*memFS).OpenFile(0xc000813560, {0xc000f60150, 0x22}, 0x242, 0x1a4)
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/fs/memfs.go:215 +0x118
github.com/chainguard-dev/go-apk/pkg/fs.(*memFS).WriteFile(0xc0016de0f0?, {0xc000f60150?, 0xc00056f180?}, {0x0, 0x0, 0x0}, 0x529ab1?)
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/fs/memfs.go:259 +0x6d
github.com/chainguard-dev/go-apk/pkg/fs.(*dirFS).WriteFile(0xc0009182d0, {0xc000f60150, 0x22}, {0xc00056f180, 0x320, 0x380}, 0x0?)
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/fs/rwosfs.go:422 +0x117
github.com/chainguard-dev/go-apk/pkg/apk.(*APK).InitKeyring.func1()
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/apk/implementation.go:381 +0x51f
golang.org/x/sync/errgroup.(*Group).Go.func1()
    /home/runner/go/pkg/mod/golang.org/x/sync@v0.1.0/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
    /home/runner/go/pkg/mod/golang.org/x/sync@v0.1.0/errgroup/errgroup.go:72 +0xa5

goroutine 1 [chan receive]:
testing.(*T).Run(0xc000482680, {0x1702e7e?, 0x56c745?}, 0x1761898)
    /opt/hostedtoolcache/go/1.20.3/x64/src/testing/testing.go:1630 +0x405
testing.runTests.func1(0x23434a0?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/testing/testing.go:2036 +0x45
testing.tRunner(0xc000482680, 0xc0002d1c80)
    /opt/hostedtoolcache/go/1.20.3/x64/src/testing/testing.go:1576 +0x10b
testing.runTests(0xc00018c0a0?, {0x23278a0, 0x6, 0x6}, {0x80?, 0x17fb3841dd298?, 0x2342a00?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/testing/testing.go:2034 +0x489
testing.(*M).Run(0xc00018c0a0)
    /opt/hostedtoolcache/go/1.20.3/x64/src/testing/testing.go:1906 +0x63a
main.main()
    _testmain.go:88 +0x1c5

goroutine 2754 [semacquire]:
sync.runtime_Semacquire(0xc0007d46e0?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc00053c2c0?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/sync/waitgroup.go:116 +0x4b
github.com/hashicorp/terraform-exec/tfexec.(*Terraform).runTerraformCmd(0xc002ae2340, {0x19112a0, 0xc0000460f8}, 0xc00053c2c0)
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-exec@v0.18.1/tfexec/cmd_linux.go:75 +0x4d5
github.com/hashicorp/terraform-exec/tfexec.(*Terraform).Apply(0x1911310?, {0x19112a0, 0xc0000460f8}, {0xc00041e200?, 0x16fe663?, 0x23?})
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-exec@v0.18.1/tfexec/apply.go:100 +0x59
github.com/hashicorp/terraform-plugin-testing/internal/plugintest.(*WorkingDir).Apply(0xc0005b1270, {0x1911310, 0xc0000263f0})
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/internal/plugintest/working_dir.go:244 +0x1e5
github.com/hashicorp/terraform-plugin-testing/helper/resource.testStepNewConfig.func5()
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/helper/resource/testing_new_config.go:89 +0x25
github.com/hashicorp/terraform-plugin-testing/helper/resource.runProviderCommand({0x1911310, 0xc0000263f0}, {0x191cd60, 0xc000808000}, 0xc00053a018, 0xc0005b1270, 0xc00053a600)
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/helper/resource/plugin.go:438 +0x27eb
github.com/hashicorp/terraform-plugin-testing/helper/resource.testStepNewConfig({_, _}, {_, _}, {0x0, 0xc0003ae7c0, 0x0, 0x0, 0xc0008b2fc0, 0x0, ...}, ...)
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/helper/resource/testing_new_config.go:88 +0x745
github.com/hashicorp/terraform-plugin-testing/helper/resource.runNewTest({0x1911310, 0xc0000263f0}, {0x191cd60, 0xc000808000}, {0x0, 0xc0003ae7c0, 0x0, 0x0, 0xc0008b2fc0, 0x0, ...}, ...)
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/helper/resource/testing_new.go:295 +0x1370
github.com/hashicorp/terraform-plugin-testing/helper/resource.Test({0x191cd60, 0xc000808000}, {0x0, 0xc0003ae7c0, 0x0, 0x0, 0xc0008b2fc0, 0x0, 0x0, 0x0, ...})
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/helper/resource/testing.go:827 +0x64f
github.com/chainguard-dev/terraform-provider-apko/internal/provider.TestAccResourceApkoBuild_ProviderOpts(0xc000808000)
    /home/runner/work/terraform-provider-apko/terraform-provider-apko/internal/provider/resource_build_test.go:120 +0x7cb
testing.tRunner(0xc000808000, 0x1761898)
    /opt/hostedtoolcache/go/1.20.3/x64/src/testing/testing.go:1576 +0x10b
created by testing.(*T).Run
    /opt/hostedtoolcache/go/1.20.3/x64/src/testing/testing.go:1629 +0x3ea

goroutine 3602 [select]:
github.com/hashicorp/go-plugin.(*gRPCBrokerServer).Recv(0xc0007d4230?)
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_broker.go:124 +0x67
github.com/hashicorp/go-plugin.(*GRPCBroker).Run(0xc0007d43c0)
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_broker.go:414 +0x44
created by github.com/hashicorp/go-plugin.(*GRPCServer).Init
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_server.go:88 +0x46a

goroutine 3608 [IO wait]:
internal/poll.runtime_pollWait(0x7fb37cfc1af0, 0x72)
    /opt/hostedtoolcache/go/1.20.3/x64/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc00133e660?, 0xc0012ee000?, 0x1)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00133e660, {0xc0012ee000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_unix.go:167 +0x299
os.(*File).read(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/os/file_posix.go:31
os.(*File).Read(0xc00048e448, {0xc0012ee000?, 0xc0006add40?, 0x418410?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/os/file.go:118 +0x5e
bufio.(*Reader).fill(0xc0006adf08)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:106 +0xff
bufio.(*Reader).ReadSlice(0xc0006adf08, 0x60?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:372 +0x2f
bufio.(*Reader).collectFragments(0x38?, 0x8d?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:447 +0x74
bufio.(*Reader).ReadBytes(0x19112a0?, 0xf8?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:474 +0x1d
github.com/hashicorp/terraform-exec/tfexec.writeOutput({0x19112a0?, 0xc0000460f8}, {0x190cca0?, 0xc00048e448}, {0x1904aa0, 0xc000856840})
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-exec@v0.18.1/tfexec/cmd.go:260 +0x294
github.com/hashicorp/terraform-exec/tfexec.(*Terraform).runTerraformCmd.func2()
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-exec@v0.18.1/tfexec/cmd_linux.go:70 +0x79
created by github.com/hashicorp/terraform-exec/tfexec.(*Terraform).runTerraformCmd
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-exec@v0.18.1/tfexec/cmd_linux.go:68 +0x4cb

goroutine 3053 [IO wait]:
internal/poll.runtime_pollWait(0x7fb37ce8cb28, 0x72)
    /opt/hostedtoolcache/go/1.20.3/x64/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc000d27780?, 0xc0005dd000?, 0x0)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000d27780, {0xc0005dd000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc000d27780, {0xc0005dd000?, 0x2?, 0x2329c00?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc0022d0088, {0xc0005dd000?, 0x0?, 0x0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/net.go:183 +0x45
net/http.(*persistConn).Read(0xc00015c120, {0xc0005dd000?, 0x44d4e0?, 0xc0006a9ec8?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:1943 +0x4e
bufio.(*Reader).fill(0xc000776780)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:106 +0xff
bufio.(*Reader).Peek(0xc000776780, 0x1)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:144 +0x5d
net/http.(*persistConn).readLoop(0xc00015c120)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:2107 +0x1ac
created by net/http.(*Transport).dialConn
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:1765 +0x16ea

goroutine 3636 [select]:
net/http.(*http2ClientConn).RoundTrip(0xc00129cf00, 0xc000497400)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:8231 +0x491
net/http.(*http2Transport).RoundTripOpt(0xc0002d0360, 0xc000497400, {0xc0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:7523 +0x1c5
net/http.(*http2Transport).RoundTrip(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:7475
net/http.http2noDialH2RoundTripper.RoundTrip({0x2329e80?}, 0xc000497400?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:10060 +0x1b
net/http.(*Transport).roundTrip(0x2329e80, 0xc000497400)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:548 +0x3ca
net/http.(*Transport).RoundTrip(0x100?, 0x1904660?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/roundtrip.go:17 +0x19
net/http.send(0xc000497400, {0x1904660, 0x2329e80}, {0x8?, 0x169b2e0?, 0x0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/client.go:252 +0x5f7
net/http.(*Client).send(0xc00048c870, 0xc000497400, {0xc00088629a?, 0x1b?, 0x0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/client.go:176 +0x9b
net/http.(*Client).do(0xc00048c870, 0xc000497400)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/client.go:716 +0x8fb
net/http.(*Client).Do(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/client.go:582
net/http.(*Client).Get(0xc0005557a0?, {0xc000886280?, 0xc0002b9028?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/client.go:480 +0x6a
github.com/chainguard-dev/go-apk/pkg/apk.GetRepositoryIndexes({0xc000b881a0, 0x2, 0xc000f0b4b8?}, 0xc0002b9218, {0xc002a094f0, 0x7}, {0xc0002b91b8, 0x2, 0x14611e0?})
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/apk/index.go:97 +0x3e5
github.com/chainguard-dev/go-apk/pkg/apk.(*APK).getRepositoryIndexes(0xc000000ba0, 0x0)
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/apk/repo.go:142 +0x6af
github.com/chainguard-dev/go-apk/pkg/apk.(*APK).ResolveWorld(0xc000000ba0)
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/apk/implementation.go:399 +0x53
github.com/chainguard-dev/go-apk/pkg/apk.(*APK).FixateWorld(0xc000000ba0, 0xc001916870?)
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/apk/implementation.go:430 +0xc5
chainguard.dev/apko/pkg/apk.(*APK).Install(...)
    /home/runner/go/pkg/mod/chainguard.dev/apko@v0.8.1-0.20230505234243-87f7f0ff54fa/pkg/apk/apk.go:116
chainguard.dev/apko/pkg/build.(*defaultBuildImplementation).InstallPackages(0xc001916870?, {0x191d140?, 0xc000918570?}, 0xc000813cb0?, 0x7fb3ad55a108?)
    /home/runner/go/pkg/mod/chainguard.dev/apko@v0.8.1-0.20230505234243-87f7f0ff54fa/pkg/build/build_implementation.go:216 +0xb5
chainguard.dev/apko/pkg/build.buildImage({0x191d140, 0xc000918570}, {0x191cea0, 0xc000813830}, 0xc000ddd380, 0x4?, 0x5?)
    /home/runner/go/pkg/mod/chainguard.dev/apko@v0.8.1-0.20230505234243-87f7f0ff54fa/pkg/build/build_implementation.go:271 +0x232
chainguard.dev/apko/pkg/build.(*Context).BuildImage(0xc000ddd180)
    /home/runner/go/pkg/mod/chainguard.dev/apko@v0.8.1-0.20230505234243-87f7f0ff54fa/pkg/build/build.go:88 +0x6d
chainguard.dev/apko/pkg/build.(*Context).BuildLayer(0xc000ddd180?)
    /home/runner/go/pkg/mod/chainguard.dev/apko@v0.8.1-0.20230505234243-87f7f0ff54fa/pkg/build/build.go:122 +0x28
github.com/chainguard-dev/terraform-provider-apko/internal/provider.doBuild.func1()
    /home/runner/work/terraform-provider-apko/terraform-provider-apko/internal/provider/build.go:97 +0x12a
golang.org/x/sync/errgroup.(*Group).Go.func1()
    /home/runner/go/pkg/mod/golang.org/x/sync@v0.1.0/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
    /home/runner/go/pkg/mod/golang.org/x/sync@v0.1.0/errgroup/errgroup.go:72 +0xa5

goroutine 3605 [chan receive]:
github.com/hashicorp/terraform-plugin-testing/helper/resource.runProviderCommand.func6(0xc00041e1c0?)
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/helper/resource/plugin.go:414 +0x25
created by github.com/hashicorp/terraform-plugin-testing/helper/resource.runProviderCommand
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/helper/resource/plugin.go:413 +0x260a

goroutine 3621 [IO wait]:
internal/poll.runtime_pollWait(0x7fb37ce8cfd8, 0x72)
    /opt/hostedtoolcache/go/1.20.3/x64/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc000d26280?, 0xc000380000?, 0x0)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000d26280, {0xc000380000, 0x8000, 0x8000})
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc000d26280, {0xc000380000?, 0x1060100000000?, 0x8?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc0022d0008, {0xc000380000?, 0x18?, 0x23434a0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/net.go:183 +0x45
bufio.(*Reader).Read(0xc000e8a180, {0xc000108d60, 0x9, 0x0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:237 +0x1bb
io.ReadAtLeast({0x18fed40, 0xc000e8a180}, {0xc000108d60, 0x9, 0x9}, 0x9)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:332 +0x9a
io.ReadFull(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:351
golang.org/x/net/http2.readFrameHeader({0xc000108d60?, 0x9?, 0xc001112420?}, {0x18fed40?, 0xc000e8a180?})
    /home/runner/go/pkg/mod/golang.org/x/net@v0.9.0/http2/frame.go:237 +0x6e
golang.org/x/net/http2.(*Framer).ReadFrame(0xc000108d20)
    /home/runner/go/pkg/mod/golang.org/x/net@v0.9.0/http2/frame.go:498 +0x95
google.golang.org/grpc/internal/transport.(*http2Server).HandleStreams(0xc00047c820, 0x0?, 0x0?)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/http2_server.go:637 +0x174
google.golang.org/grpc.(*Server).serveStreams(0xc000545e00, {0x1918a40?, 0xc00047c820})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:950 +0x189
google.golang.org/grpc.(*Server).handleRawConn.func1()
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:892 +0x46
created by google.golang.org/grpc.(*Server).handleRawConn
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:891 +0x185

goroutine 3616 [select]:
github.com/hashicorp/go-plugin.(*gRPCBrokerServer).StartStream.func1()
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_broker.go:73 +0x105
created by github.com/hashicorp/go-plugin.(*gRPCBrokerServer).StartStream
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_broker.go:71 +0x131

goroutine 3073 [select]:
net/http.(*persistConn).writeLoop(0xc001218120)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:2410 +0xf2
created by net/http.(*Transport).dialConn
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:1766 +0x173d

goroutine 3615 [select]:
google.golang.org/grpc/internal/transport.(*recvBufferReader).read(0xc0007d4a50, {0xc000fcc298, 0x5, 0x5})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:183 +0x90
google.golang.org/grpc/internal/transport.(*recvBufferReader).Read(0xc0007d4a50, {0xc000fcc298?, 0xc001112318?, 0xc00075f668?})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:177 +0x178
google.golang.org/grpc/internal/transport.(*transportReader).Read(0xc0006a3590, {0xc000fcc298?, 0xc00075f6e0?, 0x10d3a67?})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:514 +0x32
io.ReadAtLeast({0x1903b00, 0xc0006a3590}, {0xc000fcc298, 0x5, 0x5}, 0x5)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:332 +0x9a
io.ReadFull(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:351
google.golang.org/grpc/internal/transport.(*Stream).Read(0xc000448a20, {0xc000fcc298, 0x5, 0x5})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:498 +0xac
google.golang.org/grpc.(*parser).recvMsg(0xc000fcc288, 0x10000000)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/rpc_util.go:597 +0x47
google.golang.org/grpc.recvAndDecompress(0x0?, 0xc000448a20, {0x0, 0x0}, 0x10000000, 0x0, {0x0, 0x0})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/rpc_util.go:729 +0x66
google.golang.org/grpc.recv(0x1575b60?, {0x7fb37cf547d8, 0x2373278}, 0x10b869d?, {0x0?, 0x0?}, {0x164a740, 0xc0007d4aa0}, 0xc0007d4830?, 0x0, ...)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/rpc_util.go:795 +0x6e
google.golang.org/grpc.(*serverStream).RecvMsg(0xc00074a000, {0x164a740?, 0xc0007d4aa0})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/stream.go:1699 +0x178
github.com/hashicorp/go-plugin/internal/plugin.(*gRPCBrokerStartStreamServer).Recv(0xc000d50340)
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/internal/plugin/grpc_broker.pb.go:167 +0x4c
github.com/hashicorp/go-plugin.(*gRPCBrokerServer).StartStream(0xc0006a2c60, {0x19179f0, 0xc000d50340})
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_broker.go:87 +0x150
github.com/hashicorp/go-plugin/internal/plugin._GRPCBroker_StartStream_Handler({0x1552de0?, 0xc0006a2c60}, {0x1914810?, 0xc00074a000})
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/internal/plugin/grpc_broker.pb.go:148 +0x9f
google.golang.org/grpc.(*Server).processStreamingRPC(0xc000545e00, {0x1918a40, 0xc000832340}, 0xc000448a20, 0xc0006a2cf0, 0x231dc20, 0x0)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:1639 +0x1384
google.golang.org/grpc.(*Server).handleStream(0xc000545e00, {0x1918a40, 0xc000832340}, 0xc000448a20, 0x0)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:1726 +0x9f0
google.golang.org/grpc.(*Server).serveStreams.func1.2()
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:966 +0x98
created by google.golang.org/grpc.(*Server).serveStreams.func1
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:964 +0x28a

goroutine 3580 [select]:
google.golang.org/grpc/internal/transport.(*recvBufferReader).read(0xc000fc68c0, {0xc000fcc838, 0x5, 0x5})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:183 +0x90
google.golang.org/grpc/internal/transport.(*recvBufferReader).Read(0xc000fc68c0, {0xc000fcc838?, 0xc000f0a990?, 0xc00049e668?})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:177 +0x178
google.golang.org/grpc/internal/transport.(*transportReader).Read(0xc0003fb2f0, {0xc000fcc838?, 0xc00049e6e0?, 0x10d3a67?})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:514 +0x32
io.ReadAtLeast({0x1903b00, 0xc0003fb2f0}, {0xc000fcc838, 0x5, 0x5}, 0x5)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:332 +0x9a
io.ReadFull(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:351
google.golang.org/grpc/internal/transport.(*Stream).Read(0xc00015c360, {0xc000fcc838, 0x5, 0x5})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:498 +0xac
google.golang.org/grpc.(*parser).recvMsg(0xc000fcc828, 0x10000000)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/rpc_util.go:597 +0x47
google.golang.org/grpc.recvAndDecompress(0xf46319?, 0xc00015c360, {0x0, 0x0}, 0x10000000, 0x0, {0x0, 0x0})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/rpc_util.go:729 +0x66
google.golang.org/grpc.recv(0xc0006fe900?, {0x7fb37cf547d8, 0x2373278}, 0x1642640?, {0x0?, 0x0?}, {0x164a740, 0xc0007d5400}, 0xc0006fe900?, 0x0, ...)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/rpc_util.go:795 +0x6e
google.golang.org/grpc.(*serverStream).RecvMsg(0xc00074a0f0, {0x164a740?, 0xc0007d5400})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/stream.go:1699 +0x178
github.com/hashicorp/go-plugin/internal/plugin.(*gRPCBrokerStartStreamServer).Recv(0xc0012162c0)
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/internal/plugin/grpc_broker.pb.go:167 +0x4c
github.com/hashicorp/go-plugin.(*gRPCBrokerServer).StartStream(0xc0006a2c60, {0x19179f0, 0xc0012162c0})
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_broker.go:87 +0x150
github.com/hashicorp/go-plugin/internal/plugin._GRPCBroker_StartStream_Handler({0x1552de0?, 0xc0006a2c60}, {0x1914810?, 0xc00074a0f0})
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/internal/plugin/grpc_broker.pb.go:148 +0x9f
google.golang.org/grpc.(*Server).processStreamingRPC(0xc000545e00, {0x1918a40, 0xc00047c820}, 0xc00015c360, 0xc0006a2cf0, 0x231dc20, 0x0)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:1639 +0x1384
google.golang.org/grpc.(*Server).handleStream(0xc000545e00, {0x1918a40, 0xc00047c820}, 0xc00015c360, 0x0)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:1726 +0x9f0
google.golang.org/grpc.(*Server).serveStreams.func1.2()
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:966 +0x98
created by google.golang.org/grpc.(*Server).serveStreams.func1
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:964 +0x28a
internal/poll.(*pollDesc).wait(0xc000f0dd80?, 0xc00283e000?, 0x0)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000f0dd80, {0xc00283e000, 0xa000, 0xa000})
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc000f0dd80, {0xc00283e000?, 0xc00283e060?, 0x33a?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc00048eea0, {0xc00283e000?, 0x444351?, 0xc00128f330?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/net.go:183 +0x45
crypto/tls.(*atLeastReader).Read(0xc000b7e228, {0xc00283e000?, 0xc000b7e228?, 0x0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/crypto/tls/conn.go:788 +0x3d
bytes.(*Buffer).ReadFrom(0xc00128f410, {0x18ff040, 0xc000b7e228})
    /opt/hostedtoolcache/go/1.20.3/x64/src/bytes/buffer.go:202 +0x98
crypto/tls.(*Conn).readFromUntil(0xc00128f180, {0x1904520?, 0xc00048eea0}, 0x9fa5?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/crypto/tls/conn.go:810 +0xe5
crypto/tls.(*Conn).readRecordOrCCS(0xc00128f180, 0x0)
    /opt/hostedtoolcache/go/1.20.3/x64/src/crypto/tls/conn.go:617 +0x116
crypto/tls.(*Conn).readRecord(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/crypto/tls/conn.go:583
crypto/tls.(*Conn).Read(0xc00128f180, {0xc0014e2000, 0x1000, 0x8ecc80?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/crypto/tls/conn.go:1316 +0x16f
bufio.(*Reader).Read(0xc00133fa40, {0xc0007184a0, 0x9, 0x90a905?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:237 +0x1bb
io.ReadAtLeast({0x18fed40, 0xc00133fa40}, {0xc0007184a0, 0x9, 0x9}, 0x9)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:332 +0x9a
io.ReadFull(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:351
net/http.http2readFrameHeader({0xc0007184a0?, 0x9?, 0xc0006a3800?}, {0x18fed40?, 0xc00133fa40?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:1567 +0x6e
net/http.(*http2Framer).ReadFrame(0xc000718460)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:1831 +0x95
net/http.(*http2clientConnReadLoop).run(0xc0003c8f98)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:9187 +0x12e
net/http.(*http2ClientConn).readLoop(0xc00129cf00)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:9082 +0x6f
created by net/http.(*http2Transport).newClientConn
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:7779 +0xc3c

goroutine 3620 [select]:
google.golang.org/grpc/internal/transport.(*http2Server).keepalive(0xc00047c820)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/http2_server.go:[115](https://github.com/chainguard-dev/terraform-provider-apko/actions/runs/4916989168/jobs/8781471552?pr=52#step:7:116)0 +0x233
created by google.golang.org/grpc/internal/transport.NewServerTransport
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/http2_server.go:339 +0x1af8

goroutine 3072 [IO wait]:
internal/poll.runtime_pollWait(0x7fb37cfc[119](https://github.com/chainguard-dev/terraform-provider-apko/actions/runs/4916989168/jobs/8781471552?pr=52#step:7:120)0, 0x72)
    /opt/hostedtoolcache/go/1.20.3/x64/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc00053e600?, 0xc000370000?, 0x0)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00053e600, {0xc000370000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc00053e600, {0xc000370000?, 0x2?, 0x2329c00?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc00087c7d8, {0xc000370000?, 0x0?, 0x0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/net.go:183 +0x45
net/http.(*persistConn).Read(0xc001218[120](https://github.com/chainguard-dev/terraform-provider-apko/actions/runs/4916989168/jobs/8781471552?pr=52#step:7:121), {0xc000370000?, 0x44d4e0?, 0xc0006a8ec8?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:1943 +0x4e
bufio.(*Reader).fill(0xc000da0cc0)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:106 +0xff
bufio.(*Reader).Peek(0xc000da0cc0, 0x1)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:144 +0x5d
net/http.(*persistConn).readLoop(0xc00[121](https://github.com/chainguard-dev/terraform-provider-apko/actions/runs/4916989168/jobs/8781471552?pr=52#step:7:122)8120)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:2107 +0x1ac
created by net/http.(*Transport).dialConn
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:1765 +0x16ea

goroutine 3054 [select]:
net/http.(*persistConn).writeLoop(0xc00015c120)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:2410 +0xf2
created by net/http.(*Transport).dialConn
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:1766 +0x173d

goroutine 3610 [select]:
github.com/hashicorp/terraform-exec/tfexec.writeOutput.func1()
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-exec@v0.18.1/tfexec/cmd.go:250 +0xa6
created by github.com/hashicorp/terraform-exec/tfexec.writeOutput
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-exec@v0.18.1/tfexec/cmd.go:249 +0x14a

goroutine 3619 [select]:
google.golang.org/grpc/internal/transport.(*controlBuffer).get(0xc000fc66e0, 0x1)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/controlbuf.go:417 +0x115
google.golang.org/grpc/internal/transport.(*loopyWriter).run(0xc0004d2850)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/controlbuf.go:549 +0x91
google.golang.org/grpc/internal/transport.NewServerTransport.func2()
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/http2_server.go:336 +0xce
created by google.golang.org/grpc/internal/transport.NewServerTransport
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/http2_server.go:333 +0x1ab3

goroutine 3577 [select]:
github.com/hashicorp/go-plugin.(*grpcStdioServer).StreamStdio(0xc000e557c0, 0x1587300?, {0x1916a80, 0xc000e55c50})
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_stdio.go:61 +0x11d
github.com/hashicorp/go-plugin/internal/plugin._GRPCStdio_StreamStdio_Handler({0x14b4600?, 0xc000e557c0}, {0x1914810, 0xc0006040f0})
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/internal/plugin/grpc_stdio.pb.go:185 +0xd0
google.golang.org/grpc.(*Server).processStreamingRPC(0xc000545e00, {0x1918a40, 0xc000832340}, 0xc000239e60, 0xc0006a2ea0, 0x231dc40, 0x0)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:1639 +0x[138](https://github.com/chainguard-dev/terraform-provider-apko/actions/runs/4916989168/jobs/8781471552?pr=52#step:7:139)4
google.golang.org/grpc.(*Server).handleStream(0xc000545e00, {0x1918a40, 0xc000832340}, 0xc000239e60, 0x0)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:[172](https://github.com/chainguard-dev/terraform-provider-apko/actions/runs/4916989168/jobs/8781471552?pr=52#step:7:173)6 +0x9f0
google.golang.org/grpc.(*Server).serveStreams.func1.2()
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:966 +0x98
created by google.golang.org/grpc.(*Server).serveStreams.func1
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:964 +0x28afatal error: concurrent map read and map write

goroutine 3647 [running]:
github.com/chainguard-dev/go-apk/pkg/fs.(*memFS).OpenFile(0xc000813560, {0xc000f60150, 0x22}, 0x242, 0x1a4)
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/fs/memfs.go:215 +0x118
github.com/chainguard-dev/go-apk/pkg/fs.(*memFS).WriteFile(0xc0016de0f0?, {0xc000f60150?, 0xc00056f180?}, {0x0, 0x0, 0x0}, 0x529ab1?)
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/fs/memfs.go:259 +0x6d
github.com/chainguard-dev/go-apk/pkg/fs.(*dirFS).WriteFile(0xc0009182d0, {0xc000f60150, 0x22}, {0xc00056f180, 0x320, 0x380}, 0x0?)
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/fs/rwosfs.go:422 +0x117
github.com/chainguard-dev/go-apk/pkg/apk.(*APK).InitKeyring.func1()
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/apk/implementation.go:381 +0x51f
golang.org/x/sync/errgroup.(*Group).Go.func1()
    /home/runner/go/pkg/mod/golang.org/x/sync@v0.1.0/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
    /home/runner/go/pkg/mod/golang.org/x/sync@v0.1.0/errgroup/errgroup.go:72 +0xa5

goroutine 1 [chan receive]:
testing.(*T).Run(0xc000482680, {0x1702e7e?, 0x56c745?}, 0x1761898)
    /opt/hostedtoolcache/go/1.20.3/x64/src/testing/testing.go:1630 +0x405
testing.runTests.func1(0x23434a0?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/testing/testing.go:2036 +0x45
testing.tRunner(0xc000482680, 0xc0002d1c80)
    /opt/hostedtoolcache/go/1.20.3/x64/src/testing/testing.go:1576 +0x10b
testing.runTests(0xc00018c0a0?, {0x23278a0, 0x6, 0x6}, {0x80?, 0x17fb3841dd298?, 0x2342a00?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/testing/testing.go:2034 +0x489
testing.(*M).Run(0xc00018c0a0)
    /opt/hostedtoolcache/go/1.20.3/x64/src/testing/testing.go:1906 +0x63a
main.main()
    _testmain.go:88 +0x1c5

goroutine 2754 [semacquire]:
sync.runtime_Semacquire(0xc0007d46e0?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/runtime/sema.go:62 +0x27
sync.(*WaitGroup).Wait(0xc00053c2c0?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/sync/waitgroup.go:116 +0x4b
github.com/hashicorp/terraform-exec/tfexec.(*Terraform).runTerraformCmd(0xc002ae2340, {0x19112a0, 0xc0000460f8}, 0xc00053c2c0)
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-exec@v0.18.1/tfexec/cmd_linux.go:75 +0x4d5
github.com/hashicorp/terraform-exec/tfexec.(*Terraform).Apply(0x1911310?, {0x19112a0, 0xc0000460f8}, {0xc00041e200?, 0x16fe663?, 0x23?})
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-exec@v0.18.1/tfexec/apply.go:100 +0x59
github.com/hashicorp/terraform-plugin-testing/internal/plugintest.(*WorkingDir).Apply(0xc0005b1270, {0x1911310, 0xc0000263f0})
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/internal/plugintest/working_dir.go:244 +0x1e5
github.com/hashicorp/terraform-plugin-testing/helper/resource.testStepNewConfig.func5()
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/helper/resource/testing_new_config.go:89 +0x25
github.com/hashicorp/terraform-plugin-testing/helper/resource.runProviderCommand({0x1911310, 0xc0000263f0}, {0x191cd60, 0xc000808000}, 0xc00053a018, 0xc0005b1270, 0xc00053a600)
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/helper/resource/plugin.go:438 +0x27eb
github.com/hashicorp/terraform-plugin-testing/helper/resource.testStepNewConfig({_, _}, {_, _}, {0x0, 0xc0003ae7c0, 0x0, 0x0, 0xc0008b2fc0, 0x0, ...}, ...)
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/helper/resource/testing_new_config.go:88 +0x745
github.com/hashicorp/terraform-plugin-testing/helper/resource.runNewTest({0x1911310, 0xc0000263f0}, {0x191cd60, 0xc000808000}, {0x0, 0xc0003ae7c0, 0x0, 0x0, 0xc0008b2fc0, 0x0, ...}, ...)
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/helper/resource/testing_new.go:295 +0x1370
github.com/hashicorp/terraform-plugin-testing/helper/resource.Test({0x191cd60, 0xc000808000}, {0x0, 0xc0003ae7c0, 0x0, 0x0, 0xc0008b2fc0, 0x0, 0x0, 0x0, ...})
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/helper/resource/testing.go:827 +0x64f
github.com/chainguard-dev/terraform-provider-apko/internal/provider.TestAccResourceApkoBuild_ProviderOpts(0xc000808000)
    /home/runner/work/terraform-provider-apko/terraform-provider-apko/internal/provider/resource_build_test.go:120 +0x7cb
testing.tRunner(0xc000808000, 0x1761898)
    /opt/hostedtoolcache/go/1.20.3/x64/src/testing/testing.go:1576 +0x10b
created by testing.(*T).Run
    /opt/hostedtoolcache/go/1.20.3/x64/src/testing/testing.go:1629 +0x3ea

goroutine 3602 [select]:
github.com/hashicorp/go-plugin.(*gRPCBrokerServer).Recv(0xc0007d4230?)
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_broker.go:124 +0x67
github.com/hashicorp/go-plugin.(*GRPCBroker).Run(0xc0007d43c0)
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_broker.go:414 +0x44
created by github.com/hashicorp/go-plugin.(*GRPCServer).Init
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_server.go:88 +0x46a

goroutine 3608 [IO wait]:
internal/poll.runtime_pollWait(0x7fb37cfc1af0, 0x72)
    /opt/hostedtoolcache/go/1.20.3/x64/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc00133e660?, 0xc0012ee000?, 0x1)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00133e660, {0xc0012ee000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_unix.go:167 +0x299
os.(*File).read(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/os/file_posix.go:31
os.(*File).Read(0xc00048e448, {0xc0012ee000?, 0xc0006add40?, 0x418410?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/os/file.go:118 +0x5e
bufio.(*Reader).fill(0xc0006adf08)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:106 +0xff
bufio.(*Reader).ReadSlice(0xc0006adf08, 0x60?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:372 +0x2f
bufio.(*Reader).collectFragments(0x38?, 0x8d?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:447 +0x74
bufio.(*Reader).ReadBytes(0x19112a0?, 0xf8?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:474 +0x1d
github.com/hashicorp/terraform-exec/tfexec.writeOutput({0x19112a0?, 0xc0000460f8}, {0x190cca0?, 0xc00048e448}, {0x1904aa0, 0xc000856840})
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-exec@v0.18.1/tfexec/cmd.go:260 +0x294
github.com/hashicorp/terraform-exec/tfexec.(*Terraform).runTerraformCmd.func2()
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-exec@v0.18.1/tfexec/cmd_linux.go:70 +0x79
created by github.com/hashicorp/terraform-exec/tfexec.(*Terraform).runTerraformCmd
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-exec@v0.18.1/tfexec/cmd_linux.go:68 +0x4cb

goroutine 3053 [IO wait]:
internal/poll.runtime_pollWait(0x7fb37ce8cb28, 0x72)
    /opt/hostedtoolcache/go/1.20.3/x64/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc000d27780?, 0xc0005dd000?, 0x0)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000d27780, {0xc0005dd000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc000d27780, {0xc0005dd000?, 0x2?, 0x2329c00?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc0022d0088, {0xc0005dd000?, 0x0?, 0x0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/net.go:183 +0x45
net/http.(*persistConn).Read(0xc00015c120, {0xc0005dd000?, 0x44d4e0?, 0xc0006a9ec8?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:1943 +0x4e
bufio.(*Reader).fill(0xc000776780)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:106 +0xff
bufio.(*Reader).Peek(0xc000776780, 0x1)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:144 +0x5d
net/http.(*persistConn).readLoop(0xc00015c120)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:2107 +0x1ac
created by net/http.(*Transport).dialConn
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:1765 +0x16ea

goroutine 3636 [select]:
net/http.(*http2ClientConn).RoundTrip(0xc00129cf00, 0xc000497400)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:8231 +0x491
net/http.(*http2Transport).RoundTripOpt(0xc0002d0360, 0xc000497400, {0xc0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:7523 +0x1c5
net/http.(*http2Transport).RoundTrip(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:7475
net/http.http2noDialH2RoundTripper.RoundTrip({0x2329e80?}, 0xc000497400?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:10060 +0x1b
net/http.(*Transport).roundTrip(0x2329e80, 0xc000497400)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:548 +0x3ca
net/http.(*Transport).RoundTrip(0x100?, 0x1904660?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/roundtrip.go:17 +0x19
net/http.send(0xc000497400, {0x1904660, 0x2329e80}, {0x8?, 0x169b2e0?, 0x0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/client.go:252 +0x5f7
net/http.(*Client).send(0xc00048c870, 0xc000497400, {0xc00088629a?, 0x1b?, 0x0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/client.go:176 +0x9b
net/http.(*Client).do(0xc00048c870, 0xc000497400)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/client.go:716 +0x8fb
net/http.(*Client).Do(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/client.go:582
net/http.(*Client).Get(0xc0005557a0?, {0xc000886280?, 0xc0002b9028?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/client.go:480 +0x6a
github.com/chainguard-dev/go-apk/pkg/apk.GetRepositoryIndexes({0xc000b881a0, 0x2, 0xc000f0b4b8?}, 0xc0002b9218, {0xc002a094f0, 0x7}, {0xc0002b91b8, 0x2, 0x14611e0?})
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/apk/index.go:97 +0x3e5
github.com/chainguard-dev/go-apk/pkg/apk.(*APK).getRepositoryIndexes(0xc000000ba0, 0x0)
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/apk/repo.go:142 +0x6af
github.com/chainguard-dev/go-apk/pkg/apk.(*APK).ResolveWorld(0xc000000ba0)
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/apk/implementation.go:399 +0x53
github.com/chainguard-dev/go-apk/pkg/apk.(*APK).FixateWorld(0xc000000ba0, 0xc001916870?)
    /home/runner/go/pkg/mod/github.com/chainguard-dev/go-apk@v0.0.0-20230504163953-8710d2cb7f41/pkg/apk/implementation.go:430 +0xc5
chainguard.dev/apko/pkg/apk.(*APK).Install(...)
    /home/runner/go/pkg/mod/chainguard.dev/apko@v0.8.1-0.20230505234243-87f7f0ff54fa/pkg/apk/apk.go:116
chainguard.dev/apko/pkg/build.(*defaultBuildImplementation).InstallPackages(0xc001916870?, {0x191d140?, 0xc000918570?}, 0xc000813cb0?, 0x7fb3ad55a108?)
    /home/runner/go/pkg/mod/chainguard.dev/apko@v0.8.1-0.20230505234243-87f7f0ff54fa/pkg/build/build_implementation.go:216 +0xb5
chainguard.dev/apko/pkg/build.buildImage({0x191d140, 0xc000918570}, {0x191cea0, 0xc000813830}, 0xc000ddd380, 0x4?, 0x5?)
    /home/runner/go/pkg/mod/chainguard.dev/apko@v0.8.1-0.20230505234243-87f7f0ff54fa/pkg/build/build_implementation.go:271 +0x232
chainguard.dev/apko/pkg/build.(*Context).BuildImage(0xc000ddd180)
    /home/runner/go/pkg/mod/chainguard.dev/apko@v0.8.1-0.20230505234243-87f7f0ff54fa/pkg/build/build.go:88 +0x6d
chainguard.dev/apko/pkg/build.(*Context).BuildLayer(0xc000ddd180?)
    /home/runner/go/pkg/mod/chainguard.dev/apko@v0.8.1-0.20230505234243-87f7f0ff54fa/pkg/build/build.go:122 +0x28
github.com/chainguard-dev/terraform-provider-apko/internal/provider.doBuild.func1()
    /home/runner/work/terraform-provider-apko/terraform-provider-apko/internal/provider/build.go:97 +0x12a
golang.org/x/sync/errgroup.(*Group).Go.func1()
    /home/runner/go/pkg/mod/golang.org/x/sync@v0.1.0/errgroup/errgroup.go:75 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
    /home/runner/go/pkg/mod/golang.org/x/sync@v0.1.0/errgroup/errgroup.go:72 +0xa5

goroutine 3605 [chan receive]:
github.com/hashicorp/terraform-plugin-testing/helper/resource.runProviderCommand.func6(0xc00041e1c0?)
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/helper/resource/plugin.go:414 +0x25
created by github.com/hashicorp/terraform-plugin-testing/helper/resource.runProviderCommand
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.2.0/helper/resource/plugin.go:413 +0x260a

goroutine 3621 [IO wait]:
internal/poll.runtime_pollWait(0x7fb37ce8cfd8, 0x72)
    /opt/hostedtoolcache/go/1.20.3/x64/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc000d26280?, 0xc000380000?, 0x0)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000d26280, {0xc000380000, 0x8000, 0x8000})
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc000d26280, {0xc000380000?, 0x1060100000000?, 0x8?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc0022d0008, {0xc000380000?, 0x18?, 0x23434a0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/net.go:183 +0x45
bufio.(*Reader).Read(0xc000e8a180, {0xc000108d60, 0x9, 0x0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:237 +0x1bb
io.ReadAtLeast({0x18fed40, 0xc000e8a180}, {0xc000108d60, 0x9, 0x9}, 0x9)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:332 +0x9a
io.ReadFull(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:351
golang.org/x/net/http2.readFrameHeader({0xc000108d60?, 0x9?, 0xc001112420?}, {0x18fed40?, 0xc000e8a180?})
    /home/runner/go/pkg/mod/golang.org/x/net@v0.9.0/http2/frame.go:237 +0x6e
golang.org/x/net/http2.(*Framer).ReadFrame(0xc000108d20)
    /home/runner/go/pkg/mod/golang.org/x/net@v0.9.0/http2/frame.go:498 +0x95
google.golang.org/grpc/internal/transport.(*http2Server).HandleStreams(0xc00047c820, 0x0?, 0x0?)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/http2_server.go:637 +0x174
google.golang.org/grpc.(*Server).serveStreams(0xc000545e00, {0x1918a40?, 0xc00047c820})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:950 +0x189
google.golang.org/grpc.(*Server).handleRawConn.func1()
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:892 +0x46
created by google.golang.org/grpc.(*Server).handleRawConn
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:891 +0x185

goroutine 3616 [select]:
github.com/hashicorp/go-plugin.(*gRPCBrokerServer).StartStream.func1()
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_broker.go:73 +0x105
created by github.com/hashicorp/go-plugin.(*gRPCBrokerServer).StartStream
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_broker.go:71 +0x131

goroutine 3073 [select]:
net/http.(*persistConn).writeLoop(0xc001218120)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:2410 +0xf2
created by net/http.(*Transport).dialConn
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:1766 +0x173d

goroutine 3615 [select]:
google.golang.org/grpc/internal/transport.(*recvBufferReader).read(0xc0007d4a50, {0xc000fcc298, 0x5, 0x5})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:183 +0x90
google.golang.org/grpc/internal/transport.(*recvBufferReader).Read(0xc0007d4a50, {0xc000fcc298?, 0xc001112318?, 0xc00075f668?})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:177 +0x178
google.golang.org/grpc/internal/transport.(*transportReader).Read(0xc0006a3590, {0xc000fcc298?, 0xc00075f6e0?, 0x10d3a67?})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:514 +0x32
io.ReadAtLeast({0x1903b00, 0xc0006a3590}, {0xc000fcc298, 0x5, 0x5}, 0x5)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:332 +0x9a
io.ReadFull(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:351
google.golang.org/grpc/internal/transport.(*Stream).Read(0xc000448a20, {0xc000fcc298, 0x5, 0x5})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:498 +0xac
google.golang.org/grpc.(*parser).recvMsg(0xc000fcc288, 0x10000000)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/rpc_util.go:597 +0x47
google.golang.org/grpc.recvAndDecompress(0x0?, 0xc000448a20, {0x0, 0x0}, 0x10000000, 0x0, {0x0, 0x0})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/rpc_util.go:729 +0x66
google.golang.org/grpc.recv(0x1575b60?, {0x7fb37cf547d8, 0x2373278}, 0x10b869d?, {0x0?, 0x0?}, {0x164a740, 0xc0007d4aa0}, 0xc0007d4830?, 0x0, ...)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/rpc_util.go:795 +0x6e
google.golang.org/grpc.(*serverStream).RecvMsg(0xc00074a000, {0x164a740?, 0xc0007d4aa0})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/stream.go:1699 +0x178
github.com/hashicorp/go-plugin/internal/plugin.(*gRPCBrokerStartStreamServer).Recv(0xc000d50340)
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/internal/plugin/grpc_broker.pb.go:167 +0x4c
github.com/hashicorp/go-plugin.(*gRPCBrokerServer).StartStream(0xc0006a2c60, {0x19179f0, 0xc000d50340})
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_broker.go:87 +0x150
github.com/hashicorp/go-plugin/internal/plugin._GRPCBroker_StartStream_Handler({0x1552de0?, 0xc0006a2c60}, {0x1914810?, 0xc00074a000})
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/internal/plugin/grpc_broker.pb.go:148 +0x9f
google.golang.org/grpc.(*Server).processStreamingRPC(0xc000545e00, {0x1918a40, 0xc000832340}, 0xc000448a20, 0xc0006a2cf0, 0x231dc20, 0x0)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:1639 +0x1384
google.golang.org/grpc.(*Server).handleStream(0xc000545e00, {0x1918a40, 0xc000832340}, 0xc000448a20, 0x0)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:1726 +0x9f0
google.golang.org/grpc.(*Server).serveStreams.func1.2()
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:966 +0x98
created by google.golang.org/grpc.(*Server).serveStreams.func1
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:964 +0x28a

goroutine 3580 [select]:
google.golang.org/grpc/internal/transport.(*recvBufferReader).read(0xc000fc68c0, {0xc000fcc838, 0x5, 0x5})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:183 +0x90
google.golang.org/grpc/internal/transport.(*recvBufferReader).Read(0xc000fc68c0, {0xc000fcc838?, 0xc000f0a990?, 0xc00049e668?})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:177 +0x178
google.golang.org/grpc/internal/transport.(*transportReader).Read(0xc0003fb2f0, {0xc000fcc838?, 0xc00049e6e0?, 0x10d3a67?})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:514 +0x32
io.ReadAtLeast({0x1903b00, 0xc0003fb2f0}, {0xc000fcc838, 0x5, 0x5}, 0x5)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:332 +0x9a
io.ReadFull(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:351
google.golang.org/grpc/internal/transport.(*Stream).Read(0xc00015c360, {0xc000fcc838, 0x5, 0x5})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/transport.go:498 +0xac
google.golang.org/grpc.(*parser).recvMsg(0xc000fcc828, 0x10000000)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/rpc_util.go:597 +0x47
google.golang.org/grpc.recvAndDecompress(0xf46319?, 0xc00015c360, {0x0, 0x0}, 0x10000000, 0x0, {0x0, 0x0})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/rpc_util.go:729 +0x66
google.golang.org/grpc.recv(0xc0006fe900?, {0x7fb37cf547d8, 0x2373278}, 0x1642640?, {0x0?, 0x0?}, {0x164a740, 0xc0007d5400}, 0xc0006fe900?, 0x0, ...)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/rpc_util.go:795 +0x6e
google.golang.org/grpc.(*serverStream).RecvMsg(0xc00074a0f0, {0x164a740?, 0xc0007d5400})
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/stream.go:1699 +0x178
github.com/hashicorp/go-plugin/internal/plugin.(*gRPCBrokerStartStreamServer).Recv(0xc0012162c0)
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/internal/plugin/grpc_broker.pb.go:167 +0x4c
github.com/hashicorp/go-plugin.(*gRPCBrokerServer).StartStream(0xc0006a2c60, {0x19179f0, 0xc0012162c0})
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_broker.go:87 +0x150
github.com/hashicorp/go-plugin/internal/plugin._GRPCBroker_StartStream_Handler({0x1552de0?, 0xc0006a2c60}, {0x1914810?, 0xc00074a0f0})
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/internal/plugin/grpc_broker.pb.go:148 +0x9f
google.golang.org/grpc.(*Server).processStreamingRPC(0xc000545e00, {0x1918a40, 0xc00047c820}, 0xc00015c360, 0xc0006a2cf0, 0x231dc20, 0x0)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:1639 +0x1384
google.golang.org/grpc.(*Server).handleStream(0xc000545e00, {0x1918a40, 0xc00047c820}, 0xc00015c360, 0x0)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:1726 +0x9f0
google.golang.org/grpc.(*Server).serveStreams.func1.2()
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:966 +0x98
created by google.golang.org/grpc.(*Server).serveStreams.func1
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:964 +0x28a
internal/poll.(*pollDesc).wait(0xc000f0dd80?, 0xc00283e000?, 0x0)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000f0dd80, {0xc00283e000, 0xa000, 0xa000})
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc000f0dd80, {0xc00283e000?, 0xc00283e060?, 0x33a?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc00048eea0, {0xc00283e000?, 0x444351?, 0xc00128f330?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/net.go:183 +0x45
crypto/tls.(*atLeastReader).Read(0xc000b7e228, {0xc00283e000?, 0xc000b7e228?, 0x0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/crypto/tls/conn.go:788 +0x3d
bytes.(*Buffer).ReadFrom(0xc00128f410, {0x18ff040, 0xc000b7e228})
    /opt/hostedtoolcache/go/1.20.3/x64/src/bytes/buffer.go:202 +0x98
crypto/tls.(*Conn).readFromUntil(0xc00128f180, {0x1904520?, 0xc00048eea0}, 0x9fa5?)
    /opt/hostedtoolcache/go/1.20.3/x64/src/crypto/tls/conn.go:810 +0xe5
crypto/tls.(*Conn).readRecordOrCCS(0xc00128f180, 0x0)
    /opt/hostedtoolcache/go/1.20.3/x64/src/crypto/tls/conn.go:617 +0x116
crypto/tls.(*Conn).readRecord(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/crypto/tls/conn.go:583
crypto/tls.(*Conn).Read(0xc00128f180, {0xc0014e2000, 0x1000, 0x8ecc80?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/crypto/tls/conn.go:1316 +0x16f
bufio.(*Reader).Read(0xc00133fa40, {0xc0007184a0, 0x9, 0x90a905?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:237 +0x1bb
io.ReadAtLeast({0x18fed40, 0xc00133fa40}, {0xc0007184a0, 0x9, 0x9}, 0x9)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:332 +0x9a
io.ReadFull(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/io/io.go:351
net/http.http2readFrameHeader({0xc0007184a0?, 0x9?, 0xc0006a3800?}, {0x18fed40?, 0xc00133fa40?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:1567 +0x6e
net/http.(*http2Framer).ReadFrame(0xc000718460)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:1831 +0x95
net/http.(*http2clientConnReadLoop).run(0xc0003c8f98)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:9187 +0x12e
net/http.(*http2ClientConn).readLoop(0xc00129cf00)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:9082 +0x6f
created by net/http.(*http2Transport).newClientConn
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/h2_bundle.go:7779 +0xc3c

goroutine 3620 [select]:
google.golang.org/grpc/internal/transport.(*http2Server).keepalive(0xc00047c820)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/http2_server.go:[115](https://github.com/chainguard-dev/terraform-provider-apko/actions/runs/4916989168/jobs/8781471552?pr=52#step:7:116)0 +0x233
created by google.golang.org/grpc/internal/transport.NewServerTransport
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/http2_server.go:339 +0x1af8

goroutine 3072 [IO wait]:
internal/poll.runtime_pollWait(0x7fb37cfc[119](https://github.com/chainguard-dev/terraform-provider-apko/actions/runs/4916989168/jobs/8781471552?pr=52#step:7:120)0, 0x72)
    /opt/hostedtoolcache/go/1.20.3/x64/src/runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc00053e600?, 0xc000370000?, 0x0)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00053e600, {0xc000370000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.3/x64/src/internal/poll/fd_unix.go:167 +0x299
net.(*netFD).Read(0xc00053e600, {0xc000370000?, 0x2?, 0x2329c00?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc00087c7d8, {0xc000370000?, 0x0?, 0x0?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/net.go:183 +0x45
net/http.(*persistConn).Read(0xc001218[120](https://github.com/chainguard-dev/terraform-provider-apko/actions/runs/4916989168/jobs/8781471552?pr=52#step:7:121), {0xc000370000?, 0x44d4e0?, 0xc0006a8ec8?})
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:1943 +0x4e
bufio.(*Reader).fill(0xc000da0cc0)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:106 +0xff
bufio.(*Reader).Peek(0xc000da0cc0, 0x1)
    /opt/hostedtoolcache/go/1.20.3/x64/src/bufio/bufio.go:144 +0x5d
net/http.(*persistConn).readLoop(0xc00[121](https://github.com/chainguard-dev/terraform-provider-apko/actions/runs/4916989168/jobs/8781471552?pr=52#step:7:122)8120)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:2107 +0x1ac
created by net/http.(*Transport).dialConn
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:1765 +0x16ea

goroutine 3054 [select]:
net/http.(*persistConn).writeLoop(0xc00015c120)
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:2410 +0xf2
created by net/http.(*Transport).dialConn
    /opt/hostedtoolcache/go/1.20.3/x64/src/net/http/transport.go:1766 +0x173d

goroutine 3610 [select]:
github.com/hashicorp/terraform-exec/tfexec.writeOutput.func1()
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-exec@v0.18.1/tfexec/cmd.go:250 +0xa6
created by github.com/hashicorp/terraform-exec/tfexec.writeOutput
    /home/runner/go/pkg/mod/github.com/hashicorp/terraform-exec@v0.18.1/tfexec/cmd.go:249 +0x14a

goroutine 3619 [select]:
google.golang.org/grpc/internal/transport.(*controlBuffer).get(0xc000fc66e0, 0x1)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/controlbuf.go:417 +0x115
google.golang.org/grpc/internal/transport.(*loopyWriter).run(0xc0004d2850)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/controlbuf.go:549 +0x91
google.golang.org/grpc/internal/transport.NewServerTransport.func2()
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/http2_server.go:336 +0xce
created by google.golang.org/grpc/internal/transport.NewServerTransport
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/internal/transport/http2_server.go:333 +0x1ab3

goroutine 3577 [select]:
github.com/hashicorp/go-plugin.(*grpcStdioServer).StreamStdio(0xc000e557c0, 0x1587300?, {0x1916a80, 0xc000e55c50})
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/grpc_stdio.go:61 +0x11d
github.com/hashicorp/go-plugin/internal/plugin._GRPCStdio_StreamStdio_Handler({0x14b4600?, 0xc000e557c0}, {0x1914810, 0xc0006040f0})
    /home/runner/go/pkg/mod/github.com/hashicorp/go-plugin@v1.4.9/internal/plugin/grpc_stdio.pb.go:185 +0xd0
google.golang.org/grpc.(*Server).processStreamingRPC(0xc000545e00, {0x1918a40, 0xc000832340}, 0xc000239e60, 0xc0006a2ea0, 0x231dc40, 0x0)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:1639 +0x[138](https://github.com/chainguard-dev/terraform-provider-apko/actions/runs/4916989168/jobs/8781471552?pr=52#step:7:139)4
google.golang.org/grpc.(*Server).handleStream(0xc000545e00, {0x1918a40, 0xc000832340}, 0xc000239e60, 0x0)
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:[172](https://github.com/chainguard-dev/terraform-provider-apko/actions/runs/4916989168/jobs/8781471552?pr=52#step:7:173)6 +0x9f0
google.golang.org/grpc.(*Server).serveStreams.func1.2()
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:966 +0x98
created by google.golang.org/grpc.(*Server).serveStreams.func1
    /home/runner/go/pkg/mod/google.golang.org/grpc@v1.54.0/server.go:964 +0x28a
mattmoor commented 1 year ago

Here's the action leg: https://github.com/chainguard-dev/terraform-provider-apko/actions/runs/4916989168/jobs/8781471552?pr=52

I pasted the trace above because github doesn't retain logs indefinitely and wanted to avoid losing this since it's rare.

deitch commented 1 year ago

Do you know what the flow is to trigger this? I don't mean exercising the entire tf-apko, but the specific calls that make it happen?

deitch commented 1 year ago

I don't quite know enough about how tf-apko works, what it calls, etc.

mattmoor commented 1 year ago

@deitch it is really just invoking apko as a library based on config read from TF instead of passed in via CLI args.

I have only seen this once, so I don't think there is any particular magic to reproduce it, but I am curious if we run any of our tests for this stuff with -race, which might reproduce more reliably?

deitch commented 1 year ago

Clearly not in this workflow. But I was sure someone had added it. Maybe it didn't make it in? Huh.

Care to open a PR adding -race there, and we can let it run, catch it, fix issues?

mattmoor commented 1 year ago

Looks like the same callstack at the top of what -race found in the linked PR:

  github.com/chainguard-dev/go-apk/pkg/fs.(*memFS).OpenFile()
      /home/runner/work/go-apk/go-apk/pkg/fs/memfs.go:215 +0x19b
  github.com/chainguard-dev/go-apk/pkg/fs.(*memFS).WriteFile()
      /home/runner/work/go-apk/go-apk/pkg/fs/memfs.go:259 +0x96