Git Product home page Git Product logo

go-librespot's Introduction

go-librespot

Yet another open-source Spotify client, written in Go.

Trying it out

Create a config.yml file containing:

device_name: go-librespot
credentials:
  type: interactive

Then run (or grab a prebuilt binary from the releases page):

go run ./cmd/daemon

Follow the instructions on the console for completing authentication and the new device should appear in your Spotify Connect devices.

Alternatively, you can use the Zeroconf mode:

device_name: go-librespot
credentials:
  type: zeroconf

API

The daemon offers an API to control and/or monitor playback. To enable this features add the following to your config.yml file:

server:
  enabled: true
  port: 3678

For API documentation see here.

Building

The daemon can be easily built with:

go build -o go-librespot-daemon ./cmd/daemon

To crosscompile for different architectures the GOOS and GOARCH environment variables can be used.

Development

To recompile protobuf definitions use:

protoc --go_out=proto --go_opt module=github.com/devgianlu/go-librespot/proto -I proto proto/*.proto

go-librespot's People

Contributors

devgianlu avatar phts avatar tooxo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

go-librespot's Issues

Player drops too early

In https://github.com/devgianlu/go-librespot/blob/master/player/player.go#L142 , the output is instructed to drop all queued frames, resulting in the end of the song missing, when one song goes over to the next without skipping.

My proposed solution: Only drop the frames, when the set command resulted from a skip and not a song regularly ending.
Alternative solution, if the above is not possible: Only drop the frames, when there is no secondary source configured. This would result in delayed skipping, if the song is in its last 30 seconds or so.

formats missing

formats 18 19 missing

enum Format {
OGG_VORBIS_96 = 0;
OGG_VORBIS_160 = 1;
OGG_VORBIS_320 = 2;
MP3_256 = 3;
MP3_320 = 4;
MP3_160 = 5;
MP3_96 = 6;
MP3_160_ENC = 7;
AAC_24 = 8;
AAC_48 = 9;
FLAC_FLAC = 16;
}

Exception on reading random chunk

About every 100th random song the player crashes as follows...

time="2024-04-03T10:27:46+02:00" level=info msg="loaded track \"Something to Someone\" (uri: spotify:track:4AQXIIhoKpkn7gMMS4StAY, ...
panic: runtime error: slice bounds out of range [4263:280]
goroutine 4230472 [running]:
go-librespot/audio.(*HttpChunkedReader).ReadAt(0xc00035ef80, {0x7f0f601c8370, 0x1000, 0x7fffffff}, 0xc0000d4b20?)
/home/tylk/Downloads/go-librespot-0.0.14/audio/chunked_reader.go:218 +0x2ba

After restarting the player, playback is paused, even if it was unpaused while crashing.

undefined reference to `ogg_stream_iovecin'

To get somewhere with the build, I took these steps first:

  • Removed my existing installation of MinGW-w64.
  • Installed MSYS2 (in c:\dev\tools\msys64).
  • Ran pacman -S pacman -S mingw-w64-ucrt-x86_64-gcc.
  • Added c:\dev\tools\msys64\ucrt64\bin to the PATH.
  • Ran pacman -S mingw-w64-ucrt-x86_64-pkg-config
  • Ran pacman -S mingw-w64-ucrt-x86_64-libogg
  • Ran pacman -S mingw-w64-ucrt-x86_64-libvorbis
  • Set an envvar PKG_CONFIG_PATH=c:\dev\tools\msys64\ucrt64\lib\pkgconfig.

Then I had to add two new functions to output/driver_windows.go to satisfy the interface:

func (out *output) Drop() error { return nil }
func (out *output) DelayMs() (int64, error) { return 0, nil }

But now I get:

C:/dev/tools/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\andre\AppData\Local\Temp\go-link-407401969\000013.o: in function `_cgo_fb2c7143e03b_Cfunc_ogg_stream_iovecin':
/tmp/go-build/vorbis.cgo2.c:371:(.text+0x35b): undefined reference to `ogg_stream_iovecin'
collect2.exe: error: ld returned 1 exit status

Famously CGO is not Go, and I have no idea what this error even means.

feat: go gettable module path

Hey there,

First of all, amazing work on go-librespot and reverse engineering all of the Spotify stuff (dealer gateway etc).

I was actually looking to use parts of go-librespot as a library just to request my player state and use it to power a playback widget.

I realise that go-librespot isn't intended to be used as a library of course but it's all wired up nicely enough that it does actually work and I have a minimum implementation using both the dealer and spclient packages to receive messages.

The only remaining thing is that go-librespot is not actually importable as a standard Go library, due to its module path in go.mod not being a valid path.

Basically, go get expects the path that you require a package from (in this case, the Github URL) to be the same as the module path (the module directive in go.mod)

CleanShot 2024-08-03 at 13 18 46@2x

I realise of course that supporting usage as a library is an entirely different thing than supporting an audio client so I don't expect that anyone using it as a library should expect any guarantees around breaking changes, interfaces staying public and so on.

It just turns out that everything in Go is importable as a library whether intended or not so it's a nice side effect to support even if it's not explicitly offered.

In the meantime, I've been getting by with cloning go-librespot into my local repo and then adding the following to my go.mod file as a workaround:

replace go-librespot => ./go-librespot

require (
	go-librespot v0.0.0-00010101000000-000000000000
)

Much appreciated ๐Ÿ™‚

Interacting breaks connection

Hello,

First of all I would like to start off by thanking you for making this project and putting the time and effort into maintaining it!

Whenever I connect to my device and start playing music, things work. Up until a few songs have played, or I interact with the player too much by skipping the song or seeking in the song. It will disconnect my phone from the player and it will disappear from the spotify connect list. Even in the trace log_level mode, I'm getting no errors beside ERRO[0121] did not receive last pong from dealer, 60s passed every few seconds. I can send you the full trace if interested.

EDIT: Also found a typo haha:
afbeelding

Disable Autoplay

The Autoplay feature that fills in when your music runs out can get turned on and when it does there is no way to turn it off. Is there a configuration option or some other method that allows this to be toggled off?

I'm currently spinning up a custom version of this code and just commenting out the autoplay portion of controls.go.

Open Source Licence

It states in the readme this is Yet another open-source Spotify client but there doesn't seem to be an open source licence specified. Is this intentional?

Volume change on devices with big output buffer takes a while

When changing the volume on devices that have a very long output buffer it takes a while for the effect to propagate because we are outputting multiplied samples. Perphaps there's a way to let the audio backend do the volume? If that's not the case we need to drop the buffer on volume change.

Token caching

Is it possible to add token caching similare to how Raspotify works?
When the user is using username and password to login, this can also be used to retrieve an access token which can be cached. I am aware that the user can provide an access token themselves, but I figured as the user is already providing the information required to retrieve an access token it would be nice to have it included as a feature.

I have go-librespot operating in a portable device, however each time the device is used I recieve an email notifying of the "new login". Zero-config circumvents this issue but my application does not always allow zero-config to be used.

Thanks again for an creating and awesome build. It has been working well in my application!

Feature request: edit queue or add consume mode

To make gapeless playback work, we use this strategy:

  • track 1 and track 2 are part of the same album
  • we start playing track 1
  • about 5 seconds before track 1 ends, we add track 2 to queue
  • this way the daemon shall play them in gapless mode
  • after track 1 has finished playing, we remove it from the queue

To achieve this we would need one of the 2:

  • Either a consume mode trigger (once a track is played is removed from queue (best option)
  • A way to manage the queue from the API

Cross-Fade & Cross-Origin

Great job... much easier-to-understand and more stable framework than the java based one. Occam would be delighted.

The only thing I am missing is the cross-fade feature.

Furthermore I like the Player API very much, especially the events, which makes external player state control much easier than using the official Spotify API. In order to be able to access the API from a different domain, cross-origin acceptance must be supplied to the websocket. I added it manually to the code and recompiled. For extreme convenience, it could be read from the configuration file.

Add to queue does not work

How to replicate:

  • Add to queue from API

The daemon crashes:

May 04 17:57:21 motivo volumio[13289]: info: Sending Spotify command with payload to local API: /player/add_to_queue
May 04 17:57:21 motivo go-librespot[13784]: panic: assignment to entry in nil map
May 04 17:57:21 motivo go-librespot[13784]: goroutine 70 [running]:
May 04 17:57:21 motivo go-librespot[13784]: panic({0x5a63b8, 0x6cd468})
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/panic.go:987 +0x414 fp=0x203f7ec sp=0x203f790 pc=0x4ee28
May 04 17:57:21 motivo go-librespot[13784]: runtime.mapassign_faststr(0x590f78, 0x0, {0x61e3b7, 0x9})
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/map_faststr.go:205 +0x420 fp=0x203f824 sp=0x203f7ec pc=0x26ff8
May 04 17:57:21 motivo go-librespot[13784]: go-librespot/tracks.(*List).AddToQueue(...)
May 04 17:57:21 motivo go-librespot[13784]: /home/runner/work/go-librespot/go-librespot/tracks/tracks.go:199
May 04 17:57:21 motivo go-librespot[13784]: main.(*AppPlayer).addToQueue(0x1db8390, 0x1da2ac0)
May 04 17:57:21 motivo go-librespot[13784]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/controls.go:239 +0x48 fp=0x203f850 sp=0x203f824 pc=0x5363a0
May 04 17:57:21 motivo go-librespot[13784]: main.(*AppPlayer).handleApiRequest(0x1db8390, {{0x61faf0, 0xc}, {0x58b678, 0x1e91050}, 0x1da2640})
May 04 17:57:21 motivo go-librespot[13784]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/player.go:376 +0xa00 fp=0x203f8fc sp=0x203f850 pc=0x53dfb8
May 04 17:57:21 motivo go-librespot[13784]: main.(*AppPlayer).Run(0x1db8390, 0x1e8c240)
May 04 17:57:21 motivo go-librespot[13784]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/player.go:416 +0x528 fp=0x203ffe0 sp=0x203f8fc pc=0x53e9c8
May 04 17:57:21 motivo go-librespot[13784]: main.(*App).withAppPlayer.func4()
May 04 17:57:21 motivo go-librespot[13784]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:210 +0x30 fp=0x203ffec sp=0x203ffe0 pc=0x53a250
May 04 17:57:21 motivo go-librespot[13784]: runtime.goexit()
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x203ffec sp=0x203ffec pc=0x84730
May 04 17:57:21 motivo go-librespot[13784]: created by main.(*App).withAppPlayer
May 04 17:57:21 motivo go-librespot[13784]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:210 +0x358
May 04 17:57:21 motivo go-librespot[13784]: goroutine 1 [select, 2 minutes]:
May 04 17:57:21 motivo go-librespot[13784]: runtime.gopark(0x646428, 0x0, 0x9, 0x18, 0x1)
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x204ed24 sp=0x204ed10 pc=0x527b0
May 04 17:57:21 motivo go-librespot[13784]: runtime.selectgo(0x204ee1c, 0x1cb7dfc, 0x0, 0x0, 0x2, 0x1)
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/select.go:327 +0xb70 fp=0x204edcc sp=0x204ed24 pc=0x64d80
May 04 17:57:21 motivo go-librespot[13784]: go-librespot/zeroconf.(*Zeroconf).Serve(0x1c28fa0, 0x204eeb8)
May 04 17:57:21 motivo go-librespot[13784]: /home/runner/work/go-librespot/go-librespot/zeroconf/zeroconf.go:268 +0x240 fp=0x204ee70 sp=0x204edcc pc=0x4e9e3c
May 04 17:57:21 motivo go-librespot[13784]: main.(*App).withAppPlayer(0x1c963f0, 0x1d58220)
May 04 17:57:21 motivo go-librespot[13784]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:272 +0x4d8 fp=0x204eee0 sp=0x204ee70 pc=0x5398bc
May 04 17:57:21 motivo go-librespot[13784]: main.(*App).withCredentials(0x1c963f0, {0x5aea80, 0x1caa540})
May 04 17:57:21 motivo go-librespot[13784]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:146 +0x414 fp=0x204ef3c sp=0x204eee0 pc=0x538f40
May 04 17:57:21 motivo go-librespot[13784]: main.(*App).SpotifyToken(...)
May 04 17:57:21 motivo go-librespot[13784]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:106
May 04 17:57:21 motivo go-librespot[13784]: main.main()
May 04 17:57:21 motivo go-librespot[13784]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:421 +0x530 fp=0x204efc0 sp=0x204ef3c pc=0x53ad90
May 04 17:57:21 motivo go-librespot[13784]: runtime.main()
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:250 +0x268 fp=0x204efec sp=0x204efc0 pc=0x52288
May 04 17:57:21 motivo go-librespot[13784]: runtime.goexit()
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x204efec sp=0x204efec pc=0x84730
May 04 17:57:21 motivo go-librespot[13784]: goroutine 2 [force gc (idle), 2 minutes]:
May 04 17:57:21 motivo go-librespot[13784]: runtime.gopark(0x6463f8, 0xa392b8, 0x11, 0x14, 0x1)
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1c3cfd8 sp=0x1c3cfc4 pc=0x527b0
May 04 17:57:21 motivo go-librespot[13784]: runtime.goparkunlock(...)
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:387
May 04 17:57:21 motivo go-librespot[13784]: runtime.forcegchelper()
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:305 +0xd4 fp=0x1c3cfec sp=0x1c3cfd8 pc=0x525d0
May 04 17:57:21 motivo go-librespot[13784]: runtime.goexit()
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1c3cfec sp=0x1c3cfec pc=0x84730
May 04 17:57:21 motivo go-librespot[13784]: created by runtime.init.5
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:293 +0x1c
May 04 17:57:21 motivo go-librespot[13784]: goroutine 18 [GC sweep wait]:
May 04 17:57:21 motivo go-librespot[13784]: runtime.gopark(0x6463f8, 0xa398b8, 0xc, 0x14, 0x1)
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1c387c8 sp=0x1c387b4 pc=0x527b0
May 04 17:57:21 motivo go-librespot[13784]: runtime.goparkunlock(...)
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:387
May 04 17:57:21 motivo go-librespot[13784]: runtime.bgsweep(0x1c8e000)
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgcsweep.go:319 +0x104 fp=0x1c387e4 sp=0x1c387c8 pc=0x3c528
May 04 17:57:21 motivo go-librespot[13784]: runtime.gcenable.func1()
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:178 +0x28 fp=0x1c387ec sp=0x1c387e4 pc=0x2cff4
May 04 17:57:21 motivo go-librespot[13784]: runtime.goexit()
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1c387ec sp=0x1c387ec pc=0x84730
May 04 17:57:21 motivo go-librespot[13784]: created by runtime.gcenable
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:178 +0x74
May 04 17:57:21 motivo go-librespot[13784]: goroutine 19 [GC scavenge wait]:
May 04 17:57:21 motivo go-librespot[13784]: runtime.gopark(0x6463f8, 0xa39b98, 0xd, 0x14, 0x2)
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1c38fb4 sp=0x1c38fa0 pc=0x527b0
May 04 17:57:21 motivo go-librespot[13784]: runtime.goparkunlock(...)
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:387
May 04 17:57:21 motivo go-librespot[13784]: runtime.(*scavengerState).park(0xa39b98)
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgcscavenge.go:400 +0x64 fp=0x1c38fc8 sp=0x1c38fb4 pc=0x39e1c
May 04 17:57:21 motivo go-librespot[13784]: runtime.bgscavenge(0x1c8e000)
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgcscavenge.go:633 +0x64 fp=0x1c38fe4 sp=0x1c38fc8 pc=0x3a560
May 04 17:57:21 motivo go-librespot[13784]: runtime.gcenable.func2()
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:179 +0x28 fp=0x1c38fec sp=0x1c38fe4 pc=0x2cfa0
May 04 17:57:21 motivo go-librespot[13784]: runtime.goexit()
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1c38fec sp=0x1c38fec pc=0x84730
May 04 17:57:21 motivo go-librespot[13784]: created by runtime.gcenable
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:179 +0xbc
May 04 17:57:21 motivo go-librespot[13784]: goroutine 20 [finalizer wait]:
May 04 17:57:21 motivo go-librespot[13784]: runtime.gopark(0x646338, 0xa4ac60, 0x10, 0x14, 0x1)
May 04 17:57:21 motivo go-librespot[13784]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1c3c78c sp=0x1c3c778 pc=0x527b0
May 04 17:57:21 motivo go-librespot[13784]: runtime.runfinq()

Volume normalization

Question to developers, is there volume normalization implemented in go-librespot or is it supported at all? I've noticed that go-librespot produces a bit lower SPL (several dB's) compared to librespot (Rust) implementation which does have a parameter to set the normalization. I've been using external volume control in both cases where ALSA does not use any softvol plugin either.

How to start playing without select the device from Spotify client?

Hello,

First of all thank you for the excellent work with the go-librespot.

I have a question rather than an issue:

When I start my Spotify client and connect it with go-librespot, everything works perfectly. However, if I store the last played status using TinyDB and try to initiate playback without first connecting via the Spotify client, I encounter an exception:

anic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x48 pc=0x901210]

goroutine 1 [running]:
go-librespot/tracks.(*List).AddToQueue(...)
	/home/myhome/Repository/myproject-librespot/go-librespot/tracks/tracks.go:222
main.(*AppPlayer).addToQueue(0xc0001d8880, 0xc0001d42a0)
	/home/myhome/Repository/myproject-librespot/go-librespot/cmd/daemon/controls.go:306 +0xb0
main.(*AppPlayer).handleApiRequest(0xc0001d8880, {{0xa417db, 0xc}, {0x952c80, 0xc000192310}, 0xc0003909c0})
	/home/myhome/Repository/myproject-librespot/go-librespot/cmd/daemon/player.go:391 +0x931
main.(*AppPlayer).Run(0xc0001d8880, 0xc000182480)
	/home/myhome/Repository/myproject-librespot/go-librespot/cmd/daemon/player.go:431 +0x69a
main.(*App).withAppPlayer(0xc000180280, 0xa?)
	/home/myhome/Repository/myproject-librespot/go-librespot/cmd/daemon/main.go:208 +0x4d2
main.(*App).withCredentials(0xc000180280, {0x9b1160, 0xc0001a65a0})
	/home/myhome/Repository/myproject-librespot/go-librespot/cmd/daemon/main.go:171 +0x38c
main.(*App).UserPass(...)
	/home/myhome/Repository/myproject-librespot/go-librespot/cmd/daemon/main.go:135
main.main()
	/home/myhome/Repository/myproject-librespot/go-librespot/cmd/daemon/main.go:462 +0x4e7
exit status 2

Basically, my question is: Is it possible to start playback without first connecting through the Spotify client?

Thank you for you time.

Gapless playback with Crossfade

Your java version had a crossfade option along with internal prefetching for gapless playback. Currently, if my senses do not trick me, the first chunk gets loaded on demand, while the rest of the chunks of the same song get prefetched. With a very bad internet connection this sometimes results in gaps between songs.

When looking at the log, one can see that the player currently even emits a "not_playing" event between songs.

Apr 18 08:50:24 mysterion librespot-go[470966]: time="2024-04-18T08:50:24+02:00" level=debug msg="selected format OGG_VORBIS_160 for spotify:track:6FKU84JHM1lbiy5Dx0Dyqd"
Apr 18 08:50:24 mysterion librespot-go[470966]: time="2024-04-18T08:50:24+02:00" level=debug msg="requested aes key for file 4edb75d47086de2a3d55b067cd8e3d00cc2e1a9e, gid: 6FKU84JHM1lbiy5Dx0Dyqd"
Apr 18 08:50:25 mysterion librespot-go[470966]: time="2024-04-18T08:50:25+02:00" level=debug msg="fetched first chunk of 8, total size is 4127448 bytes"
Apr 18 08:50:25 mysterion librespot-go[470966]: time="2024-04-18T08:50:25+02:00" level=trace msg="seek to 0ms (diff: -198ms, samples: 0, bytes: 0)"
Apr 18 08:50:25 mysterion librespot-go[470966]: time="2024-04-18T08:50:25+02:00" level=info msg="loaded track \"The Joker\" (uri: spotify:track:6FKU84JHM1lbiy5Dx0Dyqd, paused: false, position: 0ms, duration: 217800ms)"
Apr 18 08:50:25 mysterion librespot-go[470966]: time="2024-04-18T08:50:25+02:00" level=debug msg="vorbis: corrupt or missing data in bitstream"
Apr 18 08:50:25 mysterion librespot-go[470966]: time="2024-04-18T08:50:25+02:00" level=debug msg="put connect state because PLAYER_STATE_CHANGED"
Apr 18 08:50:25 mysterion librespot-go[470966]: time="2024-04-18T08:50:25+02:00" level=trace msg="emitting websocket event: metadata"
Apr 18 08:50:25 mysterion librespot-go[470966]: time="2024-04-18T08:50:25+02:00" level=debug msg="put connect state because PLAYER_STATE_CHANGED"
Apr 18 08:50:25 mysterion librespot-go[470966]: time="2024-04-18T08:50:25+02:00" level=trace msg="emitting websocket event: playing"
Apr 18 08:50:26 mysterion librespot-go[470966]: time="2024-04-18T08:50:26+02:00" level=debug msg="fetched chunk 1/7, size: 524288"
Apr 18 08:50:26 mysterion librespot-go[470966]: time="2024-04-18T08:50:26+02:00" level=debug msg="fetched chunk 2/7, size: 524288"
Apr 18 08:50:27 mysterion librespot-go[470966]: time="2024-04-18T08:50:27+02:00" level=debug msg="fetched chunk 3/7, size: 524288"
Apr 18 08:50:42 mysterion librespot-go[470966]: time="2024-04-18T08:50:42+02:00" level=debug msg="fetched chunk 4/7, size: 524288"
Apr 18 08:51:09 mysterion librespot-go[470966]: time="2024-04-18T08:51:09+02:00" level=debug msg="fetched chunk 5/7, size: 524288"
Apr 18 08:51:37 mysterion librespot-go[470966]: time="2024-04-18T08:51:37+02:00" level=debug msg="fetched chunk 6/7, size: 524288"
Apr 18 08:52:05 mysterion librespot-go[470966]: time="2024-04-18T08:52:05+02:00" level=debug msg="fetched chunk 7/7, size: 457432"
Apr 18 08:54:01 mysterion librespot-go[470966]: time="2024-04-18T08:54:01+02:00" level=trace msg="emitting websocket event: not_playing"
Apr 18 08:54:01 mysterion librespot-go[470966]: time="2024-04-18T08:54:01+02:00" level=debug msg="loading track spotify:track:0NIRG3SEn2Zf88o3qHJil5 (paused: false, position: 0ms)"
Apr 18 08:54:01 mysterion librespot-go[470966]: time="2024-04-18T08:54:01+02:00" level=debug msg="put connect state because PLAYER_STATE_CHANGED"
Apr 18 08:54:01 mysterion librespot-go[470966]: time="2024-04-18T08:54:01+02:00" level=trace msg="emitting websocket event: will_play"
Apr 18 08:54:02 mysterion librespot-go[470966]: time="2024-04-18T08:54:02+02:00" level=debug msg="selected format OGG_VORBIS_160 for spotify:track:0NIRG3SEn2Zf88o3qHJil5"
Apr 18 08:54:02 mysterion librespot-go[470966]: time="2024-04-18T08:54:02+02:00" level=debug msg="requested aes key for file 4569298b745f1ef6d32a3ae636537bab5ae7509a, gid: 0NIRG3SEn2Zf88o3qHJil5"

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

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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/read.go:315 +0x10c fp=0x1223c40 sp=0x1223bb4 pc=0x443d1c
nhooyr.io/websocket.(*Conn).Reader(...)
	/home/runner/go/pkg/mod/nhooyr.io/[email protected]/read.go:30
nhooyr.io/websocket.(*Conn).Read(0x11c4000, {0x6ce284, 0x102a058})
	/home/runner/go/pkg/mod/nhooyr.io/[email protected]/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/[email protected]/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/[email protected]/internal/socket/socket.go:247
golang.org/x/net/ipv4.(*payloadHandler).ReadFrom(0x14ce0c8, {0x1528000, 0x10000, 0x10000})
	/home/runner/go/pkg/mod/golang.org/x/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/internal/socket/socket.go:247
golang.org/x/net/ipv6.(*payloadHandler).ReadFrom(0x14ce0f8, {0x1518000, 0x10000, 0x10000})
	/home/runner/go/pkg/mod/golang.org/x/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/conn_notjs.go:153 +0x110 fp=0x1039fe4 sp=0x1039f48 pc=0x43d548
nhooyr.io/websocket.newConn.func2()
	/home/runner/go/pkg/mod/nhooyr.io/[email protected]/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/[email protected]/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

Seeking results in no sound on some occasions

Seeked a track from Volumio UI, one time it did go well, the other one I got no sound playing.

UPDATE: The daemon does not respond anymore to command from Volumio after this happens, probably it crashed.

Jun 05 08:34:01 motivo go-librespot[6662]: time="2024-06-05T08:34:01Z" level=debug msg="fetched chunk 4/16, size: 524288" uri="spotify:track:1Yeivlu08disi4wnPDmlGx"
Jun 05 08:34:14 motivo go-librespot[6662]: time="2024-06-05T08:34:14Z" level=debug msg="fetched chunk 5/16, size: 524288" uri="spotify:track:1Yeivlu08disi4wnPDmlGx"
Jun 05 08:34:28 motivo go-librespot[6662]: time="2024-06-05T08:34:28Z" level=debug msg="fetched chunk 6/16, size: 524288" uri="spotify:track:1Yeivlu08disi4wnPDmlGx"
Jun 05 08:34:29 motivo volumio[6434]: info: CoreCommandRouter::volumioSeek
Jun 05 08:34:29 motivo volumio[6434]: info: CoreStateMachine::seek
Jun 05 08:34:29 motivo volumio[6434]: info: CorePlayQueue::getTrack 2
Jun 05 08:34:29 motivo volumio[6434]: info: TRACKBLOCK {"uri":"spotify:track:1Yeivlu08disi4wnPDmlGx","service":"spop","name":"On The Run - 2023 Remaster","artist":"Pink Floyd","album":"The Dark Side Of The Moon (50th Anniversary) [2023 Remaster]","type":"song","duration":213,"albumart":"https://i.scdn.co/image/ab67616d0000b2738fe90794e22713f14c4e2622","samplerate":"320 kbps","bitdepth":"16 bit","bitrate":"","codec":"ogg","trackType":"spotify"}
Jun 05 08:34:29 motivo volumio[6434]: info: CoreStateMachine::startPlaybackTimer
Jun 05 08:34:29 motivo volumio[6434]: info: CorePlayQueue::getTrack 2
Jun 05 08:34:29 motivo volumio[6434]: info: Spotify seek to: 181000
Jun 05 08:34:29 motivo volumio[6434]: info: Sending Spotify command with payload to local API: /player/seek
Jun 05 08:34:29 motivo volumio[6434]: info: CoreStateMachine::pushState
Jun 05 08:34:29 motivo volumio[6434]: info: CorePlayQueue::getTrack 2
Jun 05 08:34:29 motivo volumio[6434]: info: CoreCommandRouter::executeOnPlugin: volumiodiscovery , saveDeviceInfo
Jun 05 08:34:29 motivo volumio[6434]: info: CoreCommandRouter::volumioPushState
Jun 05 08:34:29 motivo volumio[6434]: info: MRS: Pushing multiroomSync output update for this device
Jun 05 08:34:29 motivo volumio[6434]: info: MRS: Pushing multiroomSync output
Jun 05 08:34:29 motivo volumio[6434]: info: Signalling Playback active due to playback status change
Jun 05 08:34:29 motivo volumio[6434]: info: Updating RAAT Signal Path
Jun 05 08:34:29 motivo volumio[6434]: SPOTIFY: RECEIVED VOLUMIO VOLUME 42
Jun 05 08:34:29 motivo go-librespot[6662]: time="2024-06-05T08:34:29Z" level=debug msg="seek track to 181000ms"
Jun 05 08:34:29 motivo go-librespot[6662]: time="2024-06-05T08:34:29Z" level=debug msg="fetched chunk 13/16, size: 524288" uri="spotify:track:1Yeivlu08disi4wnPDmlGx"
Jun 05 08:34:29 motivo go-librespot[6662]: time="2024-06-05T08:34:29Z" level=trace msg="seek to 181000ms (diff: 216ms, samples: 7982100, bytes: 7283403)" uri="spotify:track:1Yeivlu08disi4wnPDmlGx"
Jun 05 08:34:29 motivo go-librespot[6662]: time="2024-06-05T08:34:29Z" level=debug msg="fetched chunk 16/16, size: 62680" uri="spotify:track:1Yeivlu08disi4wnPDmlGx"
Jun 05 08:34:29 motivo go-librespot[6662]: time="2024-06-05T08:34:29Z" level=debug msg="put connect state because PLAYER_STATE_CHANGED"
Jun 05 08:34:29 motivo go-librespot[6662]: time="2024-06-05T08:34:29Z" level=debug msg="fetched chunk 15/16, size: 524288" uri="spotify:track:1Yeivlu08disi4wnPDmlGx"
Jun 05 08:34:29 motivo go-librespot[6662]: time="2024-06-05T08:34:29Z" level=debug msg="fetched chunk 14/16, size: 524288" uri="spotify:track:1Yeivlu08disi4wnPDmlGx"
Jun 05 08:34:48 motivo volumio[6434]: info: CoreCommandRouter::volumioSeek
Jun 05 08:34:48 motivo volumio[6434]: info: CoreStateMachine::seek
Jun 05 08:34:48 motivo volumio[6434]: info: CorePlayQueue::getTrack 2
Jun 05 08:34:48 motivo volumio[6434]: info: TRACKBLOCK {"uri":"spotify:track:1Yeivlu08disi4wnPDmlGx","service":"spop","name":"On The Run - 2023 Remaster","artist":"Pink Floyd","album":"The Dark Side Of The Moon (50th Anniversary) [2023 Remaster]","type":"song","duration":213,"albumart":"https://i.scdn.co/image/ab67616d0000b2738fe90794e22713f14c4e2622","samplerate":"320 kbps","bitdepth":"16 bit","bitrate":"","codec":"ogg","trackType":"spotify"}
Jun 05 08:34:48 motivo volumio[6434]: info: CoreStateMachine::startPlaybackTimer
Jun 05 08:34:48 motivo volumio[6434]: info: CorePlayQueue::getTrack 2
Jun 05 08:34:48 motivo volumio[6434]: info: Spotify seek to: 141000
Jun 05 08:34:48 motivo volumio[6434]: info: Sending Spotify command with payload to local API: /player/seek
Jun 05 08:34:48 motivo volumio[6434]: info: CoreStateMachine::pushState
Jun 05 08:34:48 motivo volumio[6434]: info: CorePlayQueue::getTrack 2
Jun 05 08:34:48 motivo volumio[6434]: info: CoreCommandRouter::executeOnPlugin: volumiodiscovery , saveDeviceInfo
Jun 05 08:34:48 motivo volumio[6434]: info: CoreCommandRouter::volumioPushState
Jun 05 08:34:48 motivo volumio[6434]: info: MRS: Pushing multiroomSync output update for this device
Jun 05 08:34:48 motivo volumio[6434]: info: MRS: Pushing multiroomSync output
Jun 05 08:34:48 motivo volumio[6434]: info: Signalling Playback active due to playback status change
Jun 05 08:34:48 motivo volumio[6434]: info: Updating RAAT Signal Path
Jun 05 08:34:48 motivo volumio[6434]: SPOTIFY: RECEIVED VOLUMIO VOLUME 42
Jun 05 08:34:52 motivo volumio[6434]: info: CoreCommandRouter::volumioSeek
Jun 05 08:34:52 motivo volumio[6434]: info: CoreStateMachine::seek
Jun 05 08:34:52 motivo volumio[6434]: info: CorePlayQueue::getTrack 2
Jun 05 08:34:52 motivo volumio[6434]: info: TRACKBLOCK {"uri":"spotify:track:1Yeivlu08disi4wnPDmlGx","service":"spop","name":"On The Run - 2023 Remaster","artist":"Pink Floyd","album":"The Dark Side Of The Moon (50th Anniversary) [2023 Remaster]","type":"song","duration":213,"albumart":"https://i.scdn.co/image/ab67616d0000b2738fe90794e22713f14c4e2622","samplerate":"320 kbps","bitdepth":"16 bit","bitrate":"","codec":"ogg","trackType":"spotify"}
Jun 05 08:34:52 motivo volumio[6434]: info: CoreStateMachine::startPlaybackTimer
Jun 05 08:34:52 motivo volumio[6434]: info: CorePlayQueue::getTrack 2
Jun 05 08:34:52 motivo volumio[6434]: info: Spotify seek to: 44000
Jun 05 08:34:52 motivo volumio[6434]: info: Sending Spotify command with payload to local API: /player/seek
Jun 05 08:34:52 motivo volumio[6434]: info: CoreStateMachine::pushState
Jun 05 08:34:52 motivo volumio[6434]: info: CorePlayQueue::getTrack 2
Jun 05 08:34:52 motivo volumio[6434]: info: CoreCommandRouter::executeOnPlugin: volumiodiscovery , saveDeviceInfo
Jun 05 08:34:52 motivo volumio[6434]: info: CoreCommandRouter::volumioPushState
Jun 05 08:34:52 motivo volumio[6434]: info: MRS: Pushing multiroomSync output update for this device
Jun 05 08:34:52 motivo volumio[6434]: info: MRS: Pushing multiroomSync output
Jun 05 08:34:52 motivo volumio[6434]: info: Signalling Playback active due to playback status change
Jun 05 08:34:52 motivo volumio[6434]: info: Updating RAAT Signal Path
Jun 05 08:34:52 motivo volumio[6434]: SPOTIFY: RECEIVED VOLUMIO VOLUME 42

Help requested: building on raspbian bullseye

I'm rather new to GO and trying to build go-librespot on Raspbian Bullseye. I'm a little stuck with the building and hope that someone can point me in the right direction.

I've attempted to build using the default golang package (go 1.19), but I get the message:

audio/decryptor.go:31:17: undefined: bytes.Clone
note: module requires Go 1.20

Unfortunately, the debian bookworm-backports 1.21 version of Go isn't available for RaspberryPi OS.

Attempting to build from go 1.22.0-linux-armv6l obtained from go.dev aborts with the message below. After some googling, I gather this has something to do with cross compiling, but I'm a bit lost as to where to start with resolving this.

go: downloading golang.org/x/net v0.11.0
# runtime/cgo
gcc: error: unrecognized command-line option '-marm'

Any suggestions you all can offer are greatly appreciated.

For good measure:

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

EDIT:

It looks like the env variable CGO_ENABLED is playing a part in this, but disabling it causes this:

$ CGO_ENABLED=0 go build -o go-librespot-daemon ./cmd/daemon                                                              (master) /
# go-librespot/output
output/output.go:8:3: undefined: output
output/output.go:45:14: undefined: newOutput
# go-librespot/audio
audio/metadata.go:51:23: undefined: vorbis.OggSyncState
audio/metadata.go:52:9: undefined: vorbis.OggSyncInit
audio/metadata.go:55:10: undefined: vorbis.OggSyncClear
audio/metadata.go:62:16: undefined: vorbis.OggSyncBuffer
audio/metadata.go:64:9: undefined: vorbis.OggSyncWrote
audio/metadata.go:69:18: undefined: vorbis.OggPage
audio/metadata.go:70:19: undefined: vorbis.OggSyncPageout
audio/metadata.go:74:25: undefined: vorbis.OggStreamState
audio/metadata.go:75:9: undefined: vorbis.OggStreamInit
audio/metadata.go:75:44: undefined: vorbis.OggPageSerialno
audio/metadata.go:75:44: too many errors

skip_to_uri in Album playback?

When playing an Album I want to skip. to another Song in the album via the URI, if I use the normal /player/play endpoint with "uri" it clears the "next songs" and I can't go back or forward in the album, I've tried using skip_to_uri for this but that doesn't seem to work at all.

Add to queue from mobile when playing a single track does not work

This looks like an upstream bug in Spotify, but there must be a workaround.

When trying to add to the queue from mobile, this is sent:

{"message_id":136847011,"target_alias_id":null,"sent_by_device_id":"xxxxx","command":{"endpoint":"set_queue","queue_revision":"0","prev_tracks":[],"next_tracks":[],"options":{"override_restrictions":false,"only_for_local_device":false,"system_initiated":false},"logging_params":{"command_initiated_time":1722418731139,"command_received_time":1722418731140,"page_instance_ids":["60fbed84-e3ae-4a3f-b35a-5cf298446557"],"interaction_ids":["55c025bd-0a39-4b00-8818-ad5739bd4f2b"],"device_identifier":"xxxxxxx","command_id":"eb8eecdb7cdf3c25ac06586566a24c86"}}}

When trying to add to queue from the desktop client, this is sent:

{"message_id":136891835,"target_alias_id":null,"sent_by_device_id":"yyyyy","command":{"endpoint":"set_queue","queue_revision":"0","prev_tracks":[],"next_tracks":[{"uri":"spotify:track:aaaaaaaaaaaaaaaaaa","metadata":{"is_queued":"true"},"provider":"queue"}],"options":{"override_restrictions":false,"only_for_local_device":false,"system_initiated":false},"logging_params":{"command_initiated_time":1722418776662,"command_received_time":1722418776664,"device_identifier":"yyyyyy","command_id":"e366ffb7adbde6d5c6c20abf9ea9c1d5"}}}

This first message is clearly bogus as it does not contain anything in the next_tracks field.

Docker Documentation

Having a bit of documentation on the readme about how you could use this in docker could be helpful for people looking to run this containerized on a raspberry pi. Something like what the dockerfile would look like would go a long way for people like me who are just getting into docker but want to use this program.

Fetch audio key from seektables

You can fetch audio key from seektables then try to decrypt the pssh_widevine to get the audio key
the url are https://seektables.scdn.co/seektable/fileId.json file id are hex from audio formats

Track and playlist repetition

When using track or playlist repetition, the player lingers after the last song. It does not repeat the context nor does it emit an "not playing" event. Accessing the player from another controlling endpoint indicates the last song of the context is still being played. I provided a log example below.

For reproduction, select a single song as context, put it on repeat track and wait for the song to finish.

librespot.repeat.log

Retrieve token through API

Is it possible to retrieve the token through the API?

In librespot-java it is possible to fetch a token that can be used for interacting with the spotify API.

I don't see that in the documentation, but I may be misreading it or looking in the wrong place.

Raspberry Pi Zero W (DietPi) support?

Does this support Raspberry Pi Zero W? It is armv6l. I am running DietPi v9.2. I tried building, but got the following errors:

user@pizero:/mnt/dietpi_userdata/go-librespot$ go build -o go-librespot-daemon ./cmd/daemon
go: downloading github.com/sirupsen/logrus v1.9.3
go: downloading golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1
go: downloading google.golang.org/protobuf v1.30.0
go: downloading gopkg.in/yaml.v3 v3.0.1
go: downloading nhooyr.io/websocket v1.8.7
go: downloading golang.org/x/sys v0.10.0
go: downloading github.com/cenkalti/backoff/v4 v4.2.1
go: downloading github.com/cenkalti/backoff v2.2.1+incompatible
go: downloading github.com/devgianlu/shannon v0.0.0-20230613115856-82ec90b7fa7e
go: downloading golang.org/x/crypto v0.10.0
go: downloading github.com/grandcat/zeroconf v1.0.0
go: downloading github.com/klauspost/compress v1.10.3
go: downloading github.com/xlab/vorbis-go v0.0.0-20210911202351-b5b85f1ec645
go: downloading github.com/miekg/dns v1.1.54
go: downloading golang.org/x/net v0.11.0
# go-librespot/audio
audio/metadata.go:51:23: undefined: vorbis.OggSyncState
audio/metadata.go:52:9: undefined: vorbis.OggSyncInit
audio/metadata.go:55:10: undefined: vorbis.OggSyncClear
audio/metadata.go:62:16: undefined: vorbis.OggSyncBuffer
audio/metadata.go:64:9: undefined: vorbis.OggSyncWrote
audio/metadata.go:69:18: undefined: vorbis.OggPage
audio/metadata.go:70:19: undefined: vorbis.OggSyncPageout
audio/metadata.go:74:25: undefined: vorbis.OggStreamState
audio/metadata.go:75:9: undefined: vorbis.OggStreamInit
audio/metadata.go:75:44: undefined: vorbis.OggPageSerialno
audio/metadata.go:75:44: too many errors
# go-librespot/output
output/output.go:8:3: undefined: output
output/output.go:45:14: undefined: newOutput

I tried the prebuild binary: go-librespot_linux_armv6_rpi.tar.gz but got the following:

INFO[0000] generated new device id: a4c8bdf7561af701c201895aefe7ae4216a3bf24
INFO[0015] accepted zeroconf user xxx from iPhone
WARN[0016] failed handling dealer request                error="failed loading current track (transfer): failed creating stream for spotify:track:5F6ZjgYSsgFyqV4htHdWFD: failed seeking stream: failed reading chunk: EOF"
WARN[0027] failed handling dealer request                error="failed loading current track (load context): failed creating stream for spotify:track:4ewRM5SP4YhmlfKhi5uSjS: ALSA error at snd_pcm_hw_params_set_format: Invalid argument"

Player not resuming correctly after network error

I provided a log of last night where the player did not recover correctly from a network error. I split the log with empty lines into three parts for better understanding. I did not remove any lines in between. I interpret those blocks as follows...

1.) As a result of a network error (bad gateway in this case), fetching data or creating streams obviously must fail. The player stops playback without reauthenticating and lingers around.

2.) Two hours later the player realizes the connection has been lost and reauthenticates, but it does not resume playback.

3.) The official spotify client indicates that the player is still playing. This makes sense as the "stop command" from the player did not reach the spotify api anymore. Pressing "Pause" in the official client has then no effect. Only skipping to the next track resolves all state desyncs.

Reproducing this should be easy by simulating a network error. I already observed this before the prefetching commits.

spotifyd.connection.handler.log

Update

Got the same behavior last night. I took a look at what happened on the network. Point 1 and 2 are independent events.
At the first block the spotify api itself is blocking the request. Too many request maybe? I cannot really tell without the complete response header. This happens randomly every 12 to 48 hours... and there is no way to reproduce this event on demand and I cannot understand why I get the 503's with librespot, but not with the official client. Only plausible explanation would be that the official client caches data, thus producing less traffic and requests. Physically the connection is still active.

At the second block, network disconnection happens physically by my provider. The player then handles everything as it should... with the only exception being the absence of some sort of fallback sync with the api after reconnection. That would guarantee that playback is automatically resumed once the connection has been reestablished and requests are not being blocked anymore.

I understand that this is a very specific problem to my cause, where I need to rely on self-managed headless playback without any user interaction. Most users either won't have that problem... or they wouldn't mind resyncing manually. Before investigating this further I'd suggest to wait if someone else has the same symptoms.

Takeover from other account does not work

Scenario:

  • Logged in via Token from Volumio
  • Open spotify app on a mobile associated with a different account
  • Select the endpoint
  • Go librespot crashes

Log trace:
May 04 17:43:18 motivo go-librespot[12634]: panic: runtime error: invalid memory address or nil pointer dereference
May 04 17:43:18 motivo go-librespot[12634]: [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x46a520]
May 04 17:43:18 motivo go-librespot[12634]: goroutine 48 [running]:
May 04 17:43:18 motivo go-librespot[12634]: panic({0x5a6368, 0x9f2a20})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/panic.go:987 +0x414 fp=0x1d86f10 sp=0x1d86eb4 pc=0x4ee28
May 04 17:43:18 motivo go-librespot[12634]: runtime.panicmem()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/panic.go:260 +0x4c fp=0x1d86f1c sp=0x1d86f10 pc=0x4d5cc
May 04 17:43:18 motivo go-librespot[12634]: runtime.sigpanic()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/signal_unix.go:841 +0x26c fp=0x1d86f38 sp=0x1d86f1c pc=0x68750
May 04 17:43:18 motivo go-librespot[12634]: go-librespot/output.(*Output).Close(...)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/output/output.go:90
May 04 17:43:18 motivo go-librespot[12634]: go-librespot/player.(*Player).manageLoop(0x205d740)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/player/player.go:212 +0xa3c fp=0x1d86fe4 sp=0x1d86f3c pc=0x46a520
May 04 17:43:18 motivo go-librespot[12634]: go-librespot/player.NewPlayer.func2()
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/player/player.go:88 +0x28 fp=0x1d86fec sp=0x1d86fe4 pc=0x469a20
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1d86fec sp=0x1d86fec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by go-librespot/player.NewPlayer
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/player/player.go:88 +0x1c4
May 04 17:43:18 motivo go-librespot[12634]: goroutine 1 [select]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x646428, 0x0, 0x9, 0x18, 0x1)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x20abb4c sp=0x20abb38 pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.selectgo(0x20abc38, 0x20abc18, 0x0, 0x1, 0x2, 0x1)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/select.go:327 +0xb70 fp=0x20abbf4 sp=0x20abb4c pc=0x64d80
May 04 17:43:18 motivo go-librespot[12634]: nhooyr.io/websocket.(*mu).lock(0x1fa2c38, {0x6d0af4, 0x1ea6600})
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/nhooyr.io/[email protected]/conn_notjs.go:238 +0x9c fp=0x20abc50 sp=0x20abbf4 pc=0x43e040
May 04 17:43:18 motivo go-librespot[12634]: nhooyr.io/websocket.(*Conn).waitCloseHandshake(0x20587e0)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/nhooyr.io/[email protected]/close_notjs.go:97 +0xc8 fp=0x20abce4 sp=0x20abc50 pc=0x43b9c8
May 04 17:43:18 motivo go-librespot[12634]: nhooyr.io/websocket.(*Conn).closeHandshake(0x20587e0, 0x3e9, {0x0, 0x0})
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/nhooyr.io/[email protected]/close_notjs.go:38 +0xa4 fp=0x20abd24 sp=0x20abce4 pc=0x43b434
May 04 17:43:18 motivo go-librespot[12634]: nhooyr.io/websocket.(*Conn).Close(...)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/nhooyr.io/[email protected]/close_notjs.go:31
May 04 17:43:18 motivo go-librespot[12634]: go-librespot/dealer.(*Dealer).Close(0x1db05a0)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/dealer/dealer.go:95 +0x70 fp=0x20abd40 sp=0x20abd24 pc=0x478ec4
May 04 17:43:18 motivo go-librespot[12634]: go-librespot/session.(*Session).Close(0x2046150)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/session/session.go:128 +0x3c fp=0x20abd58 sp=0x20abd40 pc=0x488bb4
May 04 17:43:18 motivo go-librespot[12634]: main.(*AppPlayer).Close(...)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/player.go:386
May 04 17:43:18 motivo go-librespot[12634]: main.(*App).withAppPlayer.func3({{0x1dfa2d8, 0xa}, {0x205e380, 0xd8, 0xd8}, {0x1dfa52a, 0x6}, 0x20b4680})
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:274 +0xa4 fp=0x20abdcc sp=0x20abd58 pc=0x539a54
May 04 17:43:18 motivo go-librespot[12634]: go-librespot/zeroconf.(*Zeroconf).Serve(0x1c28230, 0x20abeb8)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/zeroconf/zeroconf.go:272 +0x1a8 fp=0x20abe70 sp=0x20abdcc pc=0x4e9da4
May 04 17:43:18 motivo go-librespot[12634]: main.(*App).withAppPlayer(0x1c943f0, 0x1d58220)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:272 +0x4d8 fp=0x20abee0 sp=0x20abe70 pc=0x5398bc
May 04 17:43:18 motivo go-librespot[12634]: main.(*App).withCredentials(0x1c943f0, {0x5aea80, 0x1caa540})
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:146 +0x414 fp=0x20abf3c sp=0x20abee0 pc=0x538f40
May 04 17:43:18 motivo go-librespot[12634]: main.(*App).SpotifyToken(...)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:106
May 04 17:43:18 motivo go-librespot[12634]: main.main()
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/main.go:421 +0x530 fp=0x20abfc0 sp=0x20abf3c pc=0x53ad90
May 04 17:43:18 motivo go-librespot[12634]: runtime.main()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:250 +0x268 fp=0x20abfec sp=0x20abfc0 pc=0x52288
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x20abfec sp=0x20abfec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: goroutine 2 [force gc (idle)]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x6463f8, 0xa392b8, 0x11, 0x14, 0x1)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1c3cfd8 sp=0x1c3cfc4 pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.goparkunlock(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:387
May 04 17:43:18 motivo go-librespot[12634]: runtime.forcegchelper()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:305 +0xd4 fp=0x1c3cfec sp=0x1c3cfd8 pc=0x525d0
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1c3cfec sp=0x1c3cfec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by runtime.init.5
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:293 +0x1c
May 04 17:43:18 motivo go-librespot[12634]: goroutine 18 [GC sweep wait]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x6463f8, 0xa398b8, 0xc, 0x14, 0x1)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1c387c8 sp=0x1c387b4 pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.goparkunlock(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:387
May 04 17:43:18 motivo go-librespot[12634]: runtime.bgsweep(0x1c62000)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgcsweep.go:319 +0x104 fp=0x1c387e4 sp=0x1c387c8 pc=0x3c528
May 04 17:43:18 motivo go-librespot[12634]: runtime.gcenable.func1()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:178 +0x28 fp=0x1c387ec sp=0x1c387e4 pc=0x2cff4
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1c387ec sp=0x1c387ec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by runtime.gcenable
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:178 +0x74
May 04 17:43:18 motivo go-librespot[12634]: goroutine 19 [GC scavenge wait]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x6463f8, 0xa39b98, 0xd, 0x14, 0x2)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1c38fb4 sp=0x1c38fa0 pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.goparkunlock(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:387
May 04 17:43:18 motivo go-librespot[12634]: runtime.(*scavengerState).park(0xa39b98)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgcscavenge.go:400 +0x64 fp=0x1c38fc8 sp=0x1c38fb4 pc=0x39e1c
May 04 17:43:18 motivo go-librespot[12634]: runtime.bgscavenge(0x1c62000)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgcscavenge.go:633 +0x64 fp=0x1c38fe4 sp=0x1c38fc8 pc=0x3a560
May 04 17:43:18 motivo go-librespot[12634]: runtime.gcenable.func2()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:179 +0x28 fp=0x1c38fec sp=0x1c38fe4 pc=0x2cfa0
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1c38fec sp=0x1c38fec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by runtime.gcenable
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:179 +0xbc
May 04 17:43:18 motivo go-librespot[12634]: goroutine 20 [finalizer wait]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x646338, 0xa4ac60, 0x10, 0x14, 0x1)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1c3c78c sp=0x1c3c778 pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.runfinq()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mfinal.go:193 +0xfc fp=0x1c3c7ec sp=0x1c3c78c pc=0x2bed0
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1c3c7ec sp=0x1c3c7ec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by runtime.createfing
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mfinal.go:163 +0x5c
May 04 17:43:18 motivo go-librespot[12634]: goroutine 21 [IO wait]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x6463e0, 0xadca2f40, 0x2, 0x1b, 0x5)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1c395dc sp=0x1c395c8 pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.netpollblock(0xadca2f34, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x1c395f4 sp=0x1c395dc pc=0x49f2c
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.runtime_pollWait(0xadca2f34, 0x72)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x1c39608 sp=0x1c395f4 pc=0x800b4
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).wait(0x1ca0ec4, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x1c3961c sp=0x1c39608 pc=0xf7db0
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).waitRead(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*FD).Accept(0x1ca0eb0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:614 +0x2d0 fp=0x1c3966c sp=0x1c3961c pc=0xfc8d0
May 04 17:43:18 motivo go-librespot[12634]: net.(*netFD).accept(0x1ca0eb0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/fd_unix.go:172 +0x20 fp=0x1c396cc sp=0x1c3966c pc=0x2822ec
May 04 17:43:18 motivo go-librespot[12634]: net.(*TCPListener).accept(0x1caa530)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/tcpsock_posix.go:148 +0x20 fp=0x1c396e4 sp=0x1c396cc pc=0x29ac84
May 04 17:43:18 motivo go-librespot[12634]: net.(*TCPListener).Accept(0x1caa530)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/tcpsock.go:297 +0x30 fp=0x1c39700 sp=0x1c396e4 pc=0x299c48
May 04 17:43:18 motivo go-librespot[12634]: net/http.(*onceCloseListener).Accept(0x1c00040)
May 04 17:43:18 motivo go-librespot[12634]: :1 +0x34 fp=0x1c39718 sp=0x1c39700 pc=0x427c9c
May 04 17:43:18 motivo go-librespot[12634]: net/http.(*Server).Serve(0x1c72000, {0x6d07d8, 0x1caa530})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:3059 +0x344 fp=0x1c397b4 sp=0x1c39718 pc=0x403c94
May 04 17:43:18 motivo go-librespot[12634]: net/http.Serve(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/server.go:2581
May 04 17:43:18 motivo go-librespot[12634]: main.(*ApiServer).serve(0x1c93a00)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/api_server.go:458 +0x6a0 fp=0x1c397e4 sp=0x1c397b4 pc=0x532ef4
May 04 17:43:18 motivo go-librespot[12634]: main.NewApiServer.func1()
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/api_server.go:238 +0x28 fp=0x1c397ec sp=0x1c397e4 pc=0x532538
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1c397ec sp=0x1c397ec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by main.NewApiServer
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/cmd/daemon/api_server.go:238 +0x1dc
May 04 17:43:18 motivo go-librespot[12634]: goroutine 8 [IO wait]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x6463e0, 0xadca2d6c, 0x2, 0x1b, 0x5)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1c4ae8c sp=0x1c4ae78 pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.netpollblock(0xadca2d60, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x1c4aea4 sp=0x1c4ae8c pc=0x49f2c
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.runtime_pollWait(0xadca2d60, 0x72)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x1c4aeb8 sp=0x1c4aea4 pc=0x800b4
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).wait(0x1c282e4, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x1c4aecc sp=0x1c4aeb8 pc=0xf7db0
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).waitRead(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*FD).RawRead(0x1c282d0, 0x1c94690)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:766 +0x168 fp=0x1c4aef8 sp=0x1c4aecc pc=0xfdcb4
May 04 17:43:18 motivo go-librespot[12634]: net.(*rawConn).Read(0x1fa21e0, 0x1c94690)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/rawconn.go:43 +0x38 fp=0x1c4af18 sp=0x1c4aef8 pc=0x29551c
May 04 17:43:18 motivo go-librespot[12634]: golang.org/x/net/internal/socket.(*Conn).recvMsg(0x1e40280, 0x1c94660, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/golang.org/x/[email protected]/internal/socket/rawconn_msg.go:28 +0x19c fp=0x1c4af48 sp=0x1c4af18 pc=0x4895b0
May 04 17:43:18 motivo go-librespot[12634]: golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/golang.org/x/[email protected]/internal/socket/socket.go:247
May 04 17:43:18 motivo go-librespot[12634]: golang.org/x/net/ipv4.(*payloadHandler).ReadFrom(0x20460c8, {0x2088000, 0x10000, 0x10000})
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/golang.org/x/[email protected]/ipv4/payload_cmsg.go:32 +0x1a4 fp=0x1c4af9c sp=0x1c4af48 pc=0x48cc7c
May 04 17:43:18 motivo go-librespot[12634]: github.com/grandcat/zeroconf.(*Server).recv4(0x205c480, 0x20460c0)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/github.com/grandcat/[email protected]/server.go:254 +0xec fp=0x1c4afe0 sp=0x1c4af9c pc=0x4e4ed8
May 04 17:43:18 motivo go-librespot[12634]: github.com/grandcat/zeroconf.(*Server).mainloop.func1()
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/github.com/grandcat/[email protected]/server.go:188 +0x30 fp=0x1c4afec sp=0x1c4afe0 pc=0x4e4b8c
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1c4afec sp=0x1c4afec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by github.com/grandcat/zeroconf.(*Server).mainloop
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/github.com/grandcat/[email protected]/server.go:188 +0x80
May 04 17:43:18 motivo go-librespot[12634]: goroutine 4 [GC worker (idle)]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x646344, 0x1fec198, 0x1a, 0x14, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1c39f90 sp=0x1c39f7c pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.gcBgMarkWorker()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1275 +0x100 fp=0x1c39fec sp=0x1c39f90 pc=0x2fbb8
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1c39fec sp=0x1c39fec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by runtime.gcBgMarkStartWorkers
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1199 +0x20
May 04 17:43:18 motivo go-librespot[12634]: goroutine 5 [GC worker (idle)]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x646344, 0x1fec1b0, 0x1a, 0x14, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1c3d790 sp=0x1c3d77c pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.gcBgMarkWorker()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1275 +0x100 fp=0x1c3d7ec sp=0x1c3d790 pc=0x2fbb8
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1c3d7ec sp=0x1c3d7ec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by runtime.gcBgMarkStartWorkers
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1199 +0x20
May 04 17:43:18 motivo go-librespot[12634]: goroutine 6 [GC worker (idle)]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x646344, 0x1fec1c8, 0x1a, 0x14, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1c3df90 sp=0x1c3df7c pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.gcBgMarkWorker()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1275 +0x100 fp=0x1c3dfec sp=0x1c3df90 pc=0x2fbb8
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1c3dfec sp=0x1c3dfec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by runtime.gcBgMarkStartWorkers
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1199 +0x20
May 04 17:43:18 motivo go-librespot[12634]: goroutine 7 [GC worker (idle)]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x646344, 0x1cba6a8, 0x1a, 0x14, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1c3e790 sp=0x1c3e77c pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.gcBgMarkWorker()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1275 +0x100 fp=0x1c3e7ec sp=0x1c3e790 pc=0x2fbb8
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1c3e7ec sp=0x1c3e7ec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by runtime.gcBgMarkStartWorkers
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/mgc.go:1199 +0x20
May 04 17:43:18 motivo go-librespot[12634]: goroutine 28 [IO wait]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x6463e0, 0xadca2ea4, 0x2, 0x1b, 0x5)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1d8ea7c sp=0x1d8ea68 pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.netpollblock(0xadca2e98, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x1d8ea94 sp=0x1d8ea7c pc=0x49f2c
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.runtime_pollWait(0xadca2e98, 0x72)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x1d8eaa8 sp=0x1d8ea94 pc=0x800b4
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).wait(0x1ca1144, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x1d8eabc sp=0x1d8eaa8 pc=0xf7db0
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).waitRead(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*FD).Read(0x1ca1130, {0x1db4000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:167 +0x240 fp=0x1d8eb0c sp=0x1d8eabc pc=0xf8fbc
May 04 17:43:18 motivo go-librespot[12634]: net.(*netFD).Read(0x1ca1130, {0x1db4000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/fd_posix.go:55 +0x38 fp=0x1d8eb38 sp=0x1d8eb0c pc=0x280230
May 04 17:43:18 motivo go-librespot[12634]: net.(*conn).Read(0x1c100d0, {0x1db4000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/net.go:183 +0x48 fp=0x1d8eb68 sp=0x1d8eb38 pc=0x2911b4
May 04 17:43:18 motivo go-librespot[12634]: net.(*TCPConn).Read(0x1c100d0, {0x1db4000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: :1 +0x44 fp=0x1d8eb88 sp=0x1d8eb68 pc=0x2a5890
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*atLeastReader).Read(0x1cab540, {0x1db4000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:788 +0x7c fp=0x1d8ebb8 sp=0x1d8eb88 pc=0x35dbf4
May 04 17:43:18 motivo go-librespot[12634]: bytes.(*Buffer).ReadFrom(0x1c7c178, {0x6cd94c, 0x1cab540})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/bytes/buffer.go:202 +0xa4 fp=0x1d8ebf8 sp=0x1d8ebb8 pc=0x124eb4
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).readFromUntil(0x1c7c000, {0x6cecfc, 0x1c100d0}, 0x5)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:810 +0xd4 fp=0x1d8ec20 sp=0x1d8ebf8 pc=0x35de64
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).readRecordOrCCS(0x1c7c000, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:617 +0x11c fp=0x1d8ed9c sp=0x1d8ec20 pc=0x35b694
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).readRecord(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:583
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).Read(0x1c7c000, {0x1d6a000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:1316 +0x168 fp=0x1d8edcc sp=0x1d8ed9c pc=0x360e3c
May 04 17:43:18 motivo go-librespot[12634]: bufio.(*Reader).Read(0x1d684b0, {0x1cd02a4, 0x9, 0x9})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/bufio/bufio.go:237 +0x228 fp=0x1d8edf0 sp=0x1d8edcc pc=0x1455b4
May 04 17:43:18 motivo go-librespot[12634]: io.ReadAtLeast({0x6cd834, 0x1d684b0}, {0x1cd02a4, 0x9, 0x9}, 0x9)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/io/io.go:332 +0x90 fp=0x1d8ee1c sp=0x1d8edf0 pc=0xf1b18
May 04 17:43:18 motivo go-librespot[12634]: io.ReadFull(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/io/io.go:351
May 04 17:43:18 motivo go-librespot[12634]: net/http.http2readFrameHeader({0x1cd02a4, 0x9, 0x9}, {0x6cd834, 0x1d684b0})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:1567 +0x54 fp=0x1d8ee44 sp=0x1d8ee1c pc=0x3c237c
May 04 17:43:18 motivo go-librespot[12634]: net/http.(*http2Framer).ReadFrame(0x1cd0280)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:1831 +0x94 fp=0x1d8eec8 sp=0x1d8ee44 pc=0x3c2b78
May 04 17:43:18 motivo go-librespot[12634]: net/http.(*http2clientConnReadLoop).run(0x1d8efd4)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:9187 +0x150 fp=0x1d8efa4 sp=0x1d8eec8 pc=0x3e6960
May 04 17:43:18 motivo go-librespot[12634]: net/http.(*http2ClientConn).readLoop(0x1c02e10)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:9082 +0x68 fp=0x1d8efe4 sp=0x1d8efa4 pc=0x3e5e50
May 04 17:43:18 motivo go-librespot[12634]: net/http.(*http2Transport).newClientConn.func1()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:7779 +0x28 fp=0x1d8efec sp=0x1d8efe4 pc=0x3deff8
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1d8efec sp=0x1d8efec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by net/http.(*http2Transport).newClientConn
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:7779 +0xc24
May 04 17:43:18 motivo go-librespot[12634]: goroutine 12 [select]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x646428, 0x0, 0x9, 0x18, 0x1)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1d87ea0 sp=0x1d87e8c pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.selectgo(0x1d87fac, 0x1d87f94, 0x0, 0x0, 0x2, 0x1)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/select.go:327 +0xb70 fp=0x1d87f48 sp=0x1d87ea0 pc=0x64d80
May 04 17:43:18 motivo go-librespot[12634]: go-librespot/ap.(*Accesspoint).pongAckTicker(0x1e3a090)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/ap/ap.go:308 +0x8c fp=0x1d87fe4 sp=0x1d87f48 pc=0x455ad0
May 04 17:43:18 motivo go-librespot[12634]: go-librespot/ap.NewAccesspoint.func1()
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/ap/ap.go:67 +0x28 fp=0x1d87fec sp=0x1d87fe4 pc=0x453db8
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1d87fec sp=0x1d87fec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by go-librespot/ap.NewAccesspoint
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/ap/ap.go:67 +0x190
May 04 17:43:18 motivo go-librespot[12634]: goroutine 9 [IO wait]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x6463e0, 0xadca2cd0, 0x2, 0x1b, 0x5)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1e07e64 sp=0x1e07e50 pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.netpollblock(0xadca2cc4, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x1e07e7c sp=0x1e07e64 pc=0x49f2c
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.runtime_pollWait(0xadca2cc4, 0x72)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x1e07e90 sp=0x1e07e7c pc=0x800b4
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).wait(0x1c28334, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x1e07ea4 sp=0x1e07e90 pc=0xf7db0
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).waitRead(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*FD).RawRead(0x1c28320, 0x1e1a030)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:766 +0x168 fp=0x1e07ed0 sp=0x1e07ea4 pc=0xfdcb4
May 04 17:43:18 motivo go-librespot[12634]: net.(*rawConn).Read(0x1fa2208, 0x1e1a030)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/rawconn.go:43 +0x38 fp=0x1e07ef0 sp=0x1e07ed0 pc=0x29551c
May 04 17:43:18 motivo go-librespot[12634]: golang.org/x/net/internal/socket.(*Conn).recvMsg(0x1e40290, 0x1e1a000, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/golang.org/x/[email protected]/internal/socket/rawconn_msg.go:28 +0x19c fp=0x1e07f20 sp=0x1e07ef0 pc=0x4895b0
May 04 17:43:18 motivo go-librespot[12634]: golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/golang.org/x/[email protected]/internal/socket/socket.go:247
May 04 17:43:18 motivo go-librespot[12634]: golang.org/x/net/ipv6.(*payloadHandler).ReadFrom(0x20460f8, {0x1e0a000, 0x10000, 0x10000})
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/golang.org/x/[email protected]/ipv6/payload_cmsg.go:32 +0x17c fp=0x1e07f9c sp=0x1e07f20 pc=0x490cf8
May 04 17:43:18 motivo go-librespot[12634]: github.com/grandcat/zeroconf.(*Server).recv6(0x205c480, 0x20460f0)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/github.com/grandcat/[email protected]/server.go:282 +0xec fp=0x1e07fe0 sp=0x1e07f9c pc=0x4e50c4
May 04 17:43:18 motivo go-librespot[12634]: github.com/grandcat/zeroconf.(*Server).mainloop.func2()
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/github.com/grandcat/[email protected]/server.go:191 +0x30 fp=0x1e07fec sp=0x1e07fe0 pc=0x4e4b30
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1e07fec sp=0x1e07fec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by github.com/grandcat/zeroconf.(*Server).mainloop
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/github.com/grandcat/[email protected]/server.go:191 +0xf0
May 04 17:43:18 motivo go-librespot[12634]: goroutine 67 [IO wait]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x6463e0, 0xadca2b98, 0x2, 0x1b, 0x5)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x20aed68 sp=0x20aed54 pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.netpollblock(0xadca2b8c, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x20aed80 sp=0x20aed68 pc=0x49f2c
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.runtime_pollWait(0xadca2b8c, 0x72)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x20aed94 sp=0x20aed80 pc=0x800b4
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).wait(0x1e2ea64, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x20aeda8 sp=0x20aed94 pc=0xf7db0
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).waitRead(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*FD).Read(0x1e2ea50, {0x1e484a4, 0x3, 0x3})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:167 +0x240 fp=0x20aedf8 sp=0x20aeda8 pc=0xf8fbc
May 04 17:43:18 motivo go-librespot[12634]: net.(*netFD).Read(0x1e2ea50, {0x1e484a4, 0x3, 0x3})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/fd_posix.go:55 +0x38 fp=0x20aee24 sp=0x20aedf8 pc=0x280230
May 04 17:43:18 motivo go-librespot[12634]: net.(*conn).Read(0x1e1c358, {0x1e484a4, 0x3, 0x3})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/net.go:183 +0x48 fp=0x20aee54 sp=0x20aee24 pc=0x2911b4
May 04 17:43:18 motivo go-librespot[12634]: net.(*TCPConn).Read(0x1e1c358, {0x1e484a4, 0x3, 0x3})
May 04 17:43:18 motivo go-librespot[12634]: :1 +0x44 fp=0x20aee74 sp=0x20aee54 pc=0x2a5890
May 04 17:43:18 motivo go-librespot[12634]: io.ReadAtLeast({0x6cecfc, 0x1e1c358}, {0x1e484a4, 0x3, 0x3}, 0x3)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/io/io.go:332 +0x90 fp=0x20aeea0 sp=0x20aee74 pc=0xf1b18
May 04 17:43:18 motivo go-librespot[12634]: io.ReadFull(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/io/io.go:351
May 04 17:43:18 motivo go-librespot[12634]: go-librespot/ap.(*shannonConn).receivePacket(0x1d699e0)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/ap/shannon.go:80 +0x124 fp=0x20aef00 sp=0x20aeea0 pc=0x458588
May 04 17:43:18 motivo go-librespot[12634]: go-librespot/ap.(*Accesspoint).recvLoop(0x1e3a090)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/ap/ap.go:240 +0x58 fp=0x20aefe4 sp=0x20aef00 pc=0x455360
May 04 17:43:18 motivo go-librespot[12634]: go-librespot/ap.(*Accesspoint).startReceiving.func1.1()
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/ap/ap.go:229 +0x28 fp=0x20aefec sp=0x20aefe4 pc=0x4552dc
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x20aefec sp=0x20aefec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by go-librespot/ap.(*Accesspoint).startReceiving.func1
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/ap/ap.go:229 +0x60
May 04 17:43:18 motivo go-librespot[12634]: goroutine 68 [IO wait]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x6463e0, 0xadca2a60, 0x2, 0x1b, 0x5)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x20e990c sp=0x20e98f8 pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.netpollblock(0xadca2a54, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x20e9924 sp=0x20e990c pc=0x49f2c
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.runtime_pollWait(0xadca2a54, 0x72)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x20e9938 sp=0x20e9924 pc=0x800b4
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).wait(0x1e94b54, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x20e994c sp=0x20e9938 pc=0xf7db0
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).waitRead(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*FD).Read(0x1e94b40, {0x1ded000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:167 +0x240 fp=0x20e999c sp=0x20e994c pc=0xf8fbc
May 04 17:43:18 motivo go-librespot[12634]: net.(*netFD).Read(0x1e94b40, {0x1ded000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/fd_posix.go:55 +0x38 fp=0x20e99c8 sp=0x20e999c pc=0x280230
May 04 17:43:18 motivo go-librespot[12634]: net.(*conn).Read(0x1c11f58, {0x1ded000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/net.go:183 +0x48 fp=0x20e99f8 sp=0x20e99c8 pc=0x2911b4
May 04 17:43:18 motivo go-librespot[12634]: net.(*TCPConn).Read(0x1c11f58, {0x1ded000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: :1 +0x44 fp=0x20e9a18 sp=0x20e99f8 pc=0x2a5890
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*atLeastReader).Read(0x1e862f0, {0x1ded000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:788 +0x7c fp=0x20e9a48 sp=0x20e9a18 pc=0x35dbf4
May 04 17:43:18 motivo go-librespot[12634]: bytes.(*Buffer).ReadFrom(0x1c7d378, {0x6cd94c, 0x1e862f0})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/bytes/buffer.go:202 +0xa4 fp=0x20e9a88 sp=0x20e9a48 pc=0x124eb4
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).readFromUntil(0x1c7d200, {0x6cecfc, 0x1c11f58}, 0x5)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:810 +0xd4 fp=0x20e9ab0 sp=0x20e9a88 pc=0x35de64
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).readRecordOrCCS(0x1c7d200, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:617 +0x11c fp=0x20e9c2c sp=0x20e9ab0 pc=0x35b694
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).readRecord(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:583
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).Read(0x1c7d200, {0x1ea4000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:1316 +0x168 fp=0x20e9c5c sp=0x20e9c2c pc=0x360e3c
May 04 17:43:18 motivo go-librespot[12634]: net/http.(*readWriteCloserBody).Read(0x1e411b0, {0x1ea4000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/transport.go:2395 +0xf4 fp=0x20e9c7c sp=0x20e9c5c pc=0x41a324
May 04 17:43:18 motivo go-librespot[12634]: bufio.(*Reader).fill(0x2047290)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/bufio/bufio.go:106 +0x10c fp=0x20e9ca0 sp=0x20e9c7c pc=0x144f14
May 04 17:43:18 motivo go-librespot[12634]: bufio.(*Reader).ReadByte(0x2047290)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/bufio/bufio.go:265 +0x28 fp=0x20e9cac sp=0x20e9ca0 pc=0x1457c4
May 04 17:43:18 motivo go-librespot[12634]: nhooyr.io/websocket.readFrameHeader(0x2047290, {0x2058810, 0x8, 0x8})
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/nhooyr.io/[email protected]/frame.go:54 +0x74 fp=0x20e9cec sp=0x20e9cac pc=0x440768
May 04 17:43:18 motivo go-librespot[12634]: nhooyr.io/websocket.(*Conn).readFrameHeader(0x20587e0, {0x6d0ad4, 0x1ca2020})
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/nhooyr.io/[email protected]/read.go:188 +0xb4 fp=0x20e9dac sp=0x20e9cec pc=0x4432c8
May 04 17:43:18 motivo go-librespot[12634]: nhooyr.io/websocket.(*Conn).readLoop(0x20587e0, {0x6d0ad4, 0x1ca2020})
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/nhooyr.io/[email protected]/read.go:146 +0x3c fp=0x20e9e70 sp=0x20e9dac pc=0x442da0
May 04 17:43:18 motivo go-librespot[12634]: nhooyr.io/websocket.(*Conn).reader(0x20587e0, {0x6d0ad4, 0x1ca2020})
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/nhooyr.io/[email protected]/read.go:315 +0x10c fp=0x20e9efc sp=0x20e9e70 pc=0x443fe0
May 04 17:43:18 motivo go-librespot[12634]: nhooyr.io/websocket.(*Conn).Reader(...)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/nhooyr.io/[email protected]/read.go:30
May 04 17:43:18 motivo go-librespot[12634]: nhooyr.io/websocket.(*Conn).Read(0x20587e0, {0x6d0ad4, 0x1ca2020})
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/go/pkg/mod/nhooyr.io/[email protected]/read.go:36 +0x2c fp=0x20e9f24 sp=0x20e9efc pc=0x44266c
May 04 17:43:18 motivo go-librespot[12634]: go-librespot/dealer.(*Dealer).recvLoop(0x1db05a0)
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/dealer/dealer.go:153 +0x5c fp=0x20e9fe4 sp=0x20e9f24 pc=0x4794f8
May 04 17:43:18 motivo go-librespot[12634]: go-librespot/dealer.(*Dealer).startReceiving.func1.1()
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/dealer/dealer.go:99 +0x28 fp=0x20e9fec sp=0x20e9fe4 pc=0x478fe4
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x20e9fec sp=0x20e9fec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by go-librespot/dealer.(*Dealer).startReceiving.func1
May 04 17:43:18 motivo go-librespot[12634]: /home/runner/work/go-librespot/go-librespot/dealer/dealer.go:99 +0x60
May 04 17:43:18 motivo go-librespot[12634]: goroutine 32 [IO wait]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x6463e0, 0xadca2c34, 0x2, 0x1b, 0x5)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1d8ba7c sp=0x1d8ba68 pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.netpollblock(0xadca2c28, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x1d8ba94 sp=0x1d8ba7c pc=0x49f2c
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.runtime_pollWait(0xadca2c28, 0x72)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x1d8baa8 sp=0x1d8ba94 pc=0x800b4
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).wait(0x1c29c84, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x1d8babc sp=0x1d8baa8 pc=0xf7db0
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).waitRead(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*FD).Read(0x1c29c70, {0x1d6b000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:167 +0x240 fp=0x1d8bb0c sp=0x1d8babc pc=0xf8fbc
May 04 17:43:18 motivo go-librespot[12634]: net.(*netFD).Read(0x1c29c70, {0x1d6b000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/fd_posix.go:55 +0x38 fp=0x1d8bb38 sp=0x1d8bb0c pc=0x280230
May 04 17:43:18 motivo go-librespot[12634]: net.(*conn).Read(0x1c112c0, {0x1d6b000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/net.go:183 +0x48 fp=0x1d8bb68 sp=0x1d8bb38 pc=0x2911b4
May 04 17:43:18 motivo go-librespot[12634]: net.(*TCPConn).Read(0x1c112c0, {0x1d6b000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: :1 +0x44 fp=0x1d8bb88 sp=0x1d8bb68 pc=0x2a5890
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*atLeastReader).Read(0x1e40d50, {0x1d6b000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:788 +0x7c fp=0x1d8bbb8 sp=0x1d8bb88 pc=0x35dbf4
May 04 17:43:18 motivo go-librespot[12634]: bytes.(*Buffer).ReadFrom(0x1c7cd78, {0x6cd94c, 0x1e40d50})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/bytes/buffer.go:202 +0xa4 fp=0x1d8bbf8 sp=0x1d8bbb8 pc=0x124eb4
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).readFromUntil(0x1c7cc00, {0x6cecfc, 0x1c112c0}, 0x5)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:810 +0xd4 fp=0x1d8bc20 sp=0x1d8bbf8 pc=0x35de64
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).readRecordOrCCS(0x1c7cc00, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:617 +0x11c fp=0x1d8bd9c sp=0x1d8bc20 pc=0x35b694
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).readRecord(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:583
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).Read(0x1c7cc00, {0x1d9f000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:1316 +0x168 fp=0x1d8bdcc sp=0x1d8bd9c pc=0x360e3c
May 04 17:43:18 motivo go-librespot[12634]: bufio.(*Reader).Read(0x1d69800, {0x1cd0624, 0x9, 0x9})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/bufio/bufio.go:237 +0x228 fp=0x1d8bdf0 sp=0x1d8bdcc pc=0x1455b4
May 04 17:43:18 motivo go-librespot[12634]: io.ReadAtLeast({0x6cd834, 0x1d69800}, {0x1cd0624, 0x9, 0x9}, 0x9)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/io/io.go:332 +0x90 fp=0x1d8be1c sp=0x1d8bdf0 pc=0xf1b18
May 04 17:43:18 motivo go-librespot[12634]: io.ReadFull(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/io/io.go:351
May 04 17:43:18 motivo go-librespot[12634]: net/http.http2readFrameHeader({0x1cd0624, 0x9, 0x9}, {0x6cd834, 0x1d69800})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:1567 +0x54 fp=0x1d8be44 sp=0x1d8be1c pc=0x3c237c
May 04 17:43:18 motivo go-librespot[12634]: net/http.(*http2Framer).ReadFrame(0x1cd0600)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:1831 +0x94 fp=0x1d8bec8 sp=0x1d8be44 pc=0x3c2b78
May 04 17:43:18 motivo go-librespot[12634]: net/http.(*http2clientConnReadLoop).run(0x1d8bfd4)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:9187 +0x150 fp=0x1d8bfa4 sp=0x1d8bec8 pc=0x3e6960
May 04 17:43:18 motivo go-librespot[12634]: net/http.(*http2ClientConn).readLoop(0x1c02ff0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:9082 +0x68 fp=0x1d8bfe4 sp=0x1d8bfa4 pc=0x3e5e50
May 04 17:43:18 motivo go-librespot[12634]: net/http.(*http2Transport).newClientConn.func1()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:7779 +0x28 fp=0x1d8bfec sp=0x1d8bfe4 pc=0x3deff8
May 04 17:43:18 motivo go-librespot[12634]: runtime.goexit()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/asm_arm.s:831 +0x4 fp=0x1d8bfec sp=0x1d8bfec pc=0x84730
May 04 17:43:18 motivo go-librespot[12634]: created by net/http.(*http2Transport).newClientConn
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:7779 +0xc24
May 04 17:43:18 motivo go-librespot[12634]: goroutine 16 [IO wait]:
May 04 17:43:18 motivo go-librespot[12634]: runtime.gopark(0x6463e0, 0xadca2afc, 0x2, 0x1b, 0x5)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/proc.go:381 +0x100 fp=0x1c51a7c sp=0x1c51a68 pc=0x527b0
May 04 17:43:18 motivo go-librespot[12634]: runtime.netpollblock(0xadca2af0, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:527 +0x100 fp=0x1c51a94 sp=0x1c51a7c pc=0x49f2c
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.runtime_pollWait(0xadca2af0, 0x72)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/runtime/netpoll.go:306 +0x54 fp=0x1c51aa8 sp=0x1c51a94 pc=0x800b4
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).wait(0x1f09914, 0x72, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:84 +0x30 fp=0x1c51abc sp=0x1c51aa8 pc=0xf7db0
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*pollDesc).waitRead(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_poll_runtime.go:89
May 04 17:43:18 motivo go-librespot[12634]: internal/poll.(*FD).Read(0x1f09900, {0x1e61000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/internal/poll/fd_unix.go:167 +0x240 fp=0x1c51b0c sp=0x1c51abc pc=0xf8fbc
May 04 17:43:18 motivo go-librespot[12634]: net.(*netFD).Read(0x1f09900, {0x1e61000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/fd_posix.go:55 +0x38 fp=0x1c51b38 sp=0x1c51b0c pc=0x280230
May 04 17:43:18 motivo go-librespot[12634]: net.(*conn).Read(0x1e1cfd0, {0x1e61000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/net.go:183 +0x48 fp=0x1c51b68 sp=0x1c51b38 pc=0x2911b4
May 04 17:43:18 motivo go-librespot[12634]: net.(*TCPConn).Read(0x1e1cfd0, {0x1e61000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: :1 +0x44 fp=0x1c51b88 sp=0x1c51b68 pc=0x2a5890
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*atLeastReader).Read(0x1c0f840, {0x1e61000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:788 +0x7c fp=0x1c51bb8 sp=0x1c51b88 pc=0x35dbf4
May 04 17:43:18 motivo go-librespot[12634]: bytes.(*Buffer).ReadFrom(0x1e2a378, {0x6cd94c, 0x1c0f840})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/bytes/buffer.go:202 +0xa4 fp=0x1c51bf8 sp=0x1c51bb8 pc=0x124eb4
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).readFromUntil(0x1e2a200, {0x6cecfc, 0x1e1cfd0}, 0x5)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:810 +0xd4 fp=0x1c51c20 sp=0x1c51bf8 pc=0x35de64
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).readRecordOrCCS(0x1e2a200, 0x0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:617 +0x11c fp=0x1c51d9c sp=0x1c51c20 pc=0x35b694
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).readRecord(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:583
May 04 17:43:18 motivo go-librespot[12634]: crypto/tls.(*Conn).Read(0x1e2a200, {0x1f25000, 0x1000, 0x1000})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/crypto/tls/conn.go:1316 +0x168 fp=0x1c51dcc sp=0x1c51d9c pc=0x360e3c
May 04 17:43:18 motivo go-librespot[12634]: bufio.(*Reader).Read(0x1f16ab0, {0x1e08124, 0x9, 0x9})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/bufio/bufio.go:237 +0x228 fp=0x1c51df0 sp=0x1c51dcc pc=0x1455b4
May 04 17:43:18 motivo go-librespot[12634]: io.ReadAtLeast({0x6cd834, 0x1f16ab0}, {0x1e08124, 0x9, 0x9}, 0x9)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/io/io.go:332 +0x90 fp=0x1c51e1c sp=0x1c51df0 pc=0xf1b18
May 04 17:43:18 motivo go-librespot[12634]: io.ReadFull(...)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/io/io.go:351
May 04 17:43:18 motivo go-librespot[12634]: net/http.http2readFrameHeader({0x1e08124, 0x9, 0x9}, {0x6cd834, 0x1f16ab0})
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:1567 +0x54 fp=0x1c51e44 sp=0x1c51e1c pc=0x3c237c
May 04 17:43:18 motivo go-librespot[12634]: net/http.(*http2Framer).ReadFrame(0x1e08100)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:1831 +0x94 fp=0x1c51ec8 sp=0x1c51e44 pc=0x3c2b78
May 04 17:43:18 motivo go-librespot[12634]: net/http.(*http2clientConnReadLoop).run(0x1c51fd4)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:9187 +0x150 fp=0x1c51fa4 sp=0x1c51ec8 pc=0x3e6960
May 04 17:43:18 motivo go-librespot[12634]: net/http.(*http2ClientConn).readLoop(0x1ffe5a0)
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:9082 +0x68 fp=0x1c51fe4 sp=0x1c51fa4 pc=0x3e5e50
May 04 17:43:18 motivo go-librespot[12634]: net/http.(*http2Transport).newClientConn.func1()
May 04 17:43:18 motivo go-librespot[12634]: /opt/hostedtoolcache/go/1.20.8/x64/src/net/http/h2_bundle.go:7779 +0x28 fp=0x1c51fec sp=0x1c51fe4 pc=0x3deff8

Playback Reporting

I've been trying to figure out if the latest Spotify client (desktop) is fully migrated to HTTP(s) and while a lot of the requests are, I still can't seem to sniff out some playback reporting requests which makes me think it's still being done over Mercury requests.

For example, once a track finishes playing at a certain point, librespot-java used to send the stream reporting data back to Spotify over Hermes as here: https://github.com/librespot-org/librespot-java/blob/dev/player/src/main/java/xyz/gianlu/librespot/player/metrics/TrackTransitionEvent.java

Do I need to reimplement Mercury requests to be able to do this?

Is there any way I can sniff the Mercury requests since the old spotify analyze tools seem to be outdated so any guidance on how I can do it myself would be appreciated. I'll work on making a PR once I have some guidance and can push it with the new updated Go library

Add support for alsa mixer volume

Right now, if the "external volume" configuration option is enabled, the spotify volume slider does nothing, so I propose that it at least should be possible to update the volume of for example an alsa mixer.

I have written a short snippet on how it could be implemented, but I am not sure how to implement it into the project without creating a mess.

var mixerHandle *C.snd_mixer_t
var sid *C.snd_mixer_selem_id_t

C.snd_mixer_open(&mixerHandle, 0)
C.snd_mixer_attach(mixerHandle, C.CString("default"))
C.snd_mixer_selem_register(mixerHandle, nil, nil)
C.snd_mixer_load(mixerHandle)

C.snd_mixer_selem_id_malloc(&sid)
defer C.free(unsafe.Pointer(sid))

C.snd_mixer_selem_id_set_index(sid, 0)
C.snd_mixer_selem_id_set_name(sid, C.CString("Master"))
var elem *C.snd_mixer_elem_t = C.snd_mixer_find_selem(mixerHandle, sid)

var minVol C.long
var maxVol C.long
C.snd_mixer_selem_get_playback_volume_range(elem, &minVol, &maxVol)

var volume = vol*(float32(maxVol-minVol)) + float32(minVol)
C.snd_mixer_selem_set_playback_volume_all(elem, C.long(volume))

C.snd_mixer_close(mixerHandle)

Fails to start playing track on RPi4 Alsa error

Just tried this out on RPi4 Ubuntu 22.04 arm64. Downloaded as binary from Github 0.0.15 release

I can see the 'speaker' in my desktop Spotify, but when playing a track it fails:

/opt/go-librespot$ ./go-librespot 
INFO[0000] generated new device id: 8689786ff7807fc2c3b43233fc96462fa98401bb 
WARN[0007] reducing track normalisation factor to prevent clipping, please add negative pregain to avoid 
WARN[0007] failed handling dealer request                error="failed loading current track (transfer): failed creating stream for spotify:track:7gTVQWqEGrqTuZkXpe43z1: ALSA error at snd_pcm_hw_params_set_format: Invalid argument"

I use a HifiBerry HAT.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.