devgianlu / go-librespot

Yet another open source Spotify client, written in Go.
GNU General Public License v3.0
52 stars 7 forks source link

Daemon crashed when one user replaced another one using "connect mode" #19

Closed phts closed 5 months ago

phts commented 6 months ago

Version: 0.0.11 Config: Zeroconf

Use case:

  1. User1 connect via "connect mode" to target device with go-librespot daemon and playing something
  2. User2 chooses in the app same target device, Spotify warns that this will make User1 kick out
  3. User2 clicks "ok"
  4. Daemon crashed

Some logs:

time="2024-01-28T14:13:02+01:00" level=error msg="failed receiving dealer message" error="failed to get reader: received close frame: status = StatusGoingAway and reason = \"\""
time="2024-01-28T14:13:02+01:00" level=error msg="failed receiving packet" error="failed reading packet header: read tcp 192.168.0.102:33566->104.199.65.124:4070: use of closed network connection"
panic: close of closed channel
goroutine 81 [running]:
panic({0x5a45b8, 0x6cac10})
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/panic.go:987 +0x414 fp=0x1227f04 sp=0x1227ea8 pc=0x4ee28
runtime.closechan(0x12ebf00)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/chan.go:365 +0x2c8 fp=0x1227f20 sp=0x1227f04 pc=0x1ab38
go-librespot/ap.(*Accesspoint).recvLoop(0x14f4750)
    /home/runner/work/go-librespot/go-librespot/ap/ap.go:291 +0x480 fp=0x1227fe4 sp=0x1227f20 pc=0x4554c4
go-librespot/ap.(*Accesspoint).startReceiving.func1.1()
    /home/runner/work/go-librespot/go-librespot/ap/ap.go:228 +0x28 fp=0x1227fec sp=0x1227fe4 pc=0x455018
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1227fec sp=0x1227fec pc=0x84730
created by go-librespot/ap.(*Accesspoint).startReceiving.func1
    /home/runner/work/go-librespot/go-librespot/ap/ap.go:228 +0x60
goroutine 1 [runnable]:
google.golang.org/protobuf/proto.checkInitialized({0x6d0a00, 0x1470ce0})
    /home/runner/go/pkg/mod/google.golang.org/protobuf@v1.30.0/proto/checkinit.go:25 +0x98 fp=0x104db68 sp=0x104db68 pc=0x172924
google.golang.org/protobuf/proto.MarshalOptions.marshal({{}, 0x0, 0x0, 0x0}, {0x0, 0x0, 0x0}, {0x6d0a00, 0x1470ce0})
    /home/runner/go/pkg/mod/google.golang.org/protobuf@v1.30.0/proto/encode.go:176 +0x1d0 fp=0x104dbc8 sp=0x104db68 pc=0x1790ec
google.golang.org/protobuf/proto.Marshal({0x6cb8a4, 0x1470ce0})
    /home/runner/go/pkg/mod/google.golang.org/protobuf@v1.30.0/proto/encode.go:80 +0x64 fp=0x104dc00 sp=0x104dbc8 pc=0x178b80
go-librespot/session.retrieveClientToken({0x10302a0, 0x28})
    /home/runner/work/go-librespot/go-librespot/session/client_token.go:17 +0x31c fp=0x104dcb4 sp=0x104dc00 pc=0x486bdc
go-librespot/session.NewSessionFromOptions(0x104dda4)
    /home/runner/work/go-librespot/go-librespot/session/session.go:51 +0x1ec fp=0x104dd5c sp=0x104dcb4 pc=0x487760
main.(*App).newAppPlayer(0x1001fc0, {0x5acac8, 0x1214438})
    /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:75 +0x108 fp=0x104ddc4 sp=0x104dd5c pc=0x537b00
main.(*App).Zeroconf.func2({{0x1311898, 0x1c}, {0x1388000, 0x118, 0x118}, {0x143a048, 0x14}, 0x147e180})
    /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:140 +0x13c fp=0x104de38 sp=0x104ddc4 pc=0x5380cc
go-librespot/zeroconf.(*Zeroconf).Serve(0x1028370, 0x104df14)
    /home/runner/work/go-librespot/go-librespot/zeroconf/zeroconf.go:266 +0x1a8 fp=0x104dedc sp=0x104de38 pc=0x4e9600
main.(*App).Zeroconf(0x1001fc0)
    /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:131 +0x288 fp=0x104df3c sp=0x104dedc pc=0x537f40
main.main()
    /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:336 +0x788 fp=0x104dfc0 sp=0x104df3c pc=0x539894
