TaserudConsulting / goprocmgr

ISC License
0 stars 0 forks source link

Race condition when hammering the API too much #10

Open etu opened 3 weeks ago

etu commented 3 weeks ago

I did read from the API using the --list command and then looped that output in a bash loop to trigger --start for all the items and it managed to crash the application.

2024/06/12 08:54:01 Parsed config file: /home/etu/.config/goprocmgr.json
2024/06/12 08:54:01 Listening on http://127.0.0.1:6969
fatal error: concurrent map read and map write

goroutine 19 [running]:
main.(*Serve).GetServer(0xc00011ed20, {0xc000128a60, 0xd})
    github.com/TaserudConsulting/goprocmgr/serve.go:316 +0xc9
main.(*Serve).GetServerList(0xc00011ed20)
    github.com/TaserudConsulting/goprocmgr/serve.go:340 +0xb4
main.(*Serve).newRouter.func9({0x817178?, 0xc0001e0000?}, 0xc0001b4d50?)
    github.com/TaserudConsulting/goprocmgr/serve.go:281 +0x31d
net/http.HandlerFunc.ServeHTTP(0xc0001a5440?, {0x817178?, 0xc0001e0000?}, 0x4cbecf?)
    net/http/server.go:2166 +0x29
github.com/gorilla/mux.(*Router).ServeHTTP(0xc0001aa000, {0x817178, 0xc0001e0000}, 0xc0001a4ea0)
    github.com/gorilla/mux@v1.8.0/mux.go:210 +0x1e2
net/http.serverHandler.ServeHTTP({0xc0001b4ba0?}, {0x817178?, 0xc0001e0000?}, 0x6?)
    net/http/server.go:3137 +0x8e
net/http.(*conn).serve(0xc00019e6c0, {0x817838, 0xc0001b4ab0})
    net/http/server.go:2039 +0x5e8
created by net/http.(*Server).Serve in goroutine 1
    net/http/server.go:3285 +0x4b4

goroutine 1 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd4800a680, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0x3?, 0x1?, 0x0)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc000158980)
    internal/poll/fd_unix.go:611 +0x2ac
net.(*netFD).accept(0xc000158980)
    net/fd_unix.go:172 +0x29
net.(*TCPListener).accept(0xc000146800)
    net/tcpsock_posix.go:159 +0x1e
net.(*TCPListener).Accept(0xc000146800)
    net/tcpsock.go:327 +0x30
net/http.(*Server).Serve(0xc0001c6000, {0x8173b8, 0xc000146800})
    net/http/server.go:3255 +0x33e
net/http.(*Server).ListenAndServe(0xc0001c6000)
    net/http/server.go:3184 +0x71
net/http.ListenAndServe(...)
    net/http/server.go:3438
main.(*Serve).Run(0xc00011ed20)
    github.com/TaserudConsulting/goprocmgr/serve.go:62 +0x1ed
main.main()
    github.com/TaserudConsulting/goprocmgr/main.go:64 +0x645

goroutine 21 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd4800a588, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc000158a00?, 0xc000124400?, 0x0)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000158a00, {0xc000124400, 0x400, 0x400})
    internal/poll/fd_unix.go:164 +0x27a
net.(*netFD).Read(0xc000158a00, {0xc000124400?, 0x15?, 0x195?})
    net/fd_posix.go:55 +0x25
net.(*conn).Read(0xc00011a1e8, {0xc000124400?, 0x0?, 0x0?})
    net/net.go:179 +0x45
bufio.(*Reader).fill(0xc00012a300)
    bufio/bufio.go:110 +0x103
bufio.(*Reader).Peek(0xc00012a300, 0x2)
    bufio/bufio.go:148 +0x53
github.com/gorilla/websocket.(*Conn).read(0xc0001e4000, 0x0?)
    github.com/gorilla/websocket@v1.5.1/conn.go:378 +0x26
github.com/gorilla/websocket.(*Conn).advanceFrame(0xc0001e4000)
    github.com/gorilla/websocket@v1.5.1/conn.go:824 +0x6d
