fatal error: concurrent map read and map write goroutine 27 [running]: runtime.throw(0x73bc06, 0x21) /usr/lib/go/src/runtime/panic.go:596 +0x95 fp=0xc420162ec8 sp=0xc420162ea8 runtime.mapaccess2_faststr(0x6ce980, 0xc42015c0c0, 0xc420156300, 0x40, 0xc420162f80, 0x4063f5) /usr/lib/go/src/runtime/hashmap_fast.go:326 +0x50a fp=0xc420162f28 sp=0xc420162ec8 main.(*DockerContainerSource).MustGet(0xc420168180, 0xc420156300, 0x40, 0x1) /home/bradley/repos/bcicen/ctop/dockersource.go:109 +0x53 fp=0xc420162f90 sp=0xc420162f28 main.(*DockerContainerSource).Loop(0xc420168180) /home/bradley/repos/bcicen/ctop/dockersource.go:102 +0x9d fp=0xc420162fd8 sp=0xc420162f90 runtime.goexit() /usr/lib/go/src/runtime/asm_amd64.s:2197 +0x1 fp=0xc420162fe0 sp=0xc420162fd8 created by main.NewDockerContainerSource /home/bradley/repos/bcicen/ctop/dockersource.go:34 +0x148 goroutine 1 [runnable]: github.com/gizak/termui.ThemeAttr(0x73354d, 0x9, 0x4102f2) /home/bradley/go/src/github.com/gizak/termui/theme.go:101 +0x5a github.com/gizak/termui.NewBlock(0x410b48) /home/bradley/go/src/github.com/gizak/termui/block.go:135 +0xb5 github.com/gizak/termui.NewGauge(0xc42015a268) /home/bradley/go/src/github.com/gizak/termui/gauge.go:39 +0x26 github.com/bcicen/ctop/cwidgets/compact.NewGaugeCol(0xc4201571c0) /home/bradley/go/src/github.com/bcicen/ctop/cwidgets/compact/gauge.go:12 +0x26 github.com/bcicen/ctop/cwidgets/compact.NewCompact(0xc4201571c0, 0xc, 0x7f8e6f5544b0) /home/bradley/go/src/github.com/bcicen/ctop/cwidgets/compact/main.go:32 +0x90 main.NewContainer(0xc4201571c0, 0x40, 0xa846e0, 0xc420174af0, 0xac5f40) /home/bradley/repos/bcicen/ctop/container.go:21 +0x3f main.(*DockerContainerSource).MustGet(0xc420168180, 0xc4201571c0, 0x40, 0xc4201b92b0) /home/bradley/repos/bcicen/ctop/dockersource.go:115 +0xfd main.(*DockerContainerSource).refreshAll(0xc420168180) /home/bradley/repos/bcicen/ctop/dockersource.go:93 +0x150 main.NewDockerContainerSource(0x670885) /home/bradley/repos/bcicen/ctop/dockersource.go:35 +0x156 main.NewGridCursor(0x7350d6) /home/bradley/repos/bcicen/ctop/cursor.go:15 +0x26 main.main() /home/bradley/repos/bcicen/ctop/main.go:45 +0xe7 goroutine 17 [syscall, locked to thread]: runtime.goexit() /usr/lib/go/src/runtime/asm_amd64.s:2197 +0x1 goroutine 5 [syscall]: os/signal.signal_recv(0x0) /usr/lib/go/src/runtime/sigqueue.go:116 +0x104 os/signal.loop() /usr/lib/go/src/os/signal/signal_unix.go:22 +0x22 created by os/signal.init.1 /usr/lib/go/src/os/signal/signal_unix.go:28 +0x41 goroutine 6 [select, locked to thread]: runtime.gopark(0x743900, 0x0, 0x7326fc, 0x6, 0x18, 0x2) /usr/lib/go/src/runtime/proc.go:271 +0x13a runtime.selectgoImpl(0xc420037f50, 0x0, 0x18) /usr/lib/go/src/runtime/select.go:423 +0x1364 runtime.selectgo(0xc420037f50) /usr/lib/go/src/runtime/select.go:238 +0x1c runtime.ensureSigM.func1() /usr/lib/go/src/runtime/signal_unix.go:434 +0x2dd runtime.goexit() /usr/lib/go/src/runtime/asm_amd64.s:2197 +0x1 goroutine 18 [select]: github.com/nsf/termbox-go.Init.func1() /home/bradley/go/src/github.com/nsf/termbox-go/api.go:86 +0x3fd created by github.com/nsf/termbox-go.Init /home/bradley/go/src/github.com/nsf/termbox-go/api.go:105 +0x5ce goroutine 19 [select]: github.com/nsf/termbox-go.PollEvent(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0) /home/bradley/go/src/github.com/nsf/termbox-go/api.go:320 +0x61e github.com/gizak/termui.hookTermboxEvt() /home/bradley/go/src/github.com/gizak/termui/events.go:126 +0x3e created by github.com/gizak/termui.Init /home/bradley/go/src/github.com/gizak/termui/render.go:38 +0xa4 goroutine 20 [chan receive]: github.com/gizak/termui.(*EvtStream).Merge.func1(0x7330b8, 0x8, 0xc4200784b0, 0xc42005e600) /home/bradley/go/src/github.com/gizak/termui/events.go:197 +0x84 created by github.com/gizak/termui.(*EvtStream).Merge /home/bradley/go/src/github.com/gizak/termui/events.go:202 +0x108 goroutine 21 [semacquire]: sync.runtime_Semacquire(0xc4200784e4) /usr/lib/go/src/runtime/sema.go:47 +0x34 sync.(*WaitGroup).Wait(0xc4200784d8) /usr/lib/go/src/sync/waitgroup.go:131 +0x7a github.com/gizak/termui.(*EvtStream).Init.func1(0xc4200784b0) /home/bradley/go/src/github.com/gizak/termui/events.go:166 +0x31 created by github.com/gizak/termui.(*EvtStream).Init /home/bradley/go/src/github.com/gizak/termui/events.go:168 +0x6b goroutine 22 [chan receive]: github.com/gizak/termui.(*EvtStream).Merge.func1(0x732c7c, 0x7, 0xc4200784b0, 0xc420154060) /home/bradley/go/src/github.com/gizak/termui/events.go:197 +0x84 created by github.com/gizak/termui.(*EvtStream).Merge /home/bradley/go/src/github.com/gizak/termui/events.go:202 +0x108 goroutine 23 [sleep]: time.Sleep(0x3b9aca00) /usr/lib/go/src/runtime/time.go:59 +0xf9 github.com/gizak/termui.NewTimerCh.func1(0x3b9aca00, 0xc4201540c0, 0xc4201540c0) /home/bradley/go/src/github.com/gizak/termui/events.go:296 +0x4a created by github.com/gizak/termui.NewTimerCh /home/bradley/go/src/github.com/gizak/termui/events.go:308 +0x6c goroutine 24 [chan receive]: github.com/gizak/termui.(*EvtStream).Merge.func1(0x732351, 0x5, 0xc4200784b0, 0xc4201540c0) /home/bradley/go/src/github.com/gizak/termui/events.go:197 +0x84 created by github.com/gizak/termui.(*EvtStream).Merge /home/bradley/go/src/github.com/gizak/termui/events.go:202 +0x108 goroutine 25 [chan receive]: github.com/gizak/termui.(*EvtStream).Merge.func1(0x732606, 0x6, 0xc4200784b0, 0xc42005e660) /home/bradley/go/src/github.com/gizak/termui/events.go:197 +0x84 created by github.com/gizak/termui.(*EvtStream).Merge /home/bradley/go/src/github.com/gizak/termui/events.go:202 +0x108 goroutine 26 [chan receive]: github.com/gizak/termui.Init.func2() /home/bradley/go/src/github.com/gizak/termui/render.go:64 +0x67 created by github.com/gizak/termui.Init /home/bradley/go/src/github.com/gizak/termui/render.go:67 +0x371 goroutine 32 [semacquire]: sync.runtime_notifyListWait(0xc4200b4b80, 0xc400000000) /usr/lib/go/src/runtime/sema.go:297 +0x10b sync.(*Cond).Wait(0xc4200b4b70) /usr/lib/go/src/sync/cond.go:57 +0x89 io.(*pipe).read(0xc4200b4b40, 0xc420095200, 0x200, 0x200, 0x0, 0x0, 0x0) /usr/lib/go/src/io/pipe.go:47 +0x104 io.(*PipeReader).Read(0xc42000e138, 0xc420095200, 0x200, 0x200, 0x0, 0x200, 0x1d) /usr/lib/go/src/io/pipe.go:130 +0x4c encoding/json.(*Decoder).refill(0xc42009a540, 0x300, 0x2e0) /usr/lib/go/src/encoding/json/stream.go:152 +0x109 encoding/json.(*Decoder).readValue(0xc42009a540, 0x0, 0x0, 0x410b48) /usr/lib/go/src/encoding/json/stream.go:128 +0x1ca encoding/json.(*Decoder).Decode(0xc42009a540, 0x6a5aa0, 0xc4201c0000, 0x40, 0xc4201549c0) /usr/lib/go/src/encoding/json/stream.go:57 +0x85 github.com/fsouza/go-dockerclient.(*Client).Stats(0xc42016c000, 0xc420156300, 0x40, 0xc4201549c0, 0x1, 0xc420154900, 0x0, 0x0, 0x0, 0x0, ...) /home/bradley/go/src/github.com/fsouza/go-dockerclient/container.go:1088 +0x359 github.com/bcicen/ctop/metrics.(*Docker).Start.func1(0xc420174620, 0xc4201549c0) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:39 +0xbf created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:41 +0xdf goroutine 9 [chan receive]: github.com/fsouza/go-dockerclient.(*Client).stream.func1(0x7f8e6f4f81b8, 0xc420019ec0, 0xa86300, 0xc42000e148) /home/bradley/go/src/github.com/fsouza/go-dockerclient/client.go:556 +0x54 created by github.com/fsouza/go-dockerclient.(*Client).stream /home/bradley/go/src/github.com/fsouza/go-dockerclient/client.go:558 +0x466 goroutine 33 [chan receive]: github.com/bcicen/ctop/metrics.(*Docker).Start.func2(0xc420174620, 0xc4201549c0) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:45 +0x82 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:52 +0x10b goroutine 34 [chan receive]: main.(*Container).Read.func1(0xc420154960, 0xc420153000) /home/bradley/repos/bcicen/ctop/container.go:67 +0x66 created by main.(*Container).Read /home/bradley/repos/bcicen/ctop/container.go:74 +0x4d goroutine 35 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func1(0xc420174690, 0xc420154ae0) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:32 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:41 +0xdf goroutine 36 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func2(0xc420174690, 0xc420154ae0) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:43 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:52 +0x10b goroutine 7 [runnable]: net.runtime_pollWait(0x7f8e6f4b8f68, 0x72, 0x5) /usr/lib/go/src/runtime/netpoll.go:164 +0x59 net.(*pollDesc).wait(0xc42011b028, 0x72, 0xa81b20, 0xa7e530) /usr/lib/go/src/net/fd_poll_runtime.go:75 +0x38 net.(*pollDesc).waitRead(0xc42011b028, 0xc4201da000, 0x1000) /usr/lib/go/src/net/fd_poll_runtime.go:80 +0x34 net.(*netFD).Read(0xc42011afc0, 0xc4201da000, 0x1000, 0x1000, 0x0, 0xa81b20, 0xa7e530) /usr/lib/go/src/net/fd_unix.go:250 +0x1b7 net.(*conn).Read(0xc42000e148, 0xc4201da000, 0x1000, 0x1000, 0x0, 0x0, 0x0) /usr/lib/go/src/net/net.go:181 +0x70 bufio.(*Reader).fill(0xc42005f3e0) /usr/lib/go/src/bufio/bufio.go:97 +0x117 bufio.(*Reader).ReadSlice(0xc42005f3e0, 0xa, 0x0, 0x0, 0x94, 0x4b59a3, 0x0) /usr/lib/go/src/bufio/bufio.go:338 +0xbb bufio.(*Reader).ReadLine(0xc42005f3e0, 0xc4200b0360, 0x90, 0x90, 0x720920, 0xc420033c20, 0x632f2e) /usr/lib/go/src/bufio/bufio.go:367 +0x37 net/textproto.(*Reader).readLineSlice(0xc420033c48, 0x0, 0xc420033b80, 0x410b48, 0x90, 0x720920) /usr/lib/go/src/net/textproto/reader.go:55 +0x5f net/textproto.(*Reader).ReadLine(0xc420033c48, 0xc4200b0360, 0x73545f, 0xf, 0x6b63e0) /usr/lib/go/src/net/textproto/reader.go:36 +0x2f net/http.ReadResponse(0xc42005f3e0, 0xc42000b800, 0xc42000e148, 0x0, 0x0) /usr/lib/go/src/net/http/response.go:148 +0xca github.com/fsouza/go-dockerclient.(*Client).stream(0xc42016c000, 0x731b24, 0x3, 0xc42005f260, 0x5e, 0x10100, 0x0, 0x0, 0x0, 0xa80160, ...) /home/bradley/go/src/github.com/fsouza/go-dockerclient/client.go:570 +0x578 github.com/fsouza/go-dockerclient.(*Client).Stats.func2(0xc42016c000, 0xc420156300, 0x40, 0xc4201549c0, 0x1, 0xc420154900, 0x0, 0x0, 0x0, 0x0, ...) /home/bradley/go/src/github.com/fsouza/go-dockerclient/container.go:1058 +0x1e3 created by github.com/fsouza/go-dockerclient.(*Client).Stats /home/bradley/go/src/github.com/fsouza/go-dockerclient/container.go:1072 +0x22b goroutine 37 [runnable]: main.(*Container).Read.func1(0xc420154a80, 0xc420153180) /home/bradley/repos/bcicen/ctop/container.go:66 created by main.(*Container).Read /home/bradley/repos/bcicen/ctop/container.go:74 +0x4d goroutine 8 [select]: github.com/fsouza/go-dockerclient.(*Client).Stats.func3(0xc420156300, 0x40, 0xc4201549c0, 0x1, 0xc420154900, 0x0, 0x0, 0x0, 0x0, 0xc42000e138, ...) /home/bradley/go/src/github.com/fsouza/go-dockerclient/container.go:1078 +0xeb created by github.com/fsouza/go-dockerclient.(*Client).Stats /home/bradley/go/src/github.com/fsouza/go-dockerclient/container.go:1084 +0x2d8 goroutine 38 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func1(0xc420174700, 0xc420154c00) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:32 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:41 +0xdf goroutine 39 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func2(0xc420174700, 0xc420154c00) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:43 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:52 +0x10b goroutine 40 [runnable]: main.(*Container).Read.func1(0xc420154ba0, 0xc420153300) /home/bradley/repos/bcicen/ctop/container.go:66 created by main.(*Container).Read /home/bradley/repos/bcicen/ctop/container.go:74 +0x4d goroutine 41 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func1(0xc420174770, 0xc420154d20) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:32 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:41 +0xdf goroutine 42 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func2(0xc420174770, 0xc420154d20) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:43 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:52 +0x10b goroutine 43 [runnable]: main.(*Container).Read.func1(0xc420154cc0, 0xc420153480) /home/bradley/repos/bcicen/ctop/container.go:66 created by main.(*Container).Read /home/bradley/repos/bcicen/ctop/container.go:74 +0x4d goroutine 44 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func1(0xc4201747e0, 0xc420154e40) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:32 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:41 +0xdf goroutine 45 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func2(0xc4201747e0, 0xc420154e40) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:43 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:52 +0x10b goroutine 46 [chan receive]: main.(*Container).Read.func1(0xc420154de0, 0xc420153600) /home/bradley/repos/bcicen/ctop/container.go:67 +0x66 created by main.(*Container).Read /home/bradley/repos/bcicen/ctop/container.go:74 +0x4d goroutine 47 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func1(0xc420174850, 0xc420154f60) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:32 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:41 +0xdf goroutine 48 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func2(0xc420174850, 0xc420154f60) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:43 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:52 +0x10b goroutine 49 [runnable]: main.(*Container).Read.func1(0xc420154f00, 0xc420153780) /home/bradley/repos/bcicen/ctop/container.go:66 created by main.(*Container).Read /home/bradley/repos/bcicen/ctop/container.go:74 +0x4d goroutine 50 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func1(0xc4201748c0, 0xc420155080) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:32 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:41 +0xdf goroutine 51 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func2(0xc4201748c0, 0xc420155080) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:43 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:52 +0x10b goroutine 52 [runnable]: main.(*Container).Read.func1(0xc420155020, 0xc420153900) /home/bradley/repos/bcicen/ctop/container.go:66 created by main.(*Container).Read /home/bradley/repos/bcicen/ctop/container.go:74 +0x4d goroutine 53 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func1(0xc420174930, 0xc4201551a0) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:32 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:41 +0xdf goroutine 54 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func2(0xc420174930, 0xc4201551a0) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:43 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:52 +0x10b goroutine 55 [runnable]: main.(*Container).Read.func1(0xc420155140, 0xc420153a80) /home/bradley/repos/bcicen/ctop/container.go:66 created by main.(*Container).Read /home/bradley/repos/bcicen/ctop/container.go:74 +0x4d goroutine 56 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func1(0xc4201749a0, 0xc4201552c0) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:32 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:41 +0xdf goroutine 57 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func2(0xc4201749a0, 0xc4201552c0) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:43 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:52 +0x10b goroutine 58 [runnable]: main.(*Container).Read.func1(0xc420155260, 0xc420153c00) /home/bradley/repos/bcicen/ctop/container.go:66 created by main.(*Container).Read /home/bradley/repos/bcicen/ctop/container.go:74 +0x4d goroutine 59 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func1(0xc420174a10, 0xc4201553e0) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:32 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:41 +0xdf goroutine 60 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func2(0xc420174a10, 0xc4201553e0) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:43 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:52 +0x10b goroutine 61 [runnable]: main.(*Container).Read.func1(0xc420155380, 0xc420153d80) /home/bradley/repos/bcicen/ctop/container.go:66 created by main.(*Container).Read /home/bradley/repos/bcicen/ctop/container.go:74 +0x4d goroutine 62 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func1(0xc420174a80, 0xc420155500) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:32 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:41 +0xdf goroutine 63 [runnable]: github.com/bcicen/ctop/metrics.(*Docker).Start.func2(0xc420174a80, 0xc420155500) /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:43 created by github.com/bcicen/ctop/metrics.(*Docker).Start /home/bradley/go/src/github.com/bcicen/ctop/metrics/docker.go:52 +0x10b goroutine 64 [runnable]: main.(*Container).Read.func1(0xc4201554a0, 0xc420153f00) /home/bradley/repos/bcicen/ctop/container.go:66 created by main.(*Container).Read /home/bradley/repos/bcicen/ctop/container.go:74 +0x4d