This happened during a lint with 0.33.6. I have seen it twice now in a few dozen runs.
fatal error: concurrent map writes
goroutine 25 [running]:
runtime.throw(0x844837, 0x15)
/usr/local/go/src/runtime/panic.go:616 +0x81 fp=0xc42025dde0 sp=0xc42025ddc0 pc=0x429331
runtime.mapassign_faststr(0x7cf4e0, 0xc4201ec660, 0xc420015d60, 0xd, 0x59)
/usr/local/go/src/runtime/hashmap_fast.go:779 +0x3ce fp=0xc42025de50 sp=0xc42025dde0 pc=0x40b4ce
github.com/roboll/helmfile/state.(*HelmState).downloadCharts.func1(0xc4201a8480, 0xc42018ab40, 0xc420200470, 0xe, 0x8925e0, 0xc4201a8360, 0xc4201f4380, 0xc4201ec660, 0xc420200490)
/go/src/github.com/roboll/helmfile/state/state.go:315 +0x17e fp=0xc42025df98 sp=0xc42025de50 pc=0x74ba5e
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2361 +0x1 fp=0xc42025dfa0 sp=0xc42025df98 pc=0x455681
created by github.com/roboll/helmfile/state.(*HelmState).downloadCharts
/go/src/github.com/roboll/helmfile/state/state.go:292 +0x1df
goroutine 1 [semacquire]:
sync.runtime_Semacquire(0xc42020049c)
/usr/local/go/src/runtime/sema.go:56 +0x39
sync.(*WaitGroup).Wait(0xc420200490)
/usr/local/go/src/sync/waitgroup.go:129 +0x72
github.com/roboll/helmfile/state.(*HelmState).downloadCharts(0xc42018ab40, 0x8925e0, 0xc4201a8360, 0xc420200470, 0xe, 0xc, 0x0, 0x0, 0x0, 0x0)
/go/src/github.com/roboll/helmfile/state/state.go:325 +0x274
github.com/roboll/helmfile/state.(*HelmState).LintReleases(0xc42018ab40, 0x8925e0, 0xc4201a8360, 0xaa6948, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
/go/src/github.com/roboll/helmfile/state/state.go:397 +0x1fe
main.main.func5.1(0xc42018ab40, 0x8925e0, 0xc4201a8360, 0x191f, 0xc42001e5f0, 0x4c)
/go/src/github.com/roboll/helmfile/main.go:249 +0x251
main.(*app).FindAndIterateOverDesiredStates(0xc420140a80, 0xc42001e5f0, 0x4c, 0xc420140af0, 0x0, 0x0, 0xc420055350, 0x1, 0x1, 0x7ffd458152ad, ...)
/go/src/github.com/roboll/helmfile/main.go:659 +0x590
main.(*app).FindAndIterateOverDesiredStates(0xc420140a80, 0x0, 0x0, 0xc420140af0, 0x0, 0x0, 0xc420055350, 0x1, 0x1, 0x7ffd458152ad, ...)
/go/src/github.com/roboll/helmfile/main.go:641 +0x708
main.findAndIterateOverDesiredStatesUsingFlags(0xc4200c6c80, 0xc420140af0, 0xc420140b10, 0x16)
/go/src/github.com/roboll/helmfile/main.go:568 +0x2f3
main.main.func5(0xc4200c6c80, 0x0, 0x0)
/go/src/github.com/roboll/helmfile/main.go:238 +0x46
reflect.Value.call(0x7b7380, 0x859a98, 0x13, 0x83a5cf, 0x4, 0xc420140ee8, 0x1, 0x1, 0xc42005e080, 0x82de60, ...)
/usr/local/go/src/reflect/value.go:447 +0x969
reflect.Value.Call(0x7b7380, 0x859a98, 0x13, 0xc420140ee8, 0x1, 0x1, 0x4, 0xc4200854f0, 0x5)
/usr/local/go/src/reflect/value.go:308 +0xa4
github.com/roboll/helmfile/vendor/github.com/urfave/cli.HandleAction(0x7b7380, 0x859a98, 0xc4200c6c80, 0x0, 0x0)
/go/src/github.com/roboll/helmfile/vendor/github.com/urfave/cli/app.go:483 +0x173
github.com/roboll/helmfile/vendor/github.com/urfave/cli.Command.Run(0x83a9af, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x84d542, 0x27, 0x0, ...)
/go/src/github.com/roboll/helmfile/vendor/github.com/urfave/cli/command.go:186 +0x999
github.com/roboll/helmfile/vendor/github.com/urfave/cli.(*App).Run(0xc420001200, 0xc42000e0c0, 0x6, 0x6, 0x0, 0x0)
/go/src/github.com/roboll/helmfile/vendor/github.com/urfave/cli/app.go:237 +0x546
main.main()
/go/src/github.com/roboll/helmfile/main.go:474 +0x1f79
goroutine 5 [syscall]:
os/signal.signal_recv(0x0)
/usr/local/go/src/runtime/sigqueue.go:139 +0xa6
os/signal.loop()
/usr/local/go/src/os/signal/signal_unix.go:22 +0x22
created by os/signal.init.0
/usr/local/go/src/os/signal/signal_unix.go:28 +0x41
goroutine 36 [IO wait]:
internal/poll.runtime_pollWait(0x7fbb9732e200, 0x72, 0xc4200384e8)
/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420087f08, 0x72, 0xffffffffffffff01, 0x88d6e0, 0xa4d298)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420087f08, 0xc420184a01, 0x200, 0x200)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420087ef0, 0xc420184a00, 0x200, 0x200, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:157 +0x17d
os.(*File).read(0xc42000c3d0, 0xc420184a00, 0x200, 0x200, 0xc420184a00, 0x0, 0x0)
/usr/local/go/src/os/file_unix.go:226 +0x4e
os.(*File).Read(0xc42000c3d0, 0xc420184a00, 0x200, 0x200, 0xc42003a400, 0x83e706, 0xc420038660)
/usr/local/go/src/os/file.go:107 +0x6a
bytes.(*Buffer).ReadFrom(0xc4201d7a40, 0x88ca00, 0xc42000c3d0, 0x7fbb972ea020, 0xc4201d7a40, 0xc420001301)
/usr/local/go/src/bytes/buffer.go:205 +0xa0
io.copyBuffer(0x88c260, 0xc4201d7a40, 0x88ca00, 0xc42000c3d0, 0x0, 0x0, 0x0, 0xc42001a3c0, 0xc420038740, 0x83a037)
/usr/local/go/src/io/io.go:386 +0x31a
io.Copy(0x88c260, 0xc4201d7a40, 0x88ca00, 0xc42000c3d0, 0xc42001a418, 0x0, 0x6f488c)
/usr/local/go/src/io/io.go:362 +0x5a
os/exec.(*Cmd).writerDescriptor.func1(0xc42001a418, 0xc4200387c8)
/usr/local/go/src/os/exec/exec.go:275 +0x4d
os/exec.(*Cmd).Start.func1(0xc4200c5600, 0xc4201dacc0)
/usr/local/go/src/os/exec/exec.go:396 +0x27
created by os/exec.(*Cmd).Start
/usr/local/go/src/os/exec/exec.go:395 +0x5df
goroutine 7 [select, locked to thread]:
runtime.gopark(0x85a198, 0x0, 0x83c4b0, 0x6, 0x18, 0x1)
/usr/local/go/src/runtime/proc.go:291 +0x11a
runtime.selectgo(0xc420038f50, 0xc42001a540)
/usr/local/go/src/runtime/select.go:392 +0xe50
runtime.ensureSigM.func1()
/usr/local/go/src/runtime/signal_unix.go:549 +0x1f4
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2361 +0x1
goroutine 8 [chan receive]:
main.(*app).loadDesiredStateFromYaml.func1(0xc42000ea80, 0xc420095e60)
/go/src/github.com/roboll/helmfile/main.go:771 +0x41
created by main.(*app).loadDesiredStateFromYaml
/go/src/github.com/roboll/helmfile/main.go:770 +0x5c2
goroutine 17 [chan receive]:
main.(*app).loadDesiredStateFromYaml.func1(0xc4201a8300, 0xc42018ab40)
/go/src/github.com/roboll/helmfile/main.go:771 +0x41
created by main.(*app).loadDesiredStateFromYaml
/go/src/github.com/roboll/helmfile/main.go:770 +0x5c2
goroutine 19 [syscall]:
syscall.Syscall6(0xf7, 0x1, 0x20b, 0xc4202ffa18, 0x1000004, 0x0, 0x0, 0x0, 0xc42019a800, 0x0)
/usr/local/go/src/syscall/asm_linux_amd64.s:44 +0x5
os.(*Process).blockUntilWaitable(0xc42022acc0, 0x0, 0x0, 0x8)
/usr/local/go/src/os/wait_waitid.go:31 +0x98
os.(*Process).wait(0xc42022acc0, 0xc420336080, 0xc420338238, 0xc420338238)
/usr/local/go/src/os/exec_unix.go:22 +0x3c
os.(*Process).Wait(0xc42022acc0, 0x859dc8, 0x859dd0, 0x859dc0)
/usr/local/go/src/os/exec.go:123 +0x2b
os/exec.(*Cmd).Wait(0xc420338160, 0x0, 0x0)
/usr/local/go/src/os/exec/exec.go:461 +0x5c
os/exec.(*Cmd).Run(0xc420338160, 0xc4202ec850, 0xc420338160)
/usr/local/go/src/os/exec/exec.go:305 +0x5c
os/exec.(*Cmd).CombinedOutput(0xc420338160, 0x4, 0xc4202ec7e0, 0x7, 0x7, 0xc420338160)
/usr/local/go/src/os/exec/exec.go:521 +0x106
github.com/roboll/helmfile/helmexec.ShellRunner.Execute(0x83a907, 0x4, 0xc4202ec7e0, 0x7, 0x7, 0x2, 0x2, 0x0, 0x0, 0x0)
/go/src/github.com/roboll/helmfile/helmexec/runner.go:23 +0x65
github.com/roboll/helmfile/helmexec.(*execer).exec(0xc4201a8360, 0xc4202ec7e0, 0x7, 0x7, 0xc4202f6280, 0x5, 0x5, 0x5, 0xc4202f6280)
/go/src/github.com/roboll/helmfile/helmexec/exec.go:197 +0x2c5
github.com/roboll/helmfile/helmexec.(*execer).Fetch(0xc4201a8360, 0xc420015a30, 0xf, 0xc4202f6280, 0x5, 0x5, 0x2, 0x5)
/go/src/github.com/roboll/helmfile/helmexec/exec.go:169 +0x204
github.com/roboll/helmfile/state.(*HelmState).downloadCharts.func1(0xc4201a8480, 0xc42018ab40, 0xc420200470, 0xe, 0x8925e0, 0xc4201a8360, 0xc4201f4380, 0xc4201ec660, 0xc420200490)
/go/src/github.com/roboll/helmfile/state/state.go:309 +0x478
created by github.com/roboll/helmfile/state.(*HelmState).downloadCharts
/go/src/github.com/roboll/helmfile/state/state.go:292 +0x1df
goroutine 20 [syscall]:
syscall.Syscall6(0xf7, 0x1, 0x226, 0xc420357a18, 0x1000004, 0x0, 0x0, 0x0, 0xc4203c4400, 0x0)
/usr/local/go/src/syscall/asm_linux_amd64.s:44 +0x5
os.(*Process).blockUntilWaitable(0xc4203c0210, 0x0, 0x0, 0x8)
/usr/local/go/src/os/wait_waitid.go:31 +0x98
os.(*Process).wait(0xc4203c0210, 0xc420336100, 0xc420338398, 0xc420338398)
/usr/local/go/src/os/exec_unix.go:22 +0x3c
os.(*Process).Wait(0xc4203c0210, 0x859dc8, 0x859dd0, 0x859dc0)
/usr/local/go/src/os/exec.go:123 +0x2b
os/exec.(*Cmd).Wait(0xc4203382c0, 0x0, 0x0)
/usr/local/go/src/os/exec/exec.go:461 +0x5c
os/exec.(*Cmd).Run(0xc4203382c0, 0xc4202eccb0, 0xc4203382c0)
/usr/local/go/src/os/exec/exec.go:305 +0x5c
os/exec.(*Cmd).CombinedOutput(0xc4203382c0, 0x4, 0xc4202ecc40, 0x7, 0x7, 0xc4203382c0)
/usr/local/go/src/os/exec/exec.go:521 +0x106
github.com/roboll/helmfile/helmexec.ShellRunner.Execute(0x83a907, 0x4, 0xc4202ecc40, 0x7, 0x7, 0x2, 0x2, 0x0, 0x0, 0x0)
/go/src/github.com/roboll/helmfile/helmexec/runner.go:23 +0x65
github.com/roboll/helmfile/helmexec.(*execer).exec(0xc4201a8360, 0xc4202ecc40, 0x7, 0x7, 0xc4202f6460, 0x5, 0x5, 0x5, 0xc4202f6460)
/go/src/github.com/roboll/helmfile/helmexec/exec.go:197 +0x2c5
github.com/roboll/helmfile/helmexec.(*execer).Fetch(0xc4201a8360, 0xc4201cc620, 0x1e, 0xc4202f6460, 0x5, 0x5, 0x2, 0x5)
/go/src/github.com/roboll/helmfile/helmexec/exec.go:169 +0x204
github.com/roboll/helmfile/state.(*HelmState).downloadCharts.func1(0xc4201a8480, 0xc42018ab40, 0xc420200470, 0xe, 0x8925e0, 0xc4201a8360, 0xc4201f4380, 0xc4201ec660, 0xc420200490)
/go/src/github.com/roboll/helmfile/state/state.go:309 +0x478
created by github.com/roboll/helmfile/state.(*HelmState).downloadCharts
/go/src/github.com/roboll/helmfile/state/state.go:292 +0x1df
goroutine 21 [runnable]:
syscall.Syscall6(0xf7, 0x1, 0x1ef, 0xc4202fda18, 0x1000004, 0x0, 0x0, 0x0, 0xc4202fda18, 0x0)
/usr/local/go/src/syscall/asm_linux_amd64.s:44 +0x5
os.(*Process).blockUntilWaitable(0xc4203c01b0, 0x0, 0x0, 0x8)
/usr/local/go/src/os/wait_waitid.go:31 +0x98
os.(*Process).wait(0xc4203c01b0, 0xc420336000, 0xc4203380d8, 0xc4203380d8)
/usr/local/go/src/os/exec_unix.go:22 +0x3c
os.(*Process).Wait(0xc4203c01b0, 0x859dc8, 0x859dd0, 0x859dc0)
/usr/local/go/src/os/exec.go:123 +0x2b
os/exec.(*Cmd).Wait(0xc420338000, 0x0, 0x0)
/usr/local/go/src/os/exec/exec.go:461 +0x5c
os/exec.(*Cmd).Run(0xc420338000, 0xc4202ec3f0, 0xc420338000)
/usr/local/go/src/os/exec/exec.go:305 +0x5c
os/exec.(*Cmd).CombinedOutput(0xc420338000, 0x4, 0xc4202ec380, 0x7, 0x7, 0xc420338000)
/usr/local/go/src/os/exec/exec.go:521 +0x106
github.com/roboll/helmfile/helmexec.ShellRunner.Execute(0x83a907, 0x4, 0xc4202ec380, 0x7, 0x7, 0x2, 0x2, 0x0, 0x0, 0x0)
/go/src/github.com/roboll/helmfile/helmexec/runner.go:23 +0x65
github.com/roboll/helmfile/helmexec.(*execer).exec(0xc4201a8360, 0xc4202ec380, 0x7, 0x7, 0xc4202f6050, 0x5, 0x5, 0x5, 0xc4202f6050)
/go/src/github.com/roboll/helmfile/helmexec/exec.go:197 +0x2c5
github.com/roboll/helmfile/helmexec.(*execer).Fetch(0xc4201a8360, 0xc4201cc420, 0x11, 0xc4202f6050, 0x5, 0x5, 0x2, 0x5)
/go/src/github.com/roboll/helmfile/helmexec/exec.go:169 +0x204
github.com/roboll/helmfile/state.(*HelmState).downloadCharts.func1(0xc4201a8480, 0xc42018ab40, 0xc420200470, 0xe, 0x8925e0, 0xc4201a8360, 0xc4201f4380, 0xc4201ec660, 0xc420200490)
/go/src/github.com/roboll/helmfile/state/state.go:309 +0x478
created by github.com/roboll/helmfile/state.(*HelmState).downloadCharts
/go/src/github.com/roboll/helmfile/state/state.go:292 +0x1df
goroutine 22 [syscall]:
syscall.Syscall6(0xf7, 0x1, 0x216, 0xc42035ba18, 0x1000004, 0x0, 0x0, 0x0, 0xc42019ac00, 0x0)
/usr/local/go/src/syscall/asm_linux_amd64.s:44 +0x5
os.(*Process).blockUntilWaitable(0xc42035ea20, 0x0, 0x0, 0x8)
/usr/local/go/src/os/wait_waitid.go:31 +0x98
os.(*Process).wait(0xc42035ea20, 0xc420300100, 0xc420286658, 0xc420286658)
/usr/local/go/src/os/exec_unix.go:22 +0x3c
os.(*Process).Wait(0xc42035ea20, 0x859dc8, 0x859dd0, 0x859dc0)
/usr/local/go/src/os/exec.go:123 +0x2b
os/exec.(*Cmd).Wait(0xc420286580, 0x0, 0x0)
/usr/local/go/src/os/exec/exec.go:461 +0x5c
os/exec.(*Cmd).Run(0xc420286580, 0xc42028ea10, 0xc420286580)
/usr/local/go/src/os/exec/exec.go:305 +0x5c
os/exec.(*Cmd).CombinedOutput(0xc420286580, 0x4, 0xc42028e9a0, 0x7, 0x7, 0xc420286580)
/usr/local/go/src/os/exec/exec.go:521 +0x106
github.com/roboll/helmfile/helmexec.ShellRunner.Execute(0x83a907, 0x4, 0xc42028e9a0, 0x7, 0x7, 0x2, 0x2, 0x0, 0x0, 0x0)
/go/src/github.com/roboll/helmfile/helmexec/runner.go:23 +0x65
github.com/roboll/helmfile/helmexec.(*execer).exec(0xc4201a8360, 0xc42028e9a0, 0x7, 0x7, 0xc4202845f0, 0x5, 0x5, 0x5, 0xc4202845f0)
/go/src/github.com/roboll/helmfile/helmexec/exec.go:197 +0x2c5
github.com/roboll/helmfile/helmexec.(*execer).Fetch(0xc4201a8360, 0xc4201cd320, 0x19, 0xc4202845f0, 0x5, 0x5, 0x2, 0x5)
/go/src/github.com/roboll/helmfile/helmexec/exec.go:169 +0x204
github.com/roboll/helmfile/state.(*HelmState).downloadCharts.func1(0xc4201a8480, 0xc42018ab40, 0xc420200470, 0xe, 0x8925e0, 0xc4201a8360, 0xc4201f4380, 0xc4201ec660, 0xc420200490)
/go/src/github.com/roboll/helmfile/state/state.go:309 +0x478
created by github.com/roboll/helmfile/state.(*HelmState).downloadCharts
/go/src/github.com/roboll/helmfile/state/state.go:292 +0x1df
goroutine 23 [syscall]:
syscall.Syscall6(0xf7, 0x1, 0x21b, 0xc4202fba18, 0x1000004, 0x0, 0x0, 0x0, 0xc4203f0000, 0x0)
/usr/local/go/src/syscall/asm_linux_amd64.s:44 +0x5
os.(*Process).blockUntilWaitable(0xc42027d530, 0x0, 0x0, 0x8)
/usr/local/go/src/os/wait_waitid.go:31 +0x98
os.(*Process).wait(0xc42027d530, 0xc420114e00, 0xc4200c56d8, 0xc4200c56d8)
/usr/local/go/src/os/exec_unix.go:22 +0x3c
os.(*Process).Wait(0xc42027d530, 0x859dc8, 0x859dd0, 0x859dc0)
/usr/local/go/src/os/exec.go:123 +0x2b
os/exec.(*Cmd).Wait(0xc4200c5600, 0x0, 0x0)
/usr/local/go/src/os/exec/exec.go:461 +0x5c
os/exec.(*Cmd).Run(0xc4200c5600, 0xc4201d7a40, 0xc4200c5600)
/usr/local/go/src/os/exec/exec.go:305 +0x5c
os/exec.(*Cmd).CombinedOutput(0xc4200c5600, 0x4, 0xc4201d79d0, 0x7, 0x7, 0xc4200c5600)
/usr/local/go/src/os/exec/exec.go:521 +0x106
github.com/roboll/helmfile/helmexec.ShellRunner.Execute(0x83a907, 0x4, 0xc4201d79d0, 0x7, 0x7, 0x2, 0x2, 0x0, 0x0, 0x0)
/go/src/github.com/roboll/helmfile/helmexec/runner.go:23 +0x65
github.com/roboll/helmfile/helmexec.(*execer).exec(0xc4201a8360, 0xc4201d79d0, 0x7, 0x7, 0xc420087e50, 0x5, 0x5, 0x5, 0xc420087e50)
/go/src/github.com/roboll/helmfile/helmexec/exec.go:197 +0x2c5
github.com/roboll/helmfile/helmexec.(*execer).Fetch(0xc4201a8360, 0xc4201cc280, 0x13, 0xc420087e50, 0x5, 0x5, 0x2, 0x5)
/go/src/github.com/roboll/helmfile/helmexec/exec.go:169 +0x204
github.com/roboll/helmfile/state.(*HelmState).downloadCharts.func1(0xc4201a8480, 0xc42018ab40, 0xc420200470, 0xe, 0x8925e0, 0xc4201a8360, 0xc4201f4380, 0xc4201ec660, 0xc420200490)
/go/src/github.com/roboll/helmfile/state/state.go:309 +0x478
created by github.com/roboll/helmfile/state.(*HelmState).downloadCharts
/go/src/github.com/roboll/helmfile/state/state.go:292 +0x1df
goroutine 26 [runnable]:
syscall.Syscall6(0xf7, 0x1, 0x205, 0xc4202f9a18, 0x1000004, 0x0, 0x0, 0x0, 0xc4202f9a18, 0x0)
/usr/local/go/src/syscall/asm_linux_amd64.s:44 +0x5
os.(*Process).blockUntilWaitable(0xc4203c01e0, 0x0, 0x0, 0x8)
/usr/local/go/src/os/wait_waitid.go:31 +0x98
os.(*Process).wait(0xc4203c01e0, 0xc420114d80, 0xc4200c5578, 0xc4200c5578)
/usr/local/go/src/os/exec_unix.go:22 +0x3c
os.(*Process).Wait(0xc4203c01e0, 0x859dc8, 0x859dd0, 0x859dc0)
/usr/local/go/src/os/exec.go:123 +0x2b
os/exec.(*Cmd).Wait(0xc4200c54a0, 0x0, 0x0)
/usr/local/go/src/os/exec/exec.go:461 +0x5c
os/exec.(*Cmd).Run(0xc4200c54a0, 0xc4201d75e0, 0xc4200c54a0)
/usr/local/go/src/os/exec/exec.go:305 +0x5c
os/exec.(*Cmd).CombinedOutput(0xc4200c54a0, 0x4, 0xc4201d7570, 0x7, 0x7, 0xc4200c54a0)
/usr/local/go/src/os/exec/exec.go:521 +0x106
github.com/roboll/helmfile/helmexec.ShellRunner.Execute(0x83a907, 0x4, 0xc4201d7570, 0x7, 0x7, 0x2, 0x2, 0x0, 0x0, 0x0)
/go/src/github.com/roboll/helmfile/helmexec/runner.go:23 +0x65
github.com/roboll/helmfile/helmexec.(*execer).exec(0xc4201a8360, 0xc4201d7570, 0x7, 0x7, 0xc420087c70, 0x5, 0x5, 0x5, 0xc420087c70)
/go/src/github.com/roboll/helmfile/helmexec/exec.go:197 +0x2c5
github.com/roboll/helmfile/helmexec.(*execer).Fetch(0xc4201a8360, 0xc420015ff0, 0xa, 0xc420087c70, 0x5, 0x5, 0x2, 0x5)
/go/src/github.com/roboll/helmfile/helmexec/exec.go:169 +0x204
github.com/roboll/helmfile/state.(*HelmState).downloadCharts.func1(0xc4201a8480, 0xc42018ab40, 0xc420200470, 0xe, 0x8925e0, 0xc4201a8360, 0xc4201f4380, 0xc4201ec660, 0xc420200490)
/go/src/github.com/roboll/helmfile/state/state.go:309 +0x478
created by github.com/roboll/helmfile/state.(*HelmState).downloadCharts
/go/src/github.com/roboll/helmfile/state/state.go:292 +0x1df
goroutine 28 [syscall]:
syscall.Syscall6(0xf7, 0x1, 0x231, 0xc42035da18, 0x1000004, 0x0, 0x0, 0x0, 0xc4203f0400, 0x0)
/usr/local/go/src/syscall/asm_linux_amd64.s:44 +0x5
os.(*Process).blockUntilWaitable(0xc42035ea50, 0x0, 0x0, 0x8)
/usr/local/go/src/os/wait_waitid.go:31 +0x98
os.(*Process).wait(0xc42035ea50, 0xc420300180, 0xc4202867b8, 0xc4202867b8)
/usr/local/go/src/os/exec_unix.go:22 +0x3c
os.(*Process).Wait(0xc42035ea50, 0x859dc8, 0x859dd0, 0x859dc0)
/usr/local/go/src/os/exec.go:123 +0x2b
os/exec.(*Cmd).Wait(0xc4202866e0, 0x0, 0x0)
/usr/local/go/src/os/exec/exec.go:461 +0x5c
os/exec.(*Cmd).Run(0xc4202866e0, 0xc42028ee70, 0xc4202866e0)
/usr/local/go/src/os/exec/exec.go:305 +0x5c
os/exec.(*Cmd).CombinedOutput(0xc4202866e0, 0x4, 0xc42028ee00, 0x7, 0x7, 0xc4202866e0)
/usr/local/go/src/os/exec/exec.go:521 +0x106
github.com/roboll/helmfile/helmexec.ShellRunner.Execute(0x83a907, 0x4, 0xc42028ee00, 0x7, 0x7, 0x2, 0x2, 0x0, 0x0, 0x0)
/go/src/github.com/roboll/helmfile/helmexec/runner.go:23 +0x65
github.com/roboll/helmfile/helmexec.(*execer).exec(0xc4201a8360, 0xc42028ee00, 0x7, 0x7, 0xc4202847d0, 0x5, 0x5, 0x5, 0xc4202847d0)
/go/src/github.com/roboll/helmfile/helmexec/exec.go:197 +0x2c5
github.com/roboll/helmfile/helmexec.(*execer).Fetch(0xc4201a8360, 0xc420015e40, 0xa, 0xc4202847d0, 0x5, 0x5, 0x2, 0x5)
/go/src/github.com/roboll/helmfile/helmexec/exec.go:169 +0x204
github.com/roboll/helmfile/state.(*HelmState).downloadCharts.func1(0xc4201a8480, 0xc42018ab40, 0xc420200470, 0xe, 0x8925e0, 0xc4201a8360, 0xc4201f4380, 0xc4201ec660, 0xc420200490)
/go/src/github.com/roboll/helmfile/state/state.go:309 +0x478
created by github.com/roboll/helmfile/state.(*HelmState).downloadCharts
/go/src/github.com/roboll/helmfile/state/state.go:292 +0x1df
goroutine 13 [IO wait]:
internal/poll.runtime_pollWait(0x7fbb9732e6e0, 0x72, 0xc42024ace8)
/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420087d28, 0x72, 0xffffffffffffff01, 0x88d6e0, 0xa4d298)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420087d28, 0xc4203c2201, 0x200, 0x200)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420087d10, 0xc4203c2200, 0x200, 0x200, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:157 +0x17d
os.(*File).read(0xc42000c398, 0xc4203c2200, 0x200, 0x200, 0xc4203c2200, 0x0, 0x0)
/usr/local/go/src/os/file_unix.go:226 +0x4e
os.(*File).Read(0xc42000c398, 0xc4203c2200, 0x200, 0x200, 0xc4201a8480, 0xc42024aee0, 0xc42024ae60)
/usr/local/go/src/os/file.go:107 +0x6a
bytes.(*Buffer).ReadFrom(0xc4201d75e0, 0x88ca00, 0xc42000c398, 0x7fbb972ea020, 0xc4201d75e0, 0x1)
/usr/local/go/src/bytes/buffer.go:205 +0xa0
io.copyBuffer(0x88c260, 0xc4201d75e0, 0x88ca00, 0xc42000c398, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/io/io.go:386 +0x31a
io.Copy(0x88c260, 0xc4201d75e0, 0x88ca00, 0xc42000c398, 0x0, 0x0, 0x0)
/usr/local/go/src/io/io.go:362 +0x5a
os/exec.(*Cmd).writerDescriptor.func1(0xc42018ab40, 0xc420200470)
/usr/local/go/src/os/exec/exec.go:275 +0x4d
os/exec.(*Cmd).Start.func1(0xc4200c54a0, 0xc4201daba0)
/usr/local/go/src/os/exec/exec.go:396 +0x27
created by os/exec.(*Cmd).Start
/usr/local/go/src/os/exec/exec.go:395 +0x5df
goroutine 32 [IO wait]:
internal/poll.runtime_pollWait(0x7fbb9732e540, 0x72, 0xc420246ce8)
/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202f6338, 0x72, 0xffffffffffffff01, 0x88d6e0, 0xa4d298)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202f6338, 0xc420272801, 0x200, 0x200)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4202f6320, 0xc420272800, 0x200, 0x200, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:157 +0x17d
os.(*File).read(0xc4202ee058, 0xc420272800, 0x200, 0x200, 0xc420272800, 0x0, 0x0)
/usr/local/go/src/os/file_unix.go:226 +0x4e
os.(*File).Read(0xc4202ee058, 0xc420272800, 0x200, 0x200, 0x0, 0x0, 0xc420246e60)
/usr/local/go/src/os/file.go:107 +0x6a
bytes.(*Buffer).ReadFrom(0xc4202ec850, 0x88ca00, 0xc4202ee058, 0x7fbb972ea020, 0xc4202ec850, 0x1)
/usr/local/go/src/bytes/buffer.go:205 +0xa0
io.copyBuffer(0x88c260, 0xc4202ec850, 0x88ca00, 0xc4202ee058, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/io/io.go:386 +0x31a
io.Copy(0x88c260, 0xc4202ec850, 0x88ca00, 0xc4202ee058, 0x0, 0x0, 0x0)
/usr/local/go/src/io/io.go:362 +0x5a
os/exec.(*Cmd).writerDescriptor.func1(0x0, 0x0)
/usr/local/go/src/os/exec/exec.go:275 +0x4d
os/exec.(*Cmd).Start.func1(0xc420338160, 0xc4202f2240)
/usr/local/go/src/os/exec/exec.go:396 +0x27
created by os/exec.(*Cmd).Start
/usr/local/go/src/os/exec/exec.go:395 +0x5df
goroutine 50 [IO wait]:
internal/poll.runtime_pollWait(0x7fbb9732e470, 0x72, 0xc420248ce8)
/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202846a8, 0x72, 0xffffffffffffff01, 0x88d6e0, 0xa4d298)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202846a8, 0xc4203c2401, 0x200, 0x200)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420284690, 0xc4203c2400, 0x200, 0x200, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:157 +0x17d
os.(*File).read(0xc4202920d0, 0xc4203c2400, 0x200, 0x200, 0xc4203c2400, 0x0, 0x0)
/usr/local/go/src/os/file_unix.go:226 +0x4e
os.(*File).Read(0xc4202920d0, 0xc4203c2400, 0x200, 0x200, 0xc4201a8480, 0xc420248ee0, 0xc420248e60)
/usr/local/go/src/os/file.go:107 +0x6a
bytes.(*Buffer).ReadFrom(0xc42028ea10, 0x88ca00, 0xc4202920d0, 0x7fbb972ea020, 0xc42028ea10, 0xc420248e01)
/usr/local/go/src/bytes/buffer.go:205 +0xa0
io.copyBuffer(0x88c260, 0xc42028ea10, 0x88ca00, 0xc4202920d0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/io/io.go:386 +0x31a
io.Copy(0x88c260, 0xc42028ea10, 0x88ca00, 0xc4202920d0, 0x0, 0x0, 0x0)
/usr/local/go/src/io/io.go:362 +0x5a
os/exec.(*Cmd).writerDescriptor.func1(0xc42018ab40, 0xc420200470)
/usr/local/go/src/os/exec/exec.go:275 +0x4d
os/exec.(*Cmd).Start.func1(0xc420286580, 0xc420278520)
/usr/local/go/src/os/exec/exec.go:396 +0x27
created by os/exec.(*Cmd).Start
/usr/local/go/src/os/exec/exec.go:395 +0x5df
goroutine 14 [IO wait]:
internal/poll.runtime_pollWait(0x7fbb9732e060, 0x72, 0xc4202444e8)
/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202f6518, 0x72, 0xffffffffffffff01, 0x88d6e0, 0xa4d298)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202f6518, 0xc420184801, 0x200, 0x200)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4202f6500, 0xc420184800, 0x200, 0x200, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:157 +0x17d
os.(*File).read(0xc4202ee090, 0xc420184800, 0x200, 0x200, 0xc420184800, 0x0, 0x0)
/usr/local/go/src/os/file_unix.go:226 +0x4e
os.(*File).Read(0xc4202ee090, 0xc420184800, 0x200, 0x200, 0xc4201a8480, 0xc4202446e0, 0xc420244660)
/usr/local/go/src/os/file.go:107 +0x6a
bytes.(*Buffer).ReadFrom(0xc4202eccb0, 0x88ca00, 0xc4202ee090, 0x7fbb972ea020, 0xc4202eccb0, 0x1)
/usr/local/go/src/bytes/buffer.go:205 +0xa0
io.copyBuffer(0x88c260, 0xc4202eccb0, 0x88ca00, 0xc4202ee090, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/io/io.go:386 +0x31a
io.Copy(0x88c260, 0xc4202eccb0, 0x88ca00, 0xc4202ee090, 0x0, 0x0, 0x0)
/usr/local/go/src/io/io.go:362 +0x5a
os/exec.(*Cmd).writerDescriptor.func1(0xc42018ab40, 0xc420200470)
/usr/local/go/src/os/exec/exec.go:275 +0x4d
os/exec.(*Cmd).Start.func1(0xc4203382c0, 0xc4202f2360)
/usr/local/go/src/os/exec/exec.go:396 +0x27
created by os/exec.(*Cmd).Start
/usr/local/go/src/os/exec/exec.go:395 +0x5df
goroutine 51 [IO wait]:
internal/poll.runtime_pollWait(0x7fbb972aeea0, 0x72, 0xc420249ce8)
/usr/local/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420284888, 0x72, 0xffffffffffffff01, 0x88d6e0, 0xa4d298)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420284888, 0xc420272a01, 0x200, 0x200)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420284870, 0xc420272a00, 0x200, 0x200, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:157 +0x17d
os.(*File).read(0xc420292108, 0xc420272a00, 0x200, 0x200, 0xc420272a00, 0x0, 0x0)
/usr/local/go/src/os/file_unix.go:226 +0x4e
os.(*File).Read(0xc420292108, 0xc420272a00, 0x200, 0x200, 0xc4201a8480, 0xc420249ee0, 0xc420249e60)
/usr/local/go/src/os/file.go:107 +0x6a
bytes.(*Buffer).ReadFrom(0xc42028ee70, 0x88ca00, 0xc420292108, 0x7fbb972ea020, 0xc42028ee70, 0x1)
/usr/local/go/src/bytes/buffer.go:205 +0xa0
io.copyBuffer(0x88c260, 0xc42028ee70, 0x88ca00, 0xc420292108, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/io/io.go:386 +0x31a
io.Copy(0x88c260, 0xc42028ee70, 0x88ca00, 0xc420292108, 0x0, 0x0, 0x0)
/usr/local/go/src/io/io.go:362 +0x5a
os/exec.(*Cmd).writerDescriptor.func1(0xc42018ab40, 0xc420200470)
/usr/local/go/src/os/exec/exec.go:275 +0x4d
os/exec.(*Cmd).Start.func1(0xc4202866e0, 0xc420278640)
/usr/local/go/src/os/exec/exec.go:396 +0x27
created by os/exec.(*Cmd).Start
/usr/local/go/src/os/exec/exec.go:395 +0x5df
@sstarcher can you try with this fix ?: https://github.com/davidovich/helmfile/tree/fix_concurrent_map_writes
if it works, I'll PR it
Nice, good choice on changing it to a channel. I was going to take the lazy approach and use a sync.Map
looks to be working for me, but a comment - https://github.com/davidovich/helmfile/commit/a8120895e9a812b1025ca2745af8f746dea59821