github.com/gorilla/websocket.(*Conn).NextReader(0xc0001e4000)
    github.com/gorilla/websocket@v1.5.1/conn.go:1034 +0x13e
github.com/gorilla/websocket.(*Conn).ReadMessage(0xc00011ed20?)
    github.com/gorilla/websocket@v1.5.1/conn.go:1120 +0x13
main.(*Serve).newRouter.func9.1()
    github.com/TaserudConsulting/goprocmgr/serve.go:249 +0xbe
created by main.(*Serve).newRouter.func9 in goroutine 19
    github.com/TaserudConsulting/goprocmgr/serve.go:237 +0x1a9

goroutine 26 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd480098f0, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00012a480?, 0xc0003eb000?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00012a480, {0xc0003eb000, 0x1000, 0x1000})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc00011a2c0, {0xc0003eb000?, 0x40fd3b?, 0xffffffffffffffff?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000158e00)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func1()
    github.com/TaserudConsulting/goprocmgr/runner.go:121 +0x92
created by main.(*Runner).Start in goroutine 16
    github.com/TaserudConsulting/goprocmgr/runner.go:120 +0x9d9

goroutine 36 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd4800a398, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc000222180?, 0xc0000ac058?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000222180, {0xc0000ac058, 0xfa8, 0xfa8})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc000258010, {0xc0000ac058?, 0x43c5ae?, 0x1c0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000272000)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func1()
    github.com/TaserudConsulting/goprocmgr/runner.go:121 +0x92
created by main.(*Runner).Start in goroutine 5
    github.com/TaserudConsulting/goprocmgr/runner.go:120 +0x9d9

goroutine 37 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd4800a1a8, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc000222240?, 0xc0001fe0a8?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000222240, {0xc0001fe0a8, 0xf58, 0xf58})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc000258020, {0xc0001fe0a8?, 0x43c5ae?, 0xe0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000272080)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func2()
    github.com/TaserudConsulting/goprocmgr/runner.go:136 +0x92
created by main.(*Runner).Start in goroutine 5
    github.com/TaserudConsulting/goprocmgr/runner.go:135 +0xace

goroutine 7 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd4800a0b0, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00009c120?, 0xc00024f058?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00009c120, {0xc00024f058, 0xfa8, 0xfa8})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc000074010, {0xc00024f058?, 0x43c5ae?, 0x1c0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000040100)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func1()
    github.com/TaserudConsulting/goprocmgr/runner.go:121 +0x92
created by main.(*Runner).Start in goroutine 38
    github.com/TaserudConsulting/goprocmgr/runner.go:120 +0x9d9

goroutine 8 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd48009fb8, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00009c1e0?, 0xc0002760a8?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00009c1e0, {0xc0002760a8, 0xf58, 0xf58})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc000074020, {0xc0002760a8?, 0x4081e0?, 0xc0001028c0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000040180)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func2()
    github.com/TaserudConsulting/goprocmgr/runner.go:136 +0x92
created by main.(*Runner).Start in goroutine 38
    github.com/TaserudConsulting/goprocmgr/runner.go:135 +0xace

goroutine 10 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd48009ec0, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00009c3c0?, 0xc000288058?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00009c3c0, {0xc000288058, 0xfa8, 0xfa8})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc000074038, {0xc000288058?, 0x4081e0?, 0xc0001028c0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000040280)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func1()
    github.com/TaserudConsulting/goprocmgr/runner.go:121 +0x92
created by main.(*Runner).Start in goroutine 39
    github.com/TaserudConsulting/goprocmgr/runner.go:120 +0x9d9

goroutine 11 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd48009dc8, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00009c480?, 0xc0002780a8?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00009c480, {0xc0002780a8, 0xf58, 0xf58})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc000074048, {0xc0002780a8?, 0x4081e0?, 0xc0001028c0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000040300)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func2()
    github.com/TaserudConsulting/goprocmgr/runner.go:136 +0x92
created by main.(*Runner).Start in goroutine 39
    github.com/TaserudConsulting/goprocmgr/runner.go:135 +0xace

goroutine 51 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd48009cd0, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00039e0c0?, 0xc00030a058?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00039e0c0, {0xc00030a058, 0xfa8, 0xfa8})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc0003b2000, {0xc00030a058?, 0x43c5ae?, 0x1c0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc0003c4000)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func1()
    github.com/TaserudConsulting/goprocmgr/runner.go:121 +0x92
created by main.(*Runner).Start in goroutine 24
    github.com/TaserudConsulting/goprocmgr/runner.go:120 +0x9d9

goroutine 52 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd48009bd8, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00039e180?, 0xc00030b0a8?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00039e180, {0xc00030b0a8, 0xf58, 0xf58})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc0003b2010, {0xc00030b0a8?, 0x4081e0?, 0xc0001028c0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc0003c4080)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func2()
    github.com/TaserudConsulting/goprocmgr/runner.go:136 +0x92
created by main.(*Runner).Start in goroutine 24
    github.com/TaserudConsulting/goprocmgr/runner.go:135 +0xace

goroutine 14 [chan send]:
main.(*Runner).Start.func1()
    github.com/TaserudConsulting/goprocmgr/runner.go:129 +0x88
created by main.(*Runner).Start in goroutine 12
    github.com/TaserudConsulting/goprocmgr/runner.go:120 +0x9d9

goroutine 15 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd480099e8, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00009c6c0?, 0xc0002890a8?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00009c6c0, {0xc0002890a8, 0xf58, 0xf58})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc000074078, {0xc0002890a8?, 0x4081e0?, 0xc0001028c0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000040480)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func2()
    github.com/TaserudConsulting/goprocmgr/runner.go:136 +0x92
created by main.(*Runner).Start in goroutine 12
    github.com/TaserudConsulting/goprocmgr/runner.go:135 +0xace

goroutine 27 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd480097f8, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00012a540?, 0xc0003ec0a8?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00012a540, {0xc0003ec0a8, 0xf58, 0xf58})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc00011a2d0, {0xc0003ec0a8?, 0x4081e0?, 0xc0001028c0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000158e80)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func2()
    github.com/TaserudConsulting/goprocmgr/runner.go:136 +0x92
created by main.(*Runner).Start in goroutine 16
    github.com/TaserudConsulting/goprocmgr/runner.go:135 +0xace

goroutine 29 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd48026280, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00012a780?, 0xc0003f7000?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00012a780, {0xc0003f7000, 0x1000, 0x1000})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc00011a2e8, {0xc0003f7000?, 0x0?, 0x0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000158f00)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func1()
    github.com/TaserudConsulting/goprocmgr/runner.go:121 +0x92
created by main.(*Runner).Start in goroutine 53
    github.com/TaserudConsulting/goprocmgr/runner.go:120 +0x9d9

goroutine 30 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd48026188, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00012a840?, 0xc0003f80a8?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00012a840, {0xc0003f80a8, 0xf58, 0xf58})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc00011a2f8, {0xc0003f80a8?, 0x4081e0?, 0xc0001028c0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000158f80)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func2()
    github.com/TaserudConsulting/goprocmgr/runner.go:136 +0x92
created by main.(*Runner).Start in goroutine 53
    github.com/TaserudConsulting/goprocmgr/runner.go:135 +0xace

goroutine 67 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd48026090, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00009c840?, 0xc000482000?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00009c840, {0xc000482000, 0x1000, 0x1000})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc000074098, {0xc000482000?, 0x40fd3b?, 0xffffffffffffffff?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000040580)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func1()
    github.com/TaserudConsulting/goprocmgr/runner.go:121 +0x92
created by main.(*Runner).Start in goroutine 54
    github.com/TaserudConsulting/goprocmgr/runner.go:120 +0x9d9

goroutine 68 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd48025f98, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00009c900?, 0xc0004830a8?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00009c900, {0xc0004830a8, 0xf58, 0xf58})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc0000740a8, {0xc0004830a8?, 0x4081e0?, 0xc0001028c0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000040600)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func2()
    github.com/TaserudConsulting/goprocmgr/runner.go:136 +0x92
created by main.(*Runner).Start in goroutine 54
    github.com/TaserudConsulting/goprocmgr/runner.go:135 +0xace