runtime.main()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:250 +0x268 fp=0x104dfec sp=0x104dfc0 pc=0x52288
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x104dfec sp=0x104dfec pc=0x84730
goroutine 2 [force gc (idle), 2 minutes]:
runtime.gopark(0x643ec0, 0xa362b0, 0x11, 0x14, 0x1)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x103cfd8 sp=0x103cfc4 pc=0x527b0
runtime.goparkunlock(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:387
runtime.forcegchelper()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:305 +0xd4 fp=0x103cfec sp=0x103cfd8 pc=0x525d0
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x103cfec sp=0x103cfec pc=0x84730
created by runtime.init.5
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:293 +0x1c
goroutine 18 [GC sweep wait]:
runtime.gopark(0x643ec0, 0xa368b0, 0xc, 0x14, 0x1)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x10387c8 sp=0x10387b4 pc=0x527b0
runtime.goparkunlock(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:387
runtime.bgsweep(0x1062000)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgcsweep.go:319 +0x104 fp=0x10387e4 sp=0x10387c8 pc=0x3c528
runtime.gcenable.func1()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:178 +0x28 fp=0x10387ec sp=0x10387e4 pc=0x2cff4
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x10387ec sp=0x10387ec pc=0x84730
created by runtime.gcenable
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:178 +0x74
goroutine 19 [GC scavenge wait]:
runtime.gopark(0x643ec0, 0xa36b90, 0xd, 0x14, 0x2)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1038fb4 sp=0x1038fa0 pc=0x527b0
runtime.goparkunlock(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:387
runtime.(*scavengerState).park(0xa36b90)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgcscavenge.go:400 +0x64 fp=0x1038fc8 sp=0x1038fb4 pc=0x39e1c
runtime.bgscavenge(0x1062000)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgcscavenge.go:633 +0x64 fp=0x1038fe4 sp=0x1038fc8 pc=0x3a560
runtime.gcenable.func2()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:179 +0x28 fp=0x1038fec sp=0x1038fe4 pc=0x2cfa0
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1038fec sp=0x1038fec pc=0x84730
created by runtime.gcenable
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:179 +0xbc
goroutine 3 [finalizer wait]:
runtime.gopark(0x643e00, 0xa47c58, 0x10, 0x14, 0x1)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x103c78c sp=0x103c778 pc=0x527b0
runtime.runfinq()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mfinal.go:193 +0xfc fp=0x103c7ec sp=0x103c78c pc=0x2bed0
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x103c7ec sp=0x103c7ec pc=0x84730
created by runtime.createfing
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mfinal.go:163 +0x5c
goroutine 4 [IO wait, 2 minutes]:
runtime.gopark(0x643ea8, 0xad2c3f40, 0x2, 0x1b, 0x5)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x103d5dc sp=0x103d5c8 pc=0x527b0
runtime.netpollblock(0xad2c3f34, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x103d5f4 sp=0x103d5dc pc=0x49f2c
internal/poll.runtime_pollWait(0xad2c3f34, 0x72)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x103d608 sp=0x103d5f4 pc=0x800b4
internal/poll.(*pollDesc).wait(0x1028d34, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x103d61c sp=0x103d608 pc=0xf7db0
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0x1028d20)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:614 +0x2d0 fp=0x103d66c sp=0x103d61c pc=0xfc8d0
net.(*netFD).accept(0x1028d20)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/fd_unix.go:172 +0x20 fp=0x103d6cc sp=0x103d66c pc=0x282028
net.(*TCPListener).accept(0x100e530)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/tcpsock_posix.go:148 +0x20 fp=0x103d6e4 sp=0x103d6cc pc=0x29a9c0
net.(*TCPListener).Accept(0x100e530)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/tcpsock.go:297 +0x30 fp=0x103d700 sp=0x103d6e4 pc=0x299984
net/http.(*onceCloseListener).Accept(0x1202020)
    :1 +0x34 fp=0x103d718 sp=0x103d700 pc=0x4279d8
net/http.(*Server).Serve(0x120c000, {0x6cdf88, 0x100e530})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:3059 +0x344 fp=0x103d7b4 sp=0x103d718 pc=0x4039d0
net/http.Serve(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:2581
main.(*ApiServer).serve(0x1107940)
    /home/runner/work/go-librespot/go-librespot/cmd/daemon/api_server.go:438 +0x62c fp=0x103d7e4 sp=0x103d7b4 pc=0x5326dc
main.NewApiServer.func1()
    /home/runner/work/go-librespot/go-librespot/cmd/daemon/api_server.go:237 +0x28 fp=0x103d7ec sp=0x103d7e4 pc=0x531d94
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x103d7ec sp=0x103d7ec pc=0x84730
created by main.NewApiServer
    /home/runner/work/go-librespot/go-librespot/cmd/daemon/api_server.go:237 +0x1dc
goroutine 66 [IO wait, 2 minutes]:
runtime.gopark(0x643ea8, 0xad2c3c34, 0x2, 0x1b, 0x5)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1223880 sp=0x122386c pc=0x527b0
runtime.netpollblock(0xad2c3c28, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x1223898 sp=0x1223880 pc=0x49f2c
internal/poll.runtime_pollWait(0xad2c3c28, 0x72)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x12238ac sp=0x1223898 pc=0x800b4
internal/poll.(*pollDesc).wait(0x11a2014, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x12238c0 sp=0x12238ac pc=0xf7db0
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x11a2000, {0x11b6000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:167 +0x240 fp=0x1223910 sp=0x12238c0 pc=0xf8fbc
net.(*netFD).Read(0x11a2000, {0x11b6000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/fd_posix.go:55 +0x38 fp=0x122393c sp=0x1223910 pc=0x27ff6c
net.(*conn).Read(0x14e0078, {0x11b6000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/net.go:183 +0x48 fp=0x122396c sp=0x122393c pc=0x290ef0
net.(*TCPConn).Read(0x14e0078, {0x11b6000, 0x1000, 0x1000})
    :1 +0x44 fp=0x122398c sp=0x122396c pc=0x2a55cc
io.(*multiReader).Read(0x100e4a0, {0x11b6000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/io/multi.go:26 +0xac fp=0x12239c0 sp=0x122398c pc=0xf2de0
bufio.(*Reader).fill(0x10745d0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/bufio/bufio.go:106 +0x10c fp=0x12239e4 sp=0x12239c0 pc=0x144f14
bufio.(*Reader).ReadByte(0x10745d0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/bufio/bufio.go:265 +0x28 fp=0x12239f0 sp=0x12239e4 pc=0x1457c4
nhooyr.io/websocket.readFrameHeader(0x10745d0, {0x11c4030, 0x8, 0x8})
    /home/runner/go/pkg/mod/nhooyr.io/websocket@v1.8.7/frame.go:54 +0x74 fp=0x1223a30 sp=0x12239f0 pc=0x4404a4
nhooyr.io/websocket.(*Conn).readFrameHeader(0x11c4000, {0x6ce284, 0x102a058})
    /home/runner/go/pkg/mod/nhooyr.io/websocket@v1.8.7/read.go:188 +0xb4 fp=0x1223af0 sp=0x1223a30 pc=0x443004
nhooyr.io/websocket.(*Conn).readLoop(0x11c4000, {0x6ce284, 0x102a058})
    /home/runner/go/pkg/mod/nhooyr.io/websocket@v1.8.7/read.go:146 +0x3c fp=0x1223bb4 sp=0x1223af0 pc=0x442adc
nhooyr.io/websocket.(*Conn).reader(0x11c4000, {0x6ce284, 0x102a058})
    /home/runner/go/pkg/mod/nhooyr.io/websocket@v1.8.7/read.go:315 +0x10c fp=0x1223c40 sp=0x1223bb4 pc=0x443d1c
nhooyr.io/websocket.(*Conn).Reader(...)
    /home/runner/go/pkg/mod/nhooyr.io/websocket@v1.8.7/read.go:30
nhooyr.io/websocket.(*Conn).Read(0x11c4000, {0x6ce284, 0x102a058})
    /home/runner/go/pkg/mod/nhooyr.io/websocket@v1.8.7/read.go:36 +0x2c fp=0x1223c68 sp=0x1223c40 pc=0x4423a8
main.(*ApiServer).serve.func13({0x6ce0bc, 0x11bc000}, 0x11b8000)
    /home/runner/work/go-librespot/go-librespot/cmd/daemon/api_server.go:418 +0x24c fp=0x1223cc4 sp=0x1223c68 pc=0x532b94
net/http.HandlerFunc.ServeHTTP(0x1208058, {0x6ce0bc, 0x11bc000}, 0x11b8000)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:2122 +0x34 fp=0x1223cd4 sp=0x1223cc4 pc=0x4006ec
net/http.(*ServeMux).ServeHTTP(0x1200000, {0x6ce0bc, 0x11bc000}, 0x11b8000)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:2500 +0x164 fp=0x1223d00 sp=0x1223cd4 pc=0x401f34
net/http.serverHandler.ServeHTTP({0x120c000}, {0x6ce0bc, 0x11bc000}, 0x11b8000)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:2936 +0x304 fp=0x1223d58 sp=0x1223d00 pc=0x403440
net/http.(*conn).serve(0x11b2000, {0x6ce2c4, 0x1214000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:1995 +0x654 fp=0x1223fdc sp=0x1223d58 pc=0x3fefb4
net/http.(*Server).Serve.func3()
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:3089 +0x38 fp=0x1223fec sp=0x1223fdc pc=0x403e74
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1223fec sp=0x1223fec pc=0x84730
created by net/http.(*Server).Serve
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:3089 +0x4e0
goroutine 50 [IO wait]:
runtime.gopark(0x643ea8, 0xad2c3d6c, 0x2, 0x1b, 0x5)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1222e8c sp=0x1222e78 pc=0x527b0
runtime.netpollblock(0xad2c3d60, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x1222ea4 sp=0x1222e8c pc=0x49f2c
internal/poll.runtime_pollWait(0xad2c3d60, 0x72)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x1222eb8 sp=0x1222ea4 pc=0x800b4
internal/poll.(*pollDesc).wait(0x1028424, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x1222ecc sp=0x1222eb8 pc=0xf7db0
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0x1028410, 0x1290d50)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:766 +0x168 fp=0x1222ef8 sp=0x1222ecc pc=0xfdcb4
net.(*rawConn).Read(0x1010a68, 0x1290d50)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/rawconn.go:43 +0x38 fp=0x1222f18 sp=0x1222ef8 pc=0x295258
golang.org/x/net/internal/socket.(*Conn).recvMsg(0x14fe2e0, 0x1290d20, 0x0)
    /home/runner/go/pkg/mod/golang.org/x/net@v0.11.0/internal/socket/rawconn_msg.go:28 +0x19c fp=0x1222f48 sp=0x1222f18 pc=0x488e98
golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
    /home/runner/go/pkg/mod/golang.org/x/net@v0.11.0/internal/socket/socket.go:247
golang.org/x/net/ipv4.(*payloadHandler).ReadFrom(0x14ce0c8, {0x1528000, 0x10000, 0x10000})
    /home/runner/go/pkg/mod/golang.org/x/net@v0.11.0/ipv4/payload_cmsg.go:32 +0x1a4 fp=0x1222f9c sp=0x1222f48 pc=0x48c564
github.com/grandcat/zeroconf.(*Server).recv4(0x1092440, 0x14ce0c0)
    /home/runner/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:254 +0xec fp=0x1222fe0 sp=0x1222f9c pc=0x4e47c0
github.com/grandcat/zeroconf.(*Server).mainloop.func1()
    /home/runner/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:188 +0x30 fp=0x1222fec sp=0x1222fe0 pc=0x4e4474
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1222fec sp=0x1222fec pc=0x84730
created by github.com/grandcat/zeroconf.(*Server).mainloop
    /home/runner/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:188 +0x80
goroutine 11 [GC worker (idle)]:
runtime.gopark(0x643e0c, 0x143b440, 0x1a, 0x14, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x103df90 sp=0x103df7c pc=0x527b0
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1275 +0x100 fp=0x103dfec sp=0x103df90 pc=0x2fbb8
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x103dfec sp=0x103dfec pc=0x84730
created by runtime.gcBgMarkStartWorkers
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1199 +0x20
goroutine 12 [GC worker (idle)]:
runtime.gopark(0x643e0c, 0x143b458, 0x1a, 0x14, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x103e790 sp=0x103e77c pc=0x527b0
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1275 +0x100 fp=0x103e7ec sp=0x103e790 pc=0x2fbb8
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x103e7ec sp=0x103e7ec pc=0x84730
created by runtime.gcBgMarkStartWorkers
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1199 +0x20
goroutine 13 [GC worker (idle)]:
runtime.gopark(0x643e0c, 0x143b470, 0x1a, 0x14, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x103ef90 sp=0x103ef7c pc=0x527b0
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1275 +0x100 fp=0x103efec sp=0x103ef90 pc=0x2fbb8
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x103efec sp=0x103efec pc=0x84730
created by runtime.gcBgMarkStartWorkers
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1199 +0x20
goroutine 34 [GC worker (idle)]:
runtime.gopark(0x643e0c, 0x143b488, 0x1a, 0x14, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x121c790 sp=0x121c77c pc=0x527b0
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1275 +0x100 fp=0x121c7ec sp=0x121c790 pc=0x2fbb8
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x121c7ec sp=0x121c7ec pc=0x84730
created by runtime.gcBgMarkStartWorkers
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1199 +0x20
goroutine 37 [chan receive, 2 minutes]:
runtime.gopark(0x643de0, 0x10621f0, 0xe, 0x17, 0x2)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x121cf38 sp=0x121cf24 pc=0x527b0
runtime.chanrecv(0x10621c0, 0x121cfd8, 0x1)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/chan.go:583 +0x538 fp=0x121cf84 sp=0x121cf38 pc=0x1b16c
runtime.chanrecv2(0x10621c0, 0x121cfd8)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/chan.go:447 +0x20 fp=0x121cf98 sp=0x121cf84 pc=0x1ac28
main.(*App).Zeroconf.func1()
    /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:119 +0x54 fp=0x121cfec sp=0x121cf98 pc=0x538374
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x121cfec sp=0x121cfec pc=0x84730
created by main.(*App).Zeroconf
    /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:116 +0x234
goroutine 38 [IO wait]:
runtime.gopark(0x643ea8, 0xad2c3e08, 0x2, 0x1b, 0x5)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x121d5e4 sp=0x121d5d0 pc=0x527b0
runtime.netpollblock(0xad2c3dfc, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x121d5fc sp=0x121d5e4 pc=0x49f2c
internal/poll.runtime_pollWait(0xad2c3dfc, 0x72)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x121d610 sp=0x121d5fc pc=0x800b4
internal/poll.(*pollDesc).wait(0x10283d4, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x121d624 sp=0x121d610 pc=0xf7db0
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0x10283c0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:614 +0x2d0 fp=0x121d674 sp=0x121d624 pc=0xfc8d0
net.(*netFD).accept(0x10283c0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/fd_unix.go:172 +0x20 fp=0x121d6d4 sp=0x121d674 pc=0x282028
net.(*TCPListener).accept(0x14fe260)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/tcpsock_posix.go:148 +0x20 fp=0x121d6ec sp=0x121d6d4 pc=0x29a9c0
net.(*TCPListener).Accept(0x14fe260)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/tcpsock.go:297 +0x30 fp=0x121d708 sp=0x121d6ec pc=0x299984
net/http.(*onceCloseListener).Accept(0x1440540)
    :1 +0x34 fp=0x121d720 sp=0x121d708 pc=0x4279d8
net/http.(*Server).Serve(0x1118460, {0x6cdf88, 0x14fe260})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:3059 +0x344 fp=0x121d7bc sp=0x121d720 pc=0x4039d0
net/http.Serve(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:2581
go-librespot/zeroconf.(*Zeroconf).Serve.func2()
    /home/runner/work/go-librespot/go-librespot/zeroconf/zeroconf.go:259 +0x8c fp=0x121d7ec sp=0x121d7bc pc=0x4e97b8
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x121d7ec sp=0x121d7ec pc=0x84730
created by go-librespot/zeroconf.(*Zeroconf).Serve
    /home/runner/work/go-librespot/go-librespot/zeroconf/zeroconf.go:259 +0x178
goroutine 51 [IO wait, 2 minutes]:
runtime.gopark(0x643ea8, 0xad2c3cd0, 0x2, 0x1b, 0x5)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x103a664 sp=0x103a650 pc=0x527b0
runtime.netpollblock(0xad2c3cc4, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x103a67c sp=0x103a664 pc=0x49f2c
internal/poll.runtime_pollWait(0xad2c3cc4, 0x72)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x103a690 sp=0x103a67c pc=0x800b4
internal/poll.(*pollDesc).wait(0x1028474, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x103a6a4 sp=0x103a690 pc=0xf7db0
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0x1028460, 0x1200c30)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:766 +0x168 fp=0x103a6d0 sp=0x103a6a4 pc=0xfdcb4
net.(*rawConn).Read(0x1010a98, 0x1200c30)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/rawconn.go:43 +0x38 fp=0x103a6f0 sp=0x103a6d0 pc=0x295258
golang.org/x/net/internal/socket.(*Conn).recvMsg(0x14fe2f0, 0x1200c00, 0x0)
    /home/runner/go/pkg/mod/golang.org/x/net@v0.11.0/internal/socket/rawconn_msg.go:28 +0x19c fp=0x103a720 sp=0x103a6f0 pc=0x488e98
golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
    /home/runner/go/pkg/mod/golang.org/x/net@v0.11.0/internal/socket/socket.go:247
golang.org/x/net/ipv6.(*payloadHandler).ReadFrom(0x14ce0f8, {0x1518000, 0x10000, 0x10000})
    /home/runner/go/pkg/mod/golang.org/x/net@v0.11.0/ipv6/payload_cmsg.go:32 +0x17c fp=0x103a79c sp=0x103a720 pc=0x4905e0
github.com/grandcat/zeroconf.(*Server).recv6(0x1092440, 0x14ce0f0)
    /home/runner/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:282 +0xec fp=0x103a7e0 sp=0x103a79c pc=0x4e49ac
github.com/grandcat/zeroconf.(*Server).mainloop.func2()
    /home/runner/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:191 +0x30 fp=0x103a7ec sp=0x103a7e0 pc=0x4e4418
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x103a7ec sp=0x103a7ec pc=0x84730
created by github.com/grandcat/zeroconf.(*Server).mainloop
    /home/runner/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:191 +0xf0
goroutine 68 [select]:
runtime.gopark(0x643ef0, 0x0, 0x9, 0x18, 0x1)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1039ea0 sp=0x1039e8c pc=0x527b0
runtime.selectgo(0x1039fbc, 0x1039f74, 0x0, 0x0, 0x5, 0x1)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/select.go:327 +0xb70 fp=0x1039f48 sp=0x1039ea0 pc=0x64d80
nhooyr.io/websocket.(*Conn).timeoutLoop(0x11c4000)
    /home/runner/go/pkg/mod/nhooyr.io/websocket@v1.8.7/conn_notjs.go:153 +0x110 fp=0x1039fe4 sp=0x1039f48 pc=0x43d548
nhooyr.io/websocket.newConn.func2()
    /home/runner/go/pkg/mod/nhooyr.io/websocket@v1.8.7/conn_notjs.go:114 +0x28 fp=0x1039fec sp=0x1039fe4 pc=0x43d13c
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1039fec sp=0x1039fec pc=0x84730
created by nhooyr.io/websocket.newConn
    /home/runner/go/pkg/mod/nhooyr.io/websocket@v1.8.7/conn_notjs.go:114 +0x5b0
goroutine 79 [IO wait, 2 minutes]:
runtime.gopark(0x643ea8, 0xad2c3b98, 0x2, 0x1b, 0x5)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x104fa7c sp=0x104fa68 pc=0x527b0
runtime.netpollblock(0xad2c3b8c, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x104fa94 sp=0x104fa7c pc=0x49f2c
internal/poll.runtime_pollWait(0xad2c3b8c, 0x72)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x104faa8 sp=0x104fa94 pc=0x800b4
internal/poll.(*pollDesc).wait(0x14ea884, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x104fabc sp=0x104faa8 pc=0xf7db0
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14ea870, {0x11db000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:167 +0x240 fp=0x104fb0c sp=0x104fabc pc=0xf8fbc
net.(*netFD).Read(0x14ea870, {0x11db000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/fd_posix.go:55 +0x38 fp=0x104fb38 sp=0x104fb0c pc=0x27ff6c
net.(*conn).Read(0x14e0940, {0x11db000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/net.go:183 +0x48 fp=0x104fb68 sp=0x104fb38 pc=0x290ef0
net.(*TCPConn).Read(0x14e0940, {0x11db000, 0x1000, 0x1000})
    :1 +0x44 fp=0x104fb88 sp=0x104fb68 pc=0x2a55cc
crypto/tls.(*atLeastReader).Read(0x100f420, {0x11db000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:788 +0x7c fp=0x104fbb8 sp=0x104fb88 pc=0x35d930
bytes.(*Buffer).ReadFrom(0x11b5578, {0x6cb0fc, 0x100f420})
    /opt/hostedtoolcache/go/1.20.8/x64/src/bytes/buffer.go:202 +0xa4 fp=0x104fbf8 sp=0x104fbb8 pc=0x124eb4
crypto/tls.(*Conn).readFromUntil(0x11b5400, {0x6cc4ac, 0x14e0940}, 0x5)
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:810 +0xd4 fp=0x104fc20 sp=0x104fbf8 pc=0x35dba0
crypto/tls.(*Conn).readRecordOrCCS(0x11b5400, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:617 +0x11c fp=0x104fd9c sp=0x104fc20 pc=0x35b3d0
crypto/tls.(*Conn).readRecord(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:583
crypto/tls.(*Conn).Read(0x11b5400, {0x1295000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:1316 +0x168 fp=0x104fdcc sp=0x104fd9c pc=0x360b78
bufio.(*Reader).Read(0x1290420, {0x11b84a4, 0x9, 0x9})
    /opt/hostedtoolcache/go/1.20.8/x64/src/bufio/bufio.go:237 +0x228 fp=0x104fdf0 sp=0x104fdcc pc=0x1455b4
io.ReadAtLeast({0x6cafe4, 0x1290420}, {0x11b84a4, 0x9, 0x9}, 0x9)
    /opt/hostedtoolcache/go/1.20.8/x64/src/io/io.go:332 +0x90 fp=0x104fe1c sp=0x104fdf0 pc=0xf1b18
io.ReadFull(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/io/io.go:351
net/http.http2readFrameHeader({0x11b84a4, 0x9, 0x9}, {0x6cafe4, 0x1290420})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:1567 +0x54 fp=0x104fe44 sp=0x104fe1c pc=0x3c20b8
net/http.(*http2Framer).ReadFrame(0x11b8480)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:1831 +0x94 fp=0x104fec8 sp=0x104fe44 pc=0x3c28b4
net/http.(*http2clientConnReadLoop).run(0x104ffd4)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:9187 +0x150 fp=0x104ffa4 sp=0x104fec8 pc=0x3e669c
net/http.(*http2ClientConn).readLoop(0x1003e00)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:9082 +0x68 fp=0x104ffe4 sp=0x104ffa4 pc=0x3e5b8c
net/http.(*http2Transport).newClientConn.func1()
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:7779 +0x28 fp=0x104ffec sp=0x104ffe4 pc=0x3ded34
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x104ffec sp=0x104ffec pc=0x84730
created by net/http.(*http2Transport).newClientConn
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:7779 +0xc24
goroutine 115 [IO wait]:
runtime.gopark(0x643ea8, 0xad2c3ea4, 0x2, 0x1b, 0x5)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x10c0a7c sp=0x10c0a68 pc=0x527b0
runtime.netpollblock(0xad2c3e98, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x10c0a94 sp=0x10c0a7c pc=0x49f2c
internal/poll.runtime_pollWait(0xad2c3e98, 0x72)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x10c0aa8 sp=0x10c0a94 pc=0x800b4
internal/poll.(*pollDesc).wait(0x129e014, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x10c0abc sp=0x10c0aa8 pc=0xf7db0
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x129e000, {0x1249000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:167 +0x240 fp=0x10c0b0c sp=0x10c0abc pc=0xf8fbc
net.(*netFD).Read(0x129e000, {0x1249000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/fd_posix.go:55 +0x38 fp=0x10c0b38 sp=0x10c0b0c pc=0x27ff6c
net.(*conn).Read(0x1011d38, {0x1249000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/net.go:183 +0x48 fp=0x10c0b68 sp=0x10c0b38 pc=0x290ef0
net.(*TCPConn).Read(0x1011d38, {0x1249000, 0x1000, 0x1000})
    :1 +0x44 fp=0x10c0b88 sp=0x10c0b68 pc=0x2a55cc
crypto/tls.(*atLeastReader).Read(0x100e580, {0x1249000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:788 +0x7c fp=0x10c0bb8 sp=0x10c0b88 pc=0x35d930
bytes.(*Buffer).ReadFrom(0x1239578, {0x6cb0fc, 0x100e580})
    /opt/hostedtoolcache/go/1.20.8/x64/src/bytes/buffer.go:202 +0xa4 fp=0x10c0bf8 sp=0x10c0bb8 pc=0x124eb4
crypto/tls.(*Conn).readFromUntil(0x1239400, {0x6cc4ac, 0x1011d38}, 0x5)
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:810 +0xd4 fp=0x10c0c20 sp=0x10c0bf8 pc=0x35dba0
crypto/tls.(*Conn).readRecordOrCCS(0x1239400, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:617 +0x11c fp=0x10c0d9c sp=0x10c0c20 pc=0x35b3d0
crypto/tls.(*Conn).readRecord(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:583
crypto/tls.(*Conn).Read(0x1239400, {0x1489000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:1316 +0x168 fp=0x10c0dcc sp=0x10c0d9c pc=0x360b78
bufio.(*Reader).Read(0x146f0e0, {0x1244aa4, 0x9, 0x9})
    /opt/hostedtoolcache/go/1.20.8/x64/src/bufio/bufio.go:237 +0x228 fp=0x10c0df0 sp=0x10c0dcc pc=0x1455b4
io.ReadAtLeast({0x6cafe4, 0x146f0e0}, {0x1244aa4, 0x9, 0x9}, 0x9)
    /opt/hostedtoolcache/go/1.20.8/x64/src/io/io.go:332 +0x90 fp=0x10c0e1c sp=0x10c0df0 pc=0xf1b18
io.ReadFull(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/io/io.go:351
net/http.http2readFrameHeader({0x1244aa4, 0x9, 0x9}, {0x6cafe4, 0x146f0e0})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:1567 +0x54 fp=0x10c0e44 sp=0x10c0e1c pc=0x3c20b8
net/http.(*http2Framer).ReadFrame(0x1244a80)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:1831 +0x94 fp=0x10c0ec8 sp=0x10c0e44 pc=0x3c28b4
net/http.(*http2clientConnReadLoop).run(0x10c0fd4)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:9187 +0x150 fp=0x10c0fa4 sp=0x10c0ec8 pc=0x3e669c
net/http.(*http2ClientConn).readLoop(0x1082d20)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:9082 +0x68 fp=0x10c0fe4 sp=0x10c0fa4 pc=0x3e5b8c
net/http.(*http2Transport).newClientConn.func1()
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:7779 +0x28 fp=0x10c0fec sp=0x10c0fe4 pc=0x3ded34
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x10c0fec sp=0x10c0fec pc=0x84730
created by net/http.(*http2Transport).newClientConn
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:7779 +0xc24
goroutine 58 [IO wait, 2 minutes]:
runtime.gopark(0x643ea8, 0xad2c3a60, 0x2, 0x1b, 0x5)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x10c5a7c sp=0x10c5a68 pc=0x527b0
runtime.netpollblock(0xad2c3a54, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x10c5a94 sp=0x10c5a7c pc=0x49f2c
internal/poll.runtime_pollWait(0xad2c3a54, 0x72)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x10c5aa8 sp=0x10c5a94 pc=0x800b4
internal/poll.(*pollDesc).wait(0x130f0a4, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x10c5abc sp=0x10c5aa8 pc=0xf7db0
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x130f090, {0x155b000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:167 +0x240 fp=0x10c5b0c sp=0x10c5abc pc=0xf8fbc
net.(*netFD).Read(0x130f090, {0x155b000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/fd_posix.go:55 +0x38 fp=0x10c5b38 sp=0x10c5b0c pc=0x27ff6c
net.(*conn).Read(0x12094c0, {0x155b000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/net.go:183 +0x48 fp=0x10c5b68 sp=0x10c5b38 pc=0x290ef0
net.(*TCPConn).Read(0x12094c0, {0x155b000, 0x1000, 0x1000})
    :1 +0x44 fp=0x10c5b88 sp=0x10c5b68 pc=0x2a55cc
crypto/tls.(*atLeastReader).Read(0x13090c0, {0x155b000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:788 +0x7c fp=0x10c5bb8 sp=0x10c5b88 pc=0x35d930
bytes.(*Buffer).ReadFrom(0x1113778, {0x6cb0fc, 0x13090c0})
    /opt/hostedtoolcache/go/1.20.8/x64/src/bytes/buffer.go:202 +0xa4 fp=0x10c5bf8 sp=0x10c5bb8 pc=0x124eb4
crypto/tls.(*Conn).readFromUntil(0x1113600, {0x6cc4ac, 0x12094c0}, 0x5)
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:810 +0xd4 fp=0x10c5c20 sp=0x10c5bf8 pc=0x35dba0
crypto/tls.(*Conn).readRecordOrCCS(0x1113600, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:617 +0x11c fp=0x10c5d9c sp=0x10c5c20 pc=0x35b3d0
crypto/tls.(*Conn).readRecord(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:583
crypto/tls.(*Conn).Read(0x1113600, {0x138d000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:1316 +0x168 fp=0x10c5dcc sp=0x10c5d9c pc=0x360b78
bufio.(*Reader).Read(0x1565680, {0x1124724, 0x9, 0x9})
    /opt/hostedtoolcache/go/1.20.8/x64/src/bufio/bufio.go:237 +0x228 fp=0x10c5df0 sp=0x10c5dcc pc=0x1455b4
io.ReadAtLeast({0x6cafe4, 0x1565680}, {0x1124724, 0x9, 0x9}, 0x9)
    /opt/hostedtoolcache/go/1.20.8/x64/src/io/io.go:332 +0x90 fp=0x10c5e1c sp=0x10c5df0 pc=0xf1b18
io.ReadFull(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/io/io.go:351
net/http.http2readFrameHeader({0x1124724, 0x9, 0x9}, {0x6cafe4, 0x1565680})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:1567 +0x54 fp=0x10c5e44 sp=0x10c5e1c pc=0x3c20b8
net/http.(*http2Framer).ReadFrame(0x1124700)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:1831 +0x94 fp=0x10c5ec8 sp=0x10c5e44 pc=0x3c28b4
net/http.(*http2clientConnReadLoop).run(0x10c5fd4)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:9187 +0x150 fp=0x10c5fa4 sp=0x10c5ec8 pc=0x3e669c
net/http.(*http2ClientConn).readLoop(0x1216780)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:9082 +0x68 fp=0x10c5fe4 sp=0x10c5fa4 pc=0x3e5b8c
net/http.(*http2Transport).newClientConn.func1()
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:7779 +0x28 fp=0x10c5fec sp=0x10c5fe4 pc=0x3ded34
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x10c5fec sp=0x10c5fec pc=0x84730
created by net/http.(*http2Transport).newClientConn
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:7779 +0xc24
goroutine 88 [IO wait]:
runtime.gopark(0x643ea8, 0xad2c3928, 0x2, 0x1b, 0x5)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x10beac8 sp=0x10beab4 pc=0x527b0
runtime.netpollblock(0xad2c391c, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x10beae0 sp=0x10beac8 pc=0x49f2c
internal/poll.runtime_pollWait(0xad2c391c, 0x72)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x10beaf4 sp=0x10beae0 pc=0x800b4
internal/poll.(*pollDesc).wait(0x1465824, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x10beb08 sp=0x10beaf4 pc=0xf7db0
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x1465810, {0x15b8000, 0xc000, 0xc000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:167 +0x240 fp=0x10beb58 sp=0x10beb08 pc=0xf8fbc
net.(*netFD).Read(0x1465810, {0x15b8000, 0xc000, 0xc000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/fd_posix.go:55 +0x38 fp=0x10beb84 sp=0x10beb58 pc=0x27ff6c
net.(*conn).Read(0x1094288, {0x15b8000, 0xc000, 0xc000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/net.go:183 +0x48 fp=0x10bebb4 sp=0x10beb84 pc=0x290ef0
net.(*TCPConn).Read(0x1094288, {0x15b8000, 0xc000, 0xc000})
    :1 +0x44 fp=0x10bebd4 sp=0x10bebb4 pc=0x2a55cc
crypto/tls.(*atLeastReader).Read(0x13b2390, {0x15b8000, 0xc000, 0xc000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:788 +0x7c fp=0x10bec04 sp=0x10bebd4 pc=0x35d930
bytes.(*Buffer).ReadFrom(0x10fff78, {0x6cb0fc, 0x13b2390})
    /opt/hostedtoolcache/go/1.20.8/x64/src/bytes/buffer.go:202 +0xa4 fp=0x10bec44 sp=0x10bec04 pc=0x124eb4
crypto/tls.(*Conn).readFromUntil(0x10ffe00, {0x6cc4ac, 0x1094288}, 0x5)
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:810 +0xd4 fp=0x10bec6c sp=0x10bec44 pc=0x35dba0
crypto/tls.(*Conn).readRecordOrCCS(0x10ffe00, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:617 +0x11c fp=0x10bede8 sp=0x10bec6c pc=0x35b3d0
crypto/tls.(*Conn).readRecord(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:583
crypto/tls.(*Conn).Read(0x10ffe00, {0x1377000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:1316 +0x168 fp=0x10bee18 sp=0x10bede8 pc=0x360b78
net/http.(*persistConn).Read(0x120c140, {0x1377000, 0x1000, 0x1000})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/transport.go:1943 +0x16c fp=0x10bee4c sp=0x10bee18 pc=0x4178d4
bufio.(*Reader).fill(0x10fdce0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/bufio/bufio.go:106 +0x10c fp=0x10bee70 sp=0x10bee4c pc=0x144f14
bufio.(*Reader).Peek(0x10fdce0, 0x1)
    /opt/hostedtoolcache/go/1.20.8/x64/src/bufio/bufio.go:144 +0x68 fp=0x10bee7c sp=0x10bee70 pc=0x145094
net/http.(*persistConn).readLoop(0x120c140)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/transport.go:2107 +0x190 fp=0x10befe4 sp=0x10bee7c pc=0x418470
net/http.(*Transport).dialConn.func5()
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/transport.go:1765 +0x28 fp=0x10befec sp=0x10befe4 pc=0x416d9c
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x10befec sp=0x10befec pc=0x84730
created by net/http.(*Transport).dialConn
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/transport.go:1765 +0x1410
goroutine 89 [select]:
runtime.gopark(0x643ef0, 0x0, 0x9, 0x18, 0x1)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x10c2ec4 sp=0x10c2eb0 pc=0x527b0
runtime.selectgo(0x10c2fd0, 0x10c2f9c, 0x0, 0x0, 0x2, 0x1)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/select.go:327 +0xb70 fp=0x10c2f6c sp=0x10c2ec4 pc=0x64d80
net/http.(*persistConn).writeLoop(0x120c140)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/transport.go:2410 +0xcc fp=0x10c2fe4 sp=0x10c2f6c pc=0x41a178
net/http.(*Transport).dialConn.func6()
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/transport.go:1766 +0x28 fp=0x10c2fec sp=0x10c2fe4 pc=0x416d48
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x10c2fec sp=0x10c2fec pc=0x84730
created by net/http.(*Transport).dialConn
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/transport.go:1766 +0x1460
goroutine 5368 [IO wait]:
runtime.gopark(0x643ea8, 0xad2c37f0, 0x2, 0x1b, 0x5)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1258ea8 sp=0x1258e94 pc=0x527b0
runtime.netpollblock(0xad2c37e4, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x1258ec0 sp=0x1258ea8 pc=0x49f2c
internal/poll.runtime_pollWait(0xad2c37e4, 0x72)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x1258ed4 sp=0x1258ec0 pc=0x800b4
internal/poll.(*pollDesc).wait(0x1464834, 0x72, 0x0)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x1258ee8 sp=0x1258ed4 pc=0xf7db0
internal/poll.(*pollDesc).waitRead(...)
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x1464820, {0x136600d, 0x1, 0x1})
    /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:167 +0x240 fp=0x1258f38 sp=0x1258ee8 pc=0xf8fbc
net.(*netFD).Read(0x1464820, {0x136600d, 0x1, 0x1})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/fd_posix.go:55 +0x38 fp=0x1258f64 sp=0x1258f38 pc=0x27ff6c
net.(*conn).Read(0x1b6bce8, {0x136600d, 0x1, 0x1})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/net.go:183 +0x48 fp=0x1258f94 sp=0x1258f64 pc=0x290ef0
net.(*TCPConn).Read(0x1b6bce8, {0x136600d, 0x1, 0x1})
    :1 +0x44 fp=0x1258fb4 sp=0x1258f94 pc=0x2a55cc
net/http.(*connReader).backgroundRead(0x1366000)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:674 +0x44 fp=0x1258fe4 sp=0x1258fb4 pc=0x3f8c90
net/http.(*connReader).startBackgroundRead.func2()
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:670 +0x28 fp=0x1258fec sp=0x1258fe4 pc=0x3f8bcc
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1258fec sp=0x1258fec pc=0x84730
created by net/http.(*connReader).startBackgroundRead
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:670 +0xf4
goroutine 9910 [chan receive]:
runtime.gopark(0x643de0, 0x147e1b0, 0xe, 0x17, 0x2)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x104aaa4 sp=0x104aa90 pc=0x527b0
runtime.chanrecv(0x147e180, 0x104ab2b, 0x1)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/chan.go:583 +0x538 fp=0x104aaf0 sp=0x104aaa4 pc=0x1b16c
runtime.chanrecv1(0x147e180, 0x104ab2b)
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/chan.go:442 +0x20 fp=0x104ab04 sp=0x104aaf0 pc=0x1ac04
go-librespot/zeroconf.(*Zeroconf).handleAddUser(0x1028370, {0x6ce0bc, 0x10ec5a0}, 0x10aa000)
    /home/runner/work/go-librespot/go-librespot/zeroconf/zeroconf.go:198 +0x87c fp=0x104ac68 sp=0x104ab04 pc=0x4e8e78
go-librespot/zeroconf.(*Zeroconf).Serve.func1({0x6ce0bc, 0x10ec5a0}, 0x10aa000)
    /home/runner/work/go-librespot/go-librespot/zeroconf/zeroconf.go:248 +0x218 fp=0x104acc4 sp=0x104ac68 pc=0x4e9a14
net/http.HandlerFunc.ServeHTTP(0x1010ae8, {0x6ce0bc, 0x10ec5a0}, 0x10aa000)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:2122 +0x34 fp=0x104acd4 sp=0x104acc4 pc=0x4006ec
net/http.(*ServeMux).ServeHTTP(0x14ce120, {0x6ce0bc, 0x10ec5a0}, 0x10aa000)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:2500 +0x164 fp=0x104ad00 sp=0x104acd4 pc=0x401f34
net/http.serverHandler.ServeHTTP({0x1118460}, {0x6ce0bc, 0x10ec5a0}, 0x10aa000)
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:2936 +0x304 fp=0x104ad58 sp=0x104ad00 pc=0x403440
net/http.(*conn).serve(0x10a2000, {0x6ce2c4, 0x14f0198})
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:1995 +0x654 fp=0x104afdc sp=0x104ad58 pc=0x3fefb4
net/http.(*Server).Serve.func3()
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:3089 +0x38 fp=0x104afec sp=0x104afdc pc=0x403e74
runtime.goexit()
    /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x104afec sp=0x104afec pc=0x84730
created by net/http.(*Server).Serve
    /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:3089 +0x4e0
Aborted
go-librespot-connect-daemon.service: Main process exited, code=exited, status=134/n/a
go-librespot-connect-daemon.service: Failed with result 'exit-code'.
info: Connection to go-librespot websocket closed
devgianlu commented 5 months ago

Forgot to mention it, but this is fixed since https://github.com/devgianlu/go-librespot/commit/3858c64d8eeecfc3027a80a55443f2c1f6508995

phts commented 5 months ago

New version please 🙏