goroutine 70 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd48025ea0, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00009ca80?, 0xc00028a000?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00009ca80, {0xc00028a000, 0x1000, 0x1000})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc0000740c0, {0xc00028a000?, 0x0?, 0x0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000040680)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func1()
    github.com/TaserudConsulting/goprocmgr/runner.go:121 +0x92
created by main.(*Runner).Start in goroutine 55
    github.com/TaserudConsulting/goprocmgr/runner.go:120 +0x9d9

goroutine 71 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd48025da8, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00009cb40?, 0xc00028b0a8?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00009cb40, {0xc00028b0a8, 0xf58, 0xf58})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc0000740d0, {0xc00028b0a8?, 0x4081e0?, 0xc0001028c0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000040700)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func2()
    github.com/TaserudConsulting/goprocmgr/runner.go:136 +0x92
created by main.(*Runner).Start in goroutine 55
    github.com/TaserudConsulting/goprocmgr/runner.go:135 +0xace

goroutine 33 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd48025cb0, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00012a9c0?, 0xc000339000?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00012a9c0, {0xc000339000, 0x1000, 0x1000})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc00011a318, {0xc000339000?, 0x0?, 0x0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000159080)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func1()
    github.com/TaserudConsulting/goprocmgr/runner.go:121 +0x92
created by main.(*Runner).Start in goroutine 31
    github.com/TaserudConsulting/goprocmgr/runner.go:120 +0x9d9

goroutine 82 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd48025bb8, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00012aa80?, 0xc000338030?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00012aa80, {0xc000338030, 0xfd0, 0xfd0})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc00011a328, {0xc000338030?, 0x4081e0?, 0xc0001028c0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000159100)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func2()
    github.com/TaserudConsulting/goprocmgr/runner.go:136 +0x92
created by main.(*Runner).Start in goroutine 31
    github.com/TaserudConsulting/goprocmgr/runner.go:135 +0xace

goroutine 58 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd48025ac0, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00039e360?, 0xc000491000?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00039e360, {0xc000491000, 0x1000, 0x1000})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc0003b2048, {0xc000491000?, 0x40fd3b?, 0xffffffffffffffff?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc0003c4480)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func1()
    github.com/TaserudConsulting/goprocmgr/runner.go:121 +0x92
created by main.(*Runner).Start in goroutine 56
    github.com/TaserudConsulting/goprocmgr/runner.go:120 +0x9d9

goroutine 59 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd480259c8, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00039e420?, 0xc0004a0000?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00039e420, {0xc0004a0000, 0x1000, 0x1000})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc0003b2058, {0xc0004a0000?, 0x0?, 0x0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc0003c4500)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func2()
    github.com/TaserudConsulting/goprocmgr/runner.go:136 +0x92
created by main.(*Runner).Start in goroutine 56
    github.com/TaserudConsulting/goprocmgr/runner.go:135 +0xace

goroutine 73 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd480258d0, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00009ccc0?, 0xc0004c0000?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00009ccc0, {0xc0004c0000, 0x1000, 0x1000})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc0000740e8, {0xc0004c0000?, 0x0?, 0x0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000040780)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func1()
    github.com/TaserudConsulting/goprocmgr/runner.go:121 +0x92
created by main.(*Runner).Start in goroutine 60
    github.com/TaserudConsulting/goprocmgr/runner.go:120 +0x9d9

goroutine 74 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd480257d8, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00009cd80?, 0xc0004c1000?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00009cd80, {0xc0004c1000, 0x1000, 0x1000})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc0000740f8, {0xc0004c1000?, 0x0?, 0x0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000040800)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func2()
    github.com/TaserudConsulting/goprocmgr/runner.go:136 +0x92
created by main.(*Runner).Start in goroutine 60
    github.com/TaserudConsulting/goprocmgr/runner.go:135 +0xace

goroutine 64 [chan send]:
main.(*Runner).Start(0xc000118240, {0xc0001336c1, 0xe}, 0xc00011ed20)
    github.com/TaserudConsulting/goprocmgr/runner.go:152 +0xb3e
main.(*Serve).newRouter.func5({0x817178, 0xc0001e0540}, 0xc00034ec30?)
    github.com/TaserudConsulting/goprocmgr/serve.go:172 +0x85
net/http.HandlerFunc.ServeHTTP(0xc00031aea0?, {0x817178?, 0xc0001e0540?}, 0x4cbecf?)
    net/http/server.go:2166 +0x29
github.com/gorilla/mux.(*Router).ServeHTTP(0xc0001aa000, {0x817178, 0xc0001e0540}, 0xc00031ac60)
    github.com/gorilla/mux@v1.8.0/mux.go:210 +0x1e2
net/http.serverHandler.ServeHTTP({0xc00034eae0?}, {0x817178?, 0xc0001e0540?}, 0x6?)
    net/http/server.go:3137 +0x8e
net/http.(*conn).serve(0xc00038e630, {0x817838, 0xc0001b4ab0})
    net/http/server.go:2039 +0x5e8
created by net/http.(*Server).Serve in goroutine 1
    net/http/server.go:3285 +0x4b4

goroutine 62 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd480256e0, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00039e600?, 0xc00042c000?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00039e600, {0xc00042c000, 0x1000, 0x1000})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc0003b2078, {0xc00042c000?, 0x0?, 0x0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc0003c4600)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func1()
    github.com/TaserudConsulting/goprocmgr/runner.go:121 +0x92
created by main.(*Runner).Start in goroutine 83
    github.com/TaserudConsulting/goprocmgr/runner.go:120 +0x9d9

goroutine 63 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd480255e8, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00039e6c0?, 0xc00042d000?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00039e6c0, {0xc00042d000, 0x1000, 0x1000})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc0003b2088, {0xc00042d000?, 0x0?, 0x0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc0003c4680)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func2()
    github.com/TaserudConsulting/goprocmgr/runner.go:136 +0x92
created by main.(*Runner).Start in goroutine 83
    github.com/TaserudConsulting/goprocmgr/runner.go:135 +0xace

goroutine 84 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd4800a490, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc0003c4700?, 0xc00034eaf1?, 0x0)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0003c4700, {0xc00034eaf1, 0x1, 0x1})
    internal/poll/fd_unix.go:164 +0x27a
net.(*netFD).Read(0xc0003c4700, {0xc00034eaf1?, 0xc00006cf48?, 0x46ad90?})
    net/fd_posix.go:55 +0x25
net.(*conn).Read(0xc0003b20a0, {0xc00034eaf1?, 0x0?, 0xa82b20?})
    net/net.go:179 +0x45
net/http.(*connReader).backgroundRead(0xc00034eae0)
    net/http/server.go:681 +0x37
created by net/http.(*connReader).startBackgroundRead in goroutine 64
    net/http/server.go:677 +0xba

goroutine 85 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd480254f0, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00012ac00?, 0xc00035d000?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00012ac00, {0xc00035d000, 0x1000, 0x1000})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc00011a348, {0xc00035d000?, 0x0?, 0x0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000159200)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func1()
    github.com/TaserudConsulting/goprocmgr/runner.go:121 +0x92
created by main.(*Runner).Start in goroutine 64
    github.com/TaserudConsulting/goprocmgr/runner.go:120 +0x9d9

goroutine 86 [IO wait]:
internal/poll.runtime_pollWait(0x7fbd480253f8, 0x72)
    runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00012acc0?, 0xc00035c000?, 0x1)
    internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
    internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00012acc0, {0xc00035c000, 0x1000, 0x1000})
    internal/poll/fd_unix.go:164 +0x27a
os.(*File).read(...)
    os/file_posix.go:29
os.(*File).Read(0xc00011a358, {0xc00035c000?, 0x0?, 0x0?})
    os/file.go:118 +0x52
bufio.(*Scanner).Scan(0xc000159280)
    bufio/scan.go:219 +0x81e
main.(*Runner).Start.func2()
    github.com/TaserudConsulting/goprocmgr/runner.go:136 +0x92
created by main.(*Runner).Start in goroutine 64
    github.com/TaserudConsulting/goprocmgr/runner.go:135 +0xace