[GH-ISSUE #161] go-librespot spotify connect doesn't accept connection and then crashes #101

Closed
opened 2026-02-28 14:25:22 +03:00 by kerem · 12 comments
Owner

Originally created by @FrancisHGR on GitHub (Jan 15, 2025).
Original GitHub issue: https://github.com/devgianlu/go-librespot/issues/161

So I have build / compiled go-librespot from source (Commit 4af7200) in order to pipe music to fifo for owntone. I have setup everything according to my understanding correctly. However, once I try to connect to my go-librespot spotify connect device "spotify-smart-home" via my phone, the connection is rejected and the whole spotify connect device is not even reachable anymore, not being listed under the spotify connect devices in my spotify app. Connection try happens after the line "DEBU[0001] put connect state because VOLUME_CHANGED "

My config.yml is below.

Any ideas based on the log?

root@debian-test:~/librespot/go-librespot# go run ./cmd/daemon
INFO[0000] running go-librespot dev                     
DEBU[0000] app state loaded                             
DEBU[0000] fetched new accesspoints: [ap-gew4.spotify.com:4070 ap-gew4.spotify.com:443 ap-gew4.spotify.com:80 ap-gue1.spotify.com:4070 ap-gew1.spotify.com:443 ap-gae2.spotify.com:80] 
DEBU[0000] fetched new dealers: [gew4-dealer.spotify.com:443 gue1-dealer.spotify.com:443 gew1-dealer.spotify.com:443 gae2-dealer.spotify.com:443] 
DEBU[0000] fetched new spclients: [gew4-spclient.spotify.com:443 gue1-spclient.spotify.com:443 gew1-spclient.spotify.com:443 gae2-spclient.spotify.com:443] 
INFO[0000] zeroconf server listening on port 36469      
DEBU[0000] obtained new client token: ####BLURRED#####
DEBU[0000] connected to ap-gew4.spotify.com:4070        
DEBU[0000] completed keyexchange                        
DEBU[0000] completed challenge                          
INFO[0000] authenticated AP as  ####BLURRED##### 
INFO[0000] authenticated Login5 as  ####BLURRED##### 
DEBU[0000] initializing zeroconf session, username:  ####BLURRED##### 
DEBU[0000] dealer connection opened                     
DEBU[0000] skipping packet PacketTypeSecretBlock, len: 336 
DEBU[0000] skipping packet PacketTypeLicenseVersion, len: 2 
DEBU[0000] skipping packet PacketTypeUnknown1f, len: 17 
DEBU[0000] skipping packet PacketTypeLegacyWelcome, len: 0 
DEBU[0000] skipping packet PacketTypeMercuryEvent, len: 481 
DEBU[0000] received connection id:  ####BLURRED#####
DEBU[0000] put connect state because NEW_DEVICE         
DEBU[0000] update volume to 65535/65535                 
DEBU[0001] put connect state because VOLUME_CHANGED     
DEBU[0007] handling transfer player command from  ####BLURRED##### 
DEBU[0007] resolved context of track                     uri="spotify:playlist:2Wn8mZPx5ptRI6RH8Vrax6"
DEBU[0007] shuffled context with seed 5176609461849141274 (len: 51, keep: 30)  uri="spotify:playlist:2Wn8mZPx5ptRI6RH8Vrax6"
DEBU[0007] loading track (paused: true, position: 23951ms)  uri="spotify:track:5cqDvP5jkRvJ78jcreuM4L"
DEBU[0007] put connect state because PLAYER_STATE_CHANGED 
DEBU[0007] skipping packet PacketTypeMercuryEvent, len: 250 
DEBU[0007] selected format OGG_VORBIS_160 (d380f511c448dd4307f1d59a3cafc18504d50702)  uri="spotify:track:5cqDvP5jkRvJ78jcreuM4L"
DEBU[0007] requested aes key for file d380f511c448dd4307f1d59a3cafc18504d50702, gid: 5cqDvP5jkRvJ78jcreuM4L 
DEBU[0009] fetched first chunk of 7, total size is 3627652 bytes  uri="spotify:track:5cqDvP5jkRvJ78jcreuM4L"
DEBU[0009] fetched chunk 1/6, size: 524288               uri="spotify:track:5cqDvP5jkRvJ78jcreuM4L"
DEBU[0009] fetched chunk 2/6, size: 524288               uri="spotify:track:5cqDvP5jkRvJ78jcreuM4L"
DEBU[0009] fetched chunk 3/6, size: 524288               uri="spotify:track:5cqDvP5jkRvJ78jcreuM4L"
ERRO[0090] did not receive last pong from dealer, 60s passed 
ERRO[0120] did not receive last pong from dealer, 90s passed 
ERRO[0150] did not receive last pong from dealer, 120s passed 
ERRO[0180] did not receive last pong from dealer, 150s passed 
ERRO[0210] did not receive last pong from dealer, 180s passed 
ERRO[0240] did not receive last pong from dealer, 210s passed 
ERRO[0270] did not receive last pong from dealer, 240s passed 
ERRO[0300] did not receive last pong from dealer, 270s passed 
ERRO[0330] did not receive last pong from dealer, 300s passed 
ERRO[0360] did not receive last pong from dealer, 330s passed 
ERRO[0390] did not receive last pong from dealer, 360s passed 
ERRO[0420] did not receive last pong from dealer, 390s passed 
ERRO[0450] did not receive last pong from dealer, 420s passed 
ERRO[0480] did not receive last pong from dealer, 450s passed 
ERRO[0510] did not receive last pong from dealer, 480s passed 
ERRO[0540] did not receive last pong from dealer, 510s passed 

and so on...

config.yml

log_level: debug
device_name: Spotify-Smart-Home
zeroconf_enabled: true # Whether to keep the device discoverable at all times, even if authenticated via>
zeroconf_port: 0 # The port to use for Zeroconf, 0 for random
credentials:
  type: spotify_token
  spotify_token:
    username:  ####BLURRED##### # Whether to persist zeroconf user credent>
device_type: computer # Spotify device type (icon)
audio_backend: pipe # Audio backend to use (alsa, pipe, pulseaudio)
audio_buffer_time: 500000 # Audio buffer time in microseconds, ALSA only
audio_period_count: 4 # Number of periods to request, ALSA only
audio_output_pipe: /root/tmp/spotify.fifo # Path to a named pipe for audio output
audio_output_pipe_format: s16le # Audio output pipe format (s16le, s32le, f32le)
bitrate: 160 # Playback bitrate (96, 160, 320)
volume_steps: 100 # Volume steps count
initial_volume: 100 # Initial volume in steps (not applied to the mixer device)
external_volume: false # Whether volume is controlled externally 
Originally created by @FrancisHGR on GitHub (Jan 15, 2025). Original GitHub issue: https://github.com/devgianlu/go-librespot/issues/161 So I have build / compiled go-librespot from source (Commit 4af7200) in order to pipe music to fifo for owntone. I have setup everything according to my understanding correctly. However, once I try to connect to my go-librespot spotify connect device "spotify-smart-home" via my phone, the connection is rejected and the whole spotify connect device is not even reachable anymore, not being listed under the spotify connect devices in my spotify app. Connection try happens after the line "DEBU[0001] put connect state because VOLUME_CHANGED " My config.yml is below. Any ideas based on the log? ``` root@debian-test:~/librespot/go-librespot# go run ./cmd/daemon INFO[0000] running go-librespot dev DEBU[0000] app state loaded DEBU[0000] fetched new accesspoints: [ap-gew4.spotify.com:4070 ap-gew4.spotify.com:443 ap-gew4.spotify.com:80 ap-gue1.spotify.com:4070 ap-gew1.spotify.com:443 ap-gae2.spotify.com:80] DEBU[0000] fetched new dealers: [gew4-dealer.spotify.com:443 gue1-dealer.spotify.com:443 gew1-dealer.spotify.com:443 gae2-dealer.spotify.com:443] DEBU[0000] fetched new spclients: [gew4-spclient.spotify.com:443 gue1-spclient.spotify.com:443 gew1-spclient.spotify.com:443 gae2-spclient.spotify.com:443] INFO[0000] zeroconf server listening on port 36469 DEBU[0000] obtained new client token: ####BLURRED##### DEBU[0000] connected to ap-gew4.spotify.com:4070 DEBU[0000] completed keyexchange DEBU[0000] completed challenge INFO[0000] authenticated AP as ####BLURRED##### INFO[0000] authenticated Login5 as ####BLURRED##### DEBU[0000] initializing zeroconf session, username: ####BLURRED##### DEBU[0000] dealer connection opened DEBU[0000] skipping packet PacketTypeSecretBlock, len: 336 DEBU[0000] skipping packet PacketTypeLicenseVersion, len: 2 DEBU[0000] skipping packet PacketTypeUnknown1f, len: 17 DEBU[0000] skipping packet PacketTypeLegacyWelcome, len: 0 DEBU[0000] skipping packet PacketTypeMercuryEvent, len: 481 DEBU[0000] received connection id: ####BLURRED##### DEBU[0000] put connect state because NEW_DEVICE DEBU[0000] update volume to 65535/65535 DEBU[0001] put connect state because VOLUME_CHANGED DEBU[0007] handling transfer player command from ####BLURRED##### DEBU[0007] resolved context of track uri="spotify:playlist:2Wn8mZPx5ptRI6RH8Vrax6" DEBU[0007] shuffled context with seed 5176609461849141274 (len: 51, keep: 30) uri="spotify:playlist:2Wn8mZPx5ptRI6RH8Vrax6" DEBU[0007] loading track (paused: true, position: 23951ms) uri="spotify:track:5cqDvP5jkRvJ78jcreuM4L" DEBU[0007] put connect state because PLAYER_STATE_CHANGED DEBU[0007] skipping packet PacketTypeMercuryEvent, len: 250 DEBU[0007] selected format OGG_VORBIS_160 (d380f511c448dd4307f1d59a3cafc18504d50702) uri="spotify:track:5cqDvP5jkRvJ78jcreuM4L" DEBU[0007] requested aes key for file d380f511c448dd4307f1d59a3cafc18504d50702, gid: 5cqDvP5jkRvJ78jcreuM4L DEBU[0009] fetched first chunk of 7, total size is 3627652 bytes uri="spotify:track:5cqDvP5jkRvJ78jcreuM4L" DEBU[0009] fetched chunk 1/6, size: 524288 uri="spotify:track:5cqDvP5jkRvJ78jcreuM4L" DEBU[0009] fetched chunk 2/6, size: 524288 uri="spotify:track:5cqDvP5jkRvJ78jcreuM4L" DEBU[0009] fetched chunk 3/6, size: 524288 uri="spotify:track:5cqDvP5jkRvJ78jcreuM4L" ERRO[0090] did not receive last pong from dealer, 60s passed ERRO[0120] did not receive last pong from dealer, 90s passed ERRO[0150] did not receive last pong from dealer, 120s passed ERRO[0180] did not receive last pong from dealer, 150s passed ERRO[0210] did not receive last pong from dealer, 180s passed ERRO[0240] did not receive last pong from dealer, 210s passed ERRO[0270] did not receive last pong from dealer, 240s passed ERRO[0300] did not receive last pong from dealer, 270s passed ERRO[0330] did not receive last pong from dealer, 300s passed ERRO[0360] did not receive last pong from dealer, 330s passed ERRO[0390] did not receive last pong from dealer, 360s passed ERRO[0420] did not receive last pong from dealer, 390s passed ERRO[0450] did not receive last pong from dealer, 420s passed ERRO[0480] did not receive last pong from dealer, 450s passed ERRO[0510] did not receive last pong from dealer, 480s passed ERRO[0540] did not receive last pong from dealer, 510s passed ``` and so on... config.yml ``` log_level: debug device_name: Spotify-Smart-Home zeroconf_enabled: true # Whether to keep the device discoverable at all times, even if authenticated via> zeroconf_port: 0 # The port to use for Zeroconf, 0 for random credentials: type: spotify_token spotify_token: username: ####BLURRED##### # Whether to persist zeroconf user credent> device_type: computer # Spotify device type (icon) audio_backend: pipe # Audio backend to use (alsa, pipe, pulseaudio) audio_buffer_time: 500000 # Audio buffer time in microseconds, ALSA only audio_period_count: 4 # Number of periods to request, ALSA only audio_output_pipe: /root/tmp/spotify.fifo # Path to a named pipe for audio output audio_output_pipe_format: s16le # Audio output pipe format (s16le, s32le, f32le) bitrate: 160 # Playback bitrate (96, 160, 320) volume_steps: 100 # Volume steps count initial_volume: 100 # Initial volume in steps (not applied to the mixer device) external_volume: false # Whether volume is controlled externally ```
kerem closed this issue 2026-02-28 14:25:22 +03:00
Author
Owner

@devgianlu commented on GitHub (Jan 16, 2025):

That's strange, do you have an unstable network connection? Does this happen even when using the alsa/pulseaudio backend?

Can you reproduce the issue and then send a SIGABRT (kill -6 $(pidof go-librespot)) so that it dumps the goroutines and post the logs here?

<!-- gh-comment-id:2594935205 --> @devgianlu commented on GitHub (Jan 16, 2025): That's strange, do you have an unstable network connection? Does this happen even when using the alsa/pulseaudio backend? Can you reproduce the issue and then send a `SIGABRT` (`kill -6 $(pidof go-librespot)`) so that it dumps the goroutines and post the logs here?
Author
Owner

@FrancisHGR commented on GitHub (Jan 16, 2025):

Hope I made it right:

root@debian-test:~/go-librespot# SIGABRT: abort
PC=0x48068e m=0 sigcode=0

goroutine 0 gp=0x10a0000 m=0 mp=0x10a0e40 [idle]:
internal/runtime/syscall.Syscall6()
        /usr/local/go/src/internal/runtime/syscall/asm_linux_amd64.s:36 +0xe fp=0x7ffe2c5194e0 sp=0x7ffe2c5194d8 pc=0x48068e
internal/runtime/syscall.EpollWait(0x2c5195b4?, {0x7ffe2c51956c?, 0x7f6b13414590?, 0x402156?}, 0x400da8?, 0x0?)
        /usr/local/go/src/internal/runtime/syscall/syscall_linux.go:32 +0x45 fp=0x7ffe2c519530 sp=0x7ffe2c5194e0 pc=0x480625
runtime.netpoll(0xc00004a000?)
        /usr/local/go/src/runtime/netpoll_epoll.go:116 +0xd2 fp=0x7ffe2c519bb8 sp=0x7ffe2c519530 pc=0x438e72
runtime.findRunnable()
        /usr/local/go/src/runtime/proc.go:3580 +0x8c5 fp=0x7ffe2c519d30 sp=0x7ffe2c519bb8 pc=0x445d85
runtime.schedule()
        /usr/local/go/src/runtime/proc.go:3995 +0xb1 fp=0x7ffe2c519d68 sp=0x7ffe2c519d30 pc=0x4472f1
runtime.park_m(0xc00016ba40)
        /usr/local/go/src/runtime/proc.go:4102 +0x1eb fp=0x7ffe2c519dc0 sp=0x7ffe2c519d68 pc=0x44770b
runtime.mcall()
        /usr/local/go/src/runtime/asm_amd64.s:459 +0x4e fp=0x7ffe2c519dd8 sp=0x7ffe2c519dc0 pc=0x4796ce

goroutine 1 gp=0xc0000061c0 m=nil [select]:
runtime.gopark(0xc000043c78?, 0x2?, 0xc0?, 0x5d?, 0xc000043c14?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc0001bdaa0 sp=0xc0001bda80 pc=0x473bce
runtime.selectgo(0xc0001bdc78, 0xc000043c10, 0x40?, 0x0, 0x41988b?, 0x1)
        /usr/local/go/src/runtime/select.go:335 +0x7a5 fp=0xc0001bdbc8 sp=0xc0001bdaa0 pc=0x451885
github.com/devgianlu/go-librespot/zeroconf.(*Zeroconf).Serve(0xc0002f5ae0, 0xc0001bdd80)
        /root/go-librespot/zeroconf/zeroconf.go:270 +0x29a fp=0xc0001bdd10 sp=0xc0001bdbc8 pc=0x918c7a
main.(*App).withAppPlayer(0xc0000aac80, {0xc19038, 0x10c0c20}, 0xc00007f640)
        /root/go-librespot/cmd/daemon/main.go:316 +0x513 fp=0xc0001bde10 sp=0xc0001bdd10 pc=0x9ae313
main.(*App).withCredentials(...)
        /root/go-librespot/cmd/daemon/main.go:190
main.(*App).SpotifyToken(0xc0000aac80, {0xc19038, 0x10c0c20}, {0xc00003a4c8?, 0xc000043ee8?}, {0x0?, 0x1?})
        /root/go-librespot/cmd/daemon/main.go:182 +0xc5 fp=0xc0001bde68 sp=0xc0001bde10 pc=0x9ad885
main.main()
        /root/go-librespot/cmd/daemon/main.go:618 +0x698 fp=0xc0001bdf50 sp=0xc0001bde68 pc=0x9b0ab8
runtime.main()
        /usr/local/go/src/runtime/proc.go:272 +0x28b fp=0xc0001bdfe0 sp=0xc0001bdf50 pc=0x43fa8b
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0001bdfe8 sp=0xc0001bdfe0 pc=0x47b701

goroutine 2 gp=0xc000006c40 m=nil [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00005efa8 sp=0xc00005ef88 pc=0x473bce
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:430
runtime.forcegchelper()
        /usr/local/go/src/runtime/proc.go:337 +0xb3 fp=0xc00005efe0 sp=0xc00005efa8 pc=0x43fdd3
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00005efe8 sp=0xc00005efe0 pc=0x47b701
created by runtime.init.7 in goroutine 1
        /usr/local/go/src/runtime/proc.go:325 +0x1a

goroutine 3 gp=0xc000006e00 m=nil [GC sweep wait]:
runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00005f780 sp=0xc00005f760 pc=0x473bce
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:430
runtime.bgsweep(0xc000080000)
        /usr/local/go/src/runtime/mgcsweep.go:317 +0xdf fp=0xc00005f7c8 sp=0xc00005f780 pc=0x42a4df
runtime.gcenable.gowrap1()
        /usr/local/go/src/runtime/mgc.go:204 +0x25 fp=0xc00005f7e0 sp=0xc00005f7c8 pc=0x41eba5
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00005f7e8 sp=0xc00005f7e0 pc=0x47b701
created by runtime.gcenable in goroutine 1
        /usr/local/go/src/runtime/mgc.go:204 +0x66

goroutine 4 gp=0xc000006fc0 m=nil [GC scavenge wait]:
runtime.gopark(0x109fbe0?, 0xc0c298?, 0x0?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00005ff78 sp=0xc00005ff58 pc=0x473bce
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:430
runtime.(*scavengerState).park(0x109fbe0)
        /usr/local/go/src/runtime/mgcscavenge.go:425 +0x49 fp=0xc00005ffa8 sp=0xc00005ff78 pc=0x427ec9
runtime.bgscavenge(0xc000080000)
        /usr/local/go/src/runtime/mgcscavenge.go:658 +0x59 fp=0xc00005ffc8 sp=0xc00005ffa8 pc=0x428459
runtime.gcenable.gowrap2()
        /usr/local/go/src/runtime/mgc.go:205 +0x25 fp=0xc00005ffe0 sp=0xc00005ffc8 pc=0x41eb45
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00005ffe8 sp=0xc00005ffe0 pc=0x47b701
created by runtime.gcenable in goroutine 1
        /usr/local/go/src/runtime/mgc.go:205 +0xa5

goroutine 5 gp=0xc000007880 m=nil [finalizer wait]:
runtime.gopark(0x0?, 0xc0002fb5c0?, 0x10?, 0x41?, 0x1000000010?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00005e620 sp=0xc00005e600 pc=0x473bce
runtime.runfinq()
        /usr/local/go/src/runtime/mfinal.go:193 +0x107 fp=0xc00005e7e0 sp=0xc00005e620 pc=0x41dc27
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00005e7e8 sp=0xc00005e7e0 pc=0x47b701
created by runtime.createfing in goroutine 1
        /usr/local/go/src/runtime/mfinal.go:163 +0x3d

goroutine 6 gp=0xc00016a8c0 m=nil [chan receive]:
runtime.gopark(0xc000060760?, 0x548ee5?, 0xe0?, 0xd9?, 0xc269a0?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000060718 sp=0xc0000606f8 pc=0x473bce
runtime.chanrecv(0xc0000902a0, 0x0, 0x1)
        /usr/local/go/src/runtime/chan.go:639 +0x41c fp=0xc000060790 sp=0xc000060718 pc=0x40e7bc
runtime.chanrecv1(0x0?, 0x0?)
        /usr/local/go/src/runtime/chan.go:489 +0x12 fp=0xc0000607b8 sp=0xc000060790 pc=0x40e372
runtime.unique_runtime_registerUniqueMapCleanup.func1(...)
        /usr/local/go/src/runtime/mgc.go:1781
runtime.unique_runtime_registerUniqueMapCleanup.gowrap1()
        /usr/local/go/src/runtime/mgc.go:1784 +0x2f fp=0xc0000607e0 sp=0xc0000607b8 pc=0x421bcf
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000607e8 sp=0xc0000607e0 pc=0x47b701
created by unique.runtime_registerUniqueMapCleanup in goroutine 1
        /usr/local/go/src/runtime/mgc.go:1779 +0x96

goroutine 48 gp=0xc00016ac40 m=nil [IO wait]:
runtime.gopark(0xb885f7f372c699e9?, 0x229cf3657228ebdb?, 0x40?, 0xac?, 0xb?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000073700 sp=0xc0000736e0 pc=0x473bce
runtime.netpollblock(0x4921b8?, 0x40bbc6?, 0x0?)
        /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc000073738 sp=0xc000073700 pc=0x438437
internal/poll.runtime_pollWait(0x7f6b12c8e220, 0x72)
        /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000073758 sp=0xc000073738 pc=0x472ec5
internal/poll.(*pollDesc).wait(0xc00039f080?, 0xc0003dc000?, 0x0)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc000073780 sp=0xc000073758 pc=0x4ef267
internal/poll.(*pollDesc).waitRead(...)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00039f080, {0xc0003dc000, 0x1000, 0x1000})
        /usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc000073818 sp=0xc000073780 pc=0x4f055a
net.(*netFD).Read(0xc00039f080, {0xc0003dc000?, 0x4f2865?, 0xc00039f080?})
        /usr/local/go/src/net/fd_posix.go:55 +0x25 fp=0xc000073860 sp=0xc000073818 pc=0x5648e5
net.(*conn).Read(0xc00004a7c0, {0xc0003dc000?, 0xc000073a78?, 0x656c84?})
        /usr/local/go/src/net/net.go:189 +0x45 fp=0xc0000738a8 sp=0xc000073860 pc=0x573045
net.(*TCPConn).Read(0x23b?, {0xc0003dc000?, 0x18?, 0x240?})
        <autogenerated>:1 +0x25 fp=0xc0000738d8 sp=0xc0000738a8 pc=0x587d25
crypto/tls.(*atLeastReader).Read(0xc00035d668, {0xc0003dc000?, 0x0?, 0xc00035d668?})
        /usr/local/go/src/crypto/tls/conn.go:809 +0x3b fp=0xc000073920 sp=0xc0000738d8 pc=0x65a4fb
bytes.(*Buffer).ReadFrom(0xc0003d22b8, {0xc134e0, 0xc00035d668})
        /usr/local/go/src/bytes/buffer.go:211 +0x98 fp=0xc000073978 sp=0xc000073920 pc=0x51ce58
crypto/tls.(*Conn).readFromUntil(0xc0003d2008, {0xc11d00, 0xc00004a7c0}, 0xc000073a10?)
        /usr/local/go/src/crypto/tls/conn.go:831 +0xde fp=0xc0000739b0 sp=0xc000073978 pc=0x65a6de
crypto/tls.(*Conn).readRecordOrCCS(0xc0003d2008, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:629 +0x3cf fp=0xc000073c28 sp=0xc0000739b0 pc=0x6577ef
crypto/tls.(*Conn).readRecord(...)
        /usr/local/go/src/crypto/tls/conn.go:591
crypto/tls.(*Conn).Read(0xc0003d2008, {0xc0003ea000, 0x1000, 0x11?})
        /usr/local/go/src/crypto/tls/conn.go:1385 +0x150 fp=0xc000073c98 sp=0xc000073c28 pc=0x65e050
bufio.(*Reader).Read(0xc0003d5260, {0xc0003e6120, 0x9, 0x7425ee?})
        /usr/local/go/src/bufio/bufio.go:241 +0x197 fp=0xc000073cd0 sp=0xc000073c98 pc=0x6a2377
io.ReadAtLeast({0xc120a0, 0xc0003d5260}, {0xc0003e6120, 0x9, 0x9}, 0x9)
        /usr/local/go/src/io/io.go:335 +0x90 fp=0xc000073d18 sp=0xc000073cd0 pc=0x4e6d70
io.ReadFull(...)
        /usr/local/go/src/io/io.go:354
net/http.http2readFrameHeader({0xc0003e6120, 0x9, 0x6fede8?}, {0xc120a0?, 0xc0003d5260?})
        /usr/local/go/src/net/http/h2_bundle.go:1642 +0x65 fp=0xc000073d68 sp=0xc000073d18 pc=0x6d6e05
net/http.(*http2Framer).ReadFrame(0xc0003e60e0)
        /usr/local/go/src/net/http/h2_bundle.go:1909 +0x85 fp=0xc000073e10 sp=0xc000073d68 pc=0x6d7545
net/http.(*http2clientConnReadLoop).run(0xc000073fa8)
        /usr/local/go/src/net/http/h2_bundle.go:9496 +0xda fp=0xc000073f60 sp=0xc000073e10 pc=0x6fa7da
net/http.(*http2ClientConn).readLoop(0xc0003e8000)
        /usr/local/go/src/net/http/h2_bundle.go:9392 +0x7c fp=0xc000073fc8 sp=0xc000073f60 pc=0x6f9dbc
net/http.(*http2Transport).newClientConn.gowrap1()
        /usr/local/go/src/net/http/h2_bundle.go:8006 +0x25 fp=0xc000073fe0 sp=0xc000073fc8 pc=0x6f2b45
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000073fe8 sp=0xc000073fe0 pc=0x47b701
created by net/http.(*http2Transport).newClientConn in goroutine 47
        /usr/local/go/src/net/http/h2_bundle.go:8006 +0xd1b

goroutine 85 gp=0xc00016ae00 m=nil [select]:
runtime.gopark(0xc0000e1c50?, 0x3?, 0x0?, 0xae?, 0xc0000e1b8e?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc0000e1a20 sp=0xc0000e1a00 pc=0x473bce
runtime.selectgo(0xc0000e1c50, 0xc0000e1b88, 0x0?, 0x0, 0x9fa820?, 0x1)
        /usr/local/go/src/runtime/select.go:335 +0x7a5 fp=0xc0000e1b48 sp=0xc0000e1a20 pc=0x451885
github.com/devgianlu/go-librespot/audio.(*KeyProvider).recvLoop(0xc00033b3c0)
        /root/go-librespot/audio/provider.go:63 +0x185 fp=0xc0000e1fc8 sp=0xc0000e1b48 pc=0x854fa5
github.com/devgianlu/go-librespot/audio.(*KeyProvider).startReceiving.func1.gowrap1()
        /root/go-librespot/audio/provider.go:53 +0x25 fp=0xc0000e1fe0 sp=0xc0000e1fc8 pc=0x854de5
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000e1fe8 sp=0xc0000e1fe0 pc=0x47b701
created by github.com/devgianlu/go-librespot/audio.(*KeyProvider).startReceiving.func1 in goroutine 51
        /root/go-librespot/audio/provider.go:53 +0x56

goroutine 15 gp=0xc00016afc0 m=nil [GC worker (idle)]:
runtime.gopark(0x1408e92408182?, 0x0?, 0x0?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000061738 sp=0xc000061718 pc=0x473bce
runtime.gcBgMarkWorker(0xc00031ea10)
        /usr/local/go/src/runtime/mgc.go:1412 +0xe9 fp=0xc0000617c8 sp=0xc000061738 pc=0x420ee9
runtime.gcBgMarkStartWorkers.gowrap1()
        /usr/local/go/src/runtime/mgc.go:1328 +0x25 fp=0xc0000617e0 sp=0xc0000617c8 pc=0x420dc5
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000617e8 sp=0xc0000617e0 pc=0x47b701
created by runtime.gcBgMarkStartWorkers in goroutine 13
        /usr/local/go/src/runtime/mgc.go:1328 +0x105

goroutine 18 gp=0xc00016b180 m=nil [IO wait]:
runtime.gopark(0x2427e380e657f18b?, 0x5d2794367937fb08?, 0x80?, 0xb1?, 0xb?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc0000dd700 sp=0xc0000dd6e0 pc=0x473bce
runtime.netpollblock(0x4921b8?, 0x40bbc6?, 0x0?)
        /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc0000dd738 sp=0xc0000dd700 pc=0x438437
internal/poll.runtime_pollWait(0x7f6b12c8e680, 0x72)
        /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc0000dd758 sp=0xc0000dd738 pc=0x472ec5
internal/poll.(*pollDesc).wait(0xc0000ab080?, 0xc00010d000?, 0x0)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc0000dd780 sp=0xc0000dd758 pc=0x4ef267
internal/poll.(*pollDesc).waitRead(...)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0000ab080, {0xc00010d000, 0x1000, 0x1000})
        /usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc0000dd818 sp=0xc0000dd780 pc=0x4f055a
net.(*netFD).Read(0xc0000ab080, {0xc00010d000?, 0x4f2865?, 0xc0000ab080?})
        /usr/local/go/src/net/fd_posix.go:55 +0x25 fp=0xc0000dd860 sp=0xc0000dd818 pc=0x5648e5
net.(*conn).Read(0xc00004a240, {0xc00010d000?, 0xc0000dda78?, 0x656c84?})
        /usr/local/go/src/net/net.go:189 +0x45 fp=0xc0000dd8a8 sp=0xc0000dd860 pc=0x573045
net.(*TCPConn).Read(0x11b?, {0xc00010d000?, 0x18?, 0x120?})
        <autogenerated>:1 +0x25 fp=0xc0000dd8d8 sp=0xc0000dd8a8 pc=0x587d25
crypto/tls.(*atLeastReader).Read(0xc0003d6fd8, {0xc00010d000?, 0x0?, 0xc0003d6fd8?})
        /usr/local/go/src/crypto/tls/conn.go:809 +0x3b fp=0xc0000dd920 sp=0xc0000dd8d8 pc=0x65a4fb
bytes.(*Buffer).ReadFrom(0xc0001d82b8, {0xc134e0, 0xc0003d6fd8})
        /usr/local/go/src/bytes/buffer.go:211 +0x98 fp=0xc0000dd978 sp=0xc0000dd920 pc=0x51ce58
crypto/tls.(*Conn).readFromUntil(0xc0001d8008, {0xc11d00, 0xc00004a240}, 0xc0000dda10?)
        /usr/local/go/src/crypto/tls/conn.go:831 +0xde fp=0xc0000dd9b0 sp=0xc0000dd978 pc=0x65a6de
crypto/tls.(*Conn).readRecordOrCCS(0xc0001d8008, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:629 +0x3cf fp=0xc0000ddc28 sp=0xc0000dd9b0 pc=0x6577ef
crypto/tls.(*Conn).readRecord(...)
        /usr/local/go/src/crypto/tls/conn.go:591
crypto/tls.(*Conn).Read(0xc0001d8008, {0xc00046b000, 0x1000, 0x11?})
        /usr/local/go/src/crypto/tls/conn.go:1385 +0x150 fp=0xc0000ddc98 sp=0xc0000ddc28 pc=0x65e050
bufio.(*Reader).Read(0xc0004688a0, {0xc0002e7700, 0x9, 0x7425ee?})
        /usr/local/go/src/bufio/bufio.go:241 +0x197 fp=0xc0000ddcd0 sp=0xc0000ddc98 pc=0x6a2377
io.ReadAtLeast({0xc120a0, 0xc0004688a0}, {0xc0002e7700, 0x9, 0x9}, 0x9)
        /usr/local/go/src/io/io.go:335 +0x90 fp=0xc0000ddd18 sp=0xc0000ddcd0 pc=0x4e6d70
io.ReadFull(...)
        /usr/local/go/src/io/io.go:354
net/http.http2readFrameHeader({0xc0002e7700, 0x9, 0x6fede8?}, {0xc120a0?, 0xc0004688a0?})
        /usr/local/go/src/net/http/h2_bundle.go:1642 +0x65 fp=0xc0000ddd68 sp=0xc0000ddd18 pc=0x6d6e05
net/http.(*http2Framer).ReadFrame(0xc0002e76c0)
        /usr/local/go/src/net/http/h2_bundle.go:1909 +0x85 fp=0xc0000dde10 sp=0xc0000ddd68 pc=0x6d7545
net/http.(*http2clientConnReadLoop).run(0xc0000ddfa8)
        /usr/local/go/src/net/http/h2_bundle.go:9496 +0xda fp=0xc0000ddf60 sp=0xc0000dde10 pc=0x6fa7da
net/http.(*http2ClientConn).readLoop(0xc000002000)
        /usr/local/go/src/net/http/h2_bundle.go:9392 +0x7c fp=0xc0000ddfc8 sp=0xc0000ddf60 pc=0x6f9dbc
net/http.(*http2Transport).newClientConn.gowrap1()
        /usr/local/go/src/net/http/h2_bundle.go:8006 +0x25 fp=0xc0000ddfe0 sp=0xc0000ddfc8 pc=0x6f2b45
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000ddfe8 sp=0xc0000ddfe0 pc=0x47b701
created by net/http.(*http2Transport).newClientConn in goroutine 16
        /usr/local/go/src/net/http/h2_bundle.go:8006 +0xd1b

goroutine 50 gp=0xc000427c00 m=3 mp=0xc000062e08 [syscall]:
syscall.Syscall6(0x101, 0xffffffffffffff9c, 0xc00003a978, 0x80001, 0x0, 0x0, 0x0)
        /usr/local/go/src/syscall/syscall_linux.go:95 +0x39 fp=0xc00006fc20 sp=0xc00006fbc0 pc=0x493f39
syscall.openat(0xffffffffffffff9c, {0xc00003a528?, 0x30?}, 0x80001, 0x0)
        /usr/local/go/src/syscall/zsyscall_linux_amd64.go:98 +0x90 fp=0xc00006fc88 sp=0xc00006fc20 pc=0x491510
syscall.Open(...)
        /usr/local/go/src/syscall/syscall_linux.go:284
os.open({0xc00003a528?, 0x414e3e?}, 0x7f6b12c69d58?, 0x8470e?)
        /usr/local/go/src/os/file_open_unix.go:15 +0x2b fp=0xc00006fcc0 sp=0xc00006fc88 pc=0x4fbf4b
os.openFileNolog.func1()
        /usr/local/go/src/os/file_unix.go:279 +0x92 fp=0xc00006fd08 sp=0xc00006fcc0 pc=0x4fcf32
os.ignoringEINTR(...)
        /usr/local/go/src/os/file_posix.go:251
os.openFileNolog({0xc00003a528, 0x17}, 0x1, 0x184501?)
        /usr/local/go/src/os/file_unix.go:278 +0xae fp=0xc00006fda0 sp=0xc00006fd08 pc=0x4fcd4e
os.OpenFile({0xc00003a528, 0x17}, 0x1, 0x0)
        /usr/local/go/src/os/file.go:385 +0x3e fp=0xc00006fdd0 sp=0xc00006fda0 pc=0x4fb5de
github.com/devgianlu/go-librespot/output.newPipeOutput(0xc0004b5080)
        /root/go-librespot/output/driver-pipe.go:73 +0x1cd fp=0xc00006fe28 sp=0xc00006fdd0 pc=0x8610cd
github.com/devgianlu/go-librespot/output.NewOutput(0x20?)
        /root/go-librespot/output/output.go:127 +0x3f fp=0xc00006fe70 sp=0xc00006fe28 pc=0x862b3f
github.com/devgianlu/go-librespot/player.NewPlayer.func1({0xc12920, 0xc0001f5e00}, 0x3f800000)
        /root/go-librespot/player/player.go:140 +0x198 fp=0xc00006fe98 sp=0xc00006fe70 pc=0x88ead8
github.com/devgianlu/go-librespot/player.(*Player).manageLoop(0xc0003a77a0)
        /root/go-librespot/player/player.go:194 +0x2de fp=0xc00006ffc8 sp=0xc00006fe98 pc=0x88edfe
github.com/devgianlu/go-librespot/player.NewPlayer.gowrap1()
        /root/go-librespot/player/player.go:162 +0x25 fp=0xc00006ffe0 sp=0xc00006ffc8 pc=0x88e905
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00006ffe8 sp=0xc00006ffe0 pc=0x47b701
created by github.com/devgianlu/go-librespot/player.NewPlayer in goroutine 1
        /root/go-librespot/player/player.go:162 +0x19a

goroutine 51 gp=0xc000427dc0 m=nil [chan receive]:
runtime.gopark(0x7f6b12c94cb8?, 0xc000084ae0?, 0x70?, 0x0?, 0xc000042db8?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000042d68 sp=0xc000042d48 pc=0x473bce
runtime.chanrecv(0xc00039b6c0, 0xc000042fc0, 0x1)
        /usr/local/go/src/runtime/chan.go:639 +0x41c fp=0xc000042de0 sp=0xc000042d68 pc=0x40e7bc
runtime.chanrecv1(0xac2640?, 0xc000042f00?)
        /usr/local/go/src/runtime/chan.go:489 +0x12 fp=0xc000042e08 sp=0xc000042de0 pc=0x40e372
github.com/devgianlu/go-librespot/player.(*Player).SetPrimaryStream(...)
        /root/go-librespot/player/player.go:394
main.(*AppPlayer).loadCurrentTrack(0xc0000ab480, {0xc19038, 0x10c0c20}, 0x1, 0x1)
        /root/go-librespot/cmd/daemon/controls.go:245 +0x7d6 fp=0xc000043088 sp=0xc000042e08 pc=0x9a8df6
main.(*AppPlayer).handlePlayerCommand(_, {_, _}, {0x70d9d99b, {0xc000272180, 0x28}, {{0xc00035f4a0, 0x8}, {0x0, 0x0}, ...}})
        /root/go-librespot/cmd/daemon/player.go:237 +0x1945 fp=0xc000043280 sp=0xc000043088 pc=0x9b3225
main.(*AppPlayer).handleDealerRequest(_, {_, _}, {0xc00031f880, {0xc00003d590, 0x24}, {0x70d9d99b, {0xc000272180, 0x28}, {{0xc00035f4a0, ...}, ...}}})
        /root/go-librespot/cmd/daemon/player.go:354 +0x150 fp=0xc0000434d0 sp=0xc000043280 pc=0x9b3770
main.(*AppPlayer).Run(0xc0000ab480, {0xc19038, 0x10c0c20}, 0xc00039abd0)
        /root/go-librespot/cmd/daemon/player.go:582 +0x690 fp=0xc000043fb0 sp=0xc0000434d0 pc=0x9b5c50
main.(*App).withAppPlayer.gowrap1()
        /root/go-librespot/cmd/daemon/main.go:254 +0x2c fp=0xc000043fe0 sp=0xc000043fb0 pc=0x9aee6c
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000043fe8 sp=0xc000043fe0 pc=0x47b701
created by main.(*App).withAppPlayer in goroutine 1
        /root/go-librespot/cmd/daemon/main.go:254 +0x34b

goroutine 33 gp=0xc00016a700 m=nil [IO wait]:
runtime.gopark(0xb1da521ef27e388b?, 0xb702da7498dd1c99?, 0x0?, 0xa7?, 0xb?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00006e700 sp=0xc00006e6e0 pc=0x473bce
runtime.netpollblock(0x4921b8?, 0x40bbc6?, 0x0?)
        /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc00006e738 sp=0xc00006e700 pc=0x438437
internal/poll.runtime_pollWait(0x7f6b12c8e108, 0x72)
        /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc00006e758 sp=0xc00006e738 pc=0x472ec5
internal/poll.(*pollDesc).wait(0xc0001c8200?, 0xc0001cc000?, 0x0)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc00006e780 sp=0xc00006e758 pc=0x4ef267
internal/poll.(*pollDesc).waitRead(...)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0001c8200, {0xc0001cc000, 0x1000, 0x1000})
        /usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc00006e818 sp=0xc00006e780 pc=0x4f055a
net.(*netFD).Read(0xc0001c8200, {0xc0001cc000?, 0x4f2865?, 0xc0001c8200?})
        /usr/local/go/src/net/fd_posix.go:55 +0x25 fp=0xc00006e860 sp=0xc00006e818 pc=0x5648e5
net.(*conn).Read(0xc00004a368, {0xc0001cc000?, 0xc00006ea78?, 0x656c84?})
        /usr/local/go/src/net/net.go:189 +0x45 fp=0xc00006e8a8 sp=0xc00006e860 pc=0x573045
net.(*TCPConn).Read(0x11b?, {0xc0001cc000?, 0x18?, 0x120?})
        <autogenerated>:1 +0x25 fp=0xc00006e8d8 sp=0xc00006e8a8 pc=0x587d25
crypto/tls.(*atLeastReader).Read(0xc0003d7248, {0xc0001cc000?, 0x0?, 0xc0003d7248?})
        /usr/local/go/src/crypto/tls/conn.go:809 +0x3b fp=0xc00006e920 sp=0xc00006e8d8 pc=0x65a4fb
bytes.(*Buffer).ReadFrom(0xc0001d9b38, {0xc134e0, 0xc0003d7248})
        /usr/local/go/src/bytes/buffer.go:211 +0x98 fp=0xc00006e978 sp=0xc00006e920 pc=0x51ce58
crypto/tls.(*Conn).readFromUntil(0xc0001d9888, {0xc11d00, 0xc00004a368}, 0xc00006ea10?)
        /usr/local/go/src/crypto/tls/conn.go:831 +0xde fp=0xc00006e9b0 sp=0xc00006e978 pc=0x65a6de
crypto/tls.(*Conn).readRecordOrCCS(0xc0001d9888, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:629 +0x3cf fp=0xc00006ec28 sp=0xc00006e9b0 pc=0x6577ef
crypto/tls.(*Conn).readRecord(...)
        /usr/local/go/src/crypto/tls/conn.go:591
crypto/tls.(*Conn).Read(0xc0001d9888, {0xc00027a000, 0x1000, 0x11?})
        /usr/local/go/src/crypto/tls/conn.go:1385 +0x150 fp=0xc00006ec98 sp=0xc00006ec28 pc=0x65e050
bufio.(*Reader).Read(0xc000256360, {0xc0002e77e0, 0x9, 0x7425ee?})
        /usr/local/go/src/bufio/bufio.go:241 +0x197 fp=0xc00006ecd0 sp=0xc00006ec98 pc=0x6a2377
io.ReadAtLeast({0xc120a0, 0xc000256360}, {0xc0002e77e0, 0x9, 0x9}, 0x9)
        /usr/local/go/src/io/io.go:335 +0x90 fp=0xc00006ed18 sp=0xc00006ecd0 pc=0x4e6d70
io.ReadFull(...)
        /usr/local/go/src/io/io.go:354
net/http.http2readFrameHeader({0xc0002e77e0, 0x9, 0x6fede8?}, {0xc120a0?, 0xc000256360?})
        /usr/local/go/src/net/http/h2_bundle.go:1642 +0x65 fp=0xc00006ed68 sp=0xc00006ed18 pc=0x6d6e05
net/http.(*http2Framer).ReadFrame(0xc0002e77a0)
        /usr/local/go/src/net/http/h2_bundle.go:1909 +0x85 fp=0xc00006ee10 sp=0xc00006ed68 pc=0x6d7545
net/http.(*http2clientConnReadLoop).run(0xc00006efa8)
        /usr/local/go/src/net/http/h2_bundle.go:9496 +0xda fp=0xc00006ef60 sp=0xc00006ee10 pc=0x6fa7da
net/http.(*http2ClientConn).readLoop(0xc0000f2d80)
        /usr/local/go/src/net/http/h2_bundle.go:9392 +0x7c fp=0xc00006efc8 sp=0xc00006ef60 pc=0x6f9dbc
net/http.(*http2Transport).newClientConn.gowrap1()
        /usr/local/go/src/net/http/h2_bundle.go:8006 +0x25 fp=0xc00006efe0 sp=0xc00006efc8 pc=0x6f2b45
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00006efe8 sp=0xc00006efe0 pc=0x47b701
created by net/http.(*http2Transport).newClientConn in goroutine 32
        /usr/local/go/src/net/http/h2_bundle.go:8006 +0xd1b

goroutine 52 gp=0xc00016b500 m=nil [chan receive]:
runtime.gopark(0x0?, 0xc000062e08?, 0x80?, 0xb1?, 0x0?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000070e98 sp=0xc000070e78 pc=0x473bce
runtime.chanrecv(0xc00039b180, 0xc000070f98, 0x1)
        /usr/local/go/src/runtime/chan.go:639 +0x41c fp=0xc000070f10 sp=0xc000070e98 pc=0x40e7bc
runtime.chanrecv2(0x0?, 0x0?)
        /usr/local/go/src/runtime/chan.go:494 +0x12 fp=0xc000070f38 sp=0xc000070f10 pc=0x40e392
main.(*App).withAppPlayer.func1()
        /root/go-librespot/cmd/daemon/main.go:264 +0x6c fp=0xc000070fe0 sp=0xc000070f38 pc=0x9aedac
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000070fe8 sp=0xc000070fe0 pc=0x47b701
created by main.(*App).withAppPlayer in goroutine 1
        /root/go-librespot/cmd/daemon/main.go:261 +0x3eb

goroutine 26 gp=0xc00016b880 m=nil [IO wait]:
runtime.gopark(0xc0002be1e0?, 0xc000075d78?, 0x60?, 0xcb?, 0x475949?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000075d38 sp=0xc000075d18 pc=0x473bce
runtime.netpollblock(0xc11be0?, 0x10593e0?, 0x0?)
        /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc000075d70 sp=0xc000075d38 pc=0x438437
internal/poll.runtime_pollWait(0x7f6b12c8e450, 0x72)
        /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000075d90 sp=0xc000075d70 pc=0x472ec5
internal/poll.(*pollDesc).wait(0xc0000ab380?, 0x50?, 0x0)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc000075db8 sp=0xc000075d90 pc=0x4ef267
internal/poll.(*pollDesc).waitRead(...)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0xc0000ab380, 0xc0002be1e0)
        /usr/local/go/src/internal/poll/fd_unix.go:717 +0x125 fp=0xc000075e18 sp=0xc000075db8 pc=0x4f52a5
net.(*rawConn).Read(0xc00004a200, 0x0?)
        /usr/local/go/src/net/rawconn.go:44 +0x36 fp=0xc000075e50 sp=0xc000075e18 pc=0x5772b6
golang.org/x/net/internal/socket.(*Conn).recvMsg(0xc0001f4540, 0xc0002a6cc0, 0x0)
        /root/go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/rawconn_msg.go:27 +0x144 fp=0xc000075ea8 sp=0xc000075e50 pc=0x8bb864
golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
        /root/go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/socket.go:247
golang.org/x/net/ipv4.(*payloadHandler).ReadFrom(0xc0002bfa50, {0xc000480000, 0x10000, 0x10000})
        /root/go/pkg/mod/golang.org/x/net@v0.26.0/ipv4/payload_cmsg.go:31 +0x4ae fp=0xc000075f48 sp=0xc000075ea8 pc=0x8bf2ee
github.com/grandcat/zeroconf.(*Server).recv4(0xc000468a20, 0xc0002bfa40)
        /root/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:254 +0xca fp=0xc000075fc0 sp=0xc000075f48 pc=0x913d6a
github.com/grandcat/zeroconf.(*Server).mainloop.gowrap1()
        /root/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:188 +0x25 fp=0xc000075fe0 sp=0xc000075fc0 pc=0x913a05
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000075fe8 sp=0xc000075fe0 pc=0x47b701
created by github.com/grandcat/zeroconf.(*Server).mainloop in goroutine 20
        /root/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:188 +0x78

goroutine 27 gp=0xc00016ba40 m=nil [IO wait]:
runtime.gopark(0xc0002be230?, 0xc000074d28?, 0x60?, 0xd2?, 0x7f6b12f19108?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000074ce8 sp=0xc000074cc8 pc=0x473bce
runtime.netpollblock(0xc11be0?, 0x10593e0?, 0x0?)
        /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc000074d20 sp=0xc000074ce8 pc=0x438437
internal/poll.runtime_pollWait(0x7f6b12c8e338, 0x72)
        /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000074d40 sp=0xc000074d20 pc=0x472ec5
internal/poll.(*pollDesc).wait(0xc0000ab400?, 0x50?, 0x0)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc000074d68 sp=0xc000074d40 pc=0x4ef267
internal/poll.(*pollDesc).waitRead(...)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0xc0000ab400, 0xc0002be230)
        /usr/local/go/src/internal/poll/fd_unix.go:717 +0x125 fp=0xc000074dc8 sp=0xc000074d68 pc=0x4f52a5
net.(*rawConn).Read(0xc00004a210, 0x0?)
        /usr/local/go/src/net/rawconn.go:44 +0x36 fp=0xc000074e00 sp=0xc000074dc8 pc=0x5772b6
golang.org/x/net/internal/socket.(*Conn).recvMsg(0xc0001f4560, 0xc0002a6d20, 0x0)
        /root/go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/rawconn_msg.go:27 +0x144 fp=0xc000074e58 sp=0xc000074e00 pc=0x8bb864
golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
        /root/go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/socket.go:247
golang.org/x/net/ipv6.(*payloadHandler).ReadFrom(0xc0002bfaa0, {0xc0003be000, 0x10000, 0x10000})
        /root/go/pkg/mod/golang.org/x/net@v0.26.0/ipv6/payload_cmsg.go:31 +0x38d fp=0xc000074f48 sp=0xc000074e58 pc=0x8c268d
github.com/grandcat/zeroconf.(*Server).recv6(0xc000468a20, 0xc0002bfa90)
        /root/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:282 +0xca fp=0xc000074fc0 sp=0xc000074f48 pc=0x913f2a
github.com/grandcat/zeroconf.(*Server).mainloop.gowrap2()
        /root/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:191 +0x25 fp=0xc000074fe0 sp=0xc000074fc0 pc=0x9139a5
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000074fe8 sp=0xc000074fe0 pc=0x47b701
created by github.com/grandcat/zeroconf.(*Server).mainloop in goroutine 20
        /root/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:191 +0xd9

goroutine 53 gp=0xc000288000 m=nil [chan receive]:
runtime.gopark(0xc000249210?, 0xc00045f980?, 0x8?, 0x92?, 0xc000249200?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00005ae70 sp=0xc00005ae50 pc=0x473bce
runtime.chanrecv(0xc0000903f0, 0xc00005afb8, 0x1)
        /usr/local/go/src/runtime/chan.go:639 +0x41c fp=0xc00005aee8 sp=0xc00005ae70 pc=0x40e7bc
runtime.chanrecv2(0xc00005af38?, 0x40ed1e?)
        /usr/local/go/src/runtime/chan.go:494 +0x12 fp=0xc00005af10 sp=0xc00005aee8 pc=0x40e392
main.(*App).withAppPlayer.func2()
        /root/go-librespot/cmd/daemon/main.go:280 +0x85 fp=0xc00005afe0 sp=0xc00005af10 pc=0x9aea25
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00005afe8 sp=0xc00005afe0 pc=0x47b701
created by main.(*App).withAppPlayer in goroutine 1
        /root/go-librespot/cmd/daemon/main.go:277 +0x4ab

goroutine 54 gp=0xc0002881c0 m=nil [IO wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00033fbe0 sp=0xc00033fbc0 pc=0x473bce
runtime.netpollblock(0x10?, 0x40bbc6?, 0x0?)
        /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc00033fc18 sp=0xc00033fbe0 pc=0x438437
internal/poll.runtime_pollWait(0x7f6b12c8e568, 0x72)
        /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc00033fc38 sp=0xc00033fc18 pc=0x472ec5
internal/poll.(*pollDesc).wait(0xc0000aaa00?, 0x10?, 0x0)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc00033fc60 sp=0xc00033fc38 pc=0x4ef267
internal/poll.(*pollDesc).waitRead(...)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc0000aaa00)
        /usr/local/go/src/internal/poll/fd_unix.go:620 +0x295 fp=0xc00033fd08 sp=0xc00033fc60 pc=0x4f4635
net.(*netFD).accept(0xc0000aaa00)
        /usr/local/go/src/net/fd_unix.go:172 +0x29 fp=0xc00033fdc0 sp=0xc00033fd08 pc=0x5668a9
net.(*TCPListener).accept(0xc000278080)
        /usr/local/go/src/net/tcpsock_posix.go:159 +0x1e fp=0xc00033fe10 sp=0xc00033fdc0 pc=0x57c1be
net.(*TCPListener).Accept(0xc000278080)
        /usr/local/go/src/net/tcpsock.go:372 +0x30 fp=0xc00033fe40 sp=0xc00033fe10 pc=0x57b390
net/http.(*onceCloseListener).Accept(0xc19000?)
        <autogenerated>:1 +0x24 fp=0xc00033fe58 sp=0xc00033fe40 pc=0x743764
net/http.(*Server).Serve(0xc00047f950, {0xc18010, 0xc000278080})
        /usr/local/go/src/net/http/server.go:3330 +0x30c fp=0xc00033ff88 sp=0xc00033fe58 pc=0x71bc6c
net/http.Serve(...)
        /usr/local/go/src/net/http/server.go:2858
github.com/devgianlu/go-librespot/zeroconf.(*Zeroconf).Serve.func2()
        /root/go-librespot/zeroconf/zeroconf.go:267 +0x85 fp=0xc00033ffe0 sp=0xc00033ff88 pc=0x918d85
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00033ffe8 sp=0xc00033ffe0 pc=0x47b701
created by github.com/devgianlu/go-librespot/zeroconf.(*Zeroconf).Serve in goroutine 1
        /root/go-librespot/zeroconf/zeroconf.go:267 +0x156

goroutine 67 gp=0xc000288540 m=nil [select]:
runtime.gopark(0xc000341f98?, 0x2?, 0x50?, 0x73?, 0xc000341f6c?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000341e10 sp=0xc000341df0 pc=0x473bce
runtime.selectgo(0xc000341f98, 0xc000341f68, 0x412f73747265632f?, 0x0, 0x6369746e65687475?, 0x1)
        /usr/local/go/src/runtime/select.go:335 +0x7a5 fp=0xc000341f38 sp=0xc000341e10 pc=0x451885
github.com/devgianlu/go-librespot/ap.(*Accesspoint).pongAckTicker(0xc00047e5a0)
        /root/go-librespot/ap/ap.go:355 +0x7d fp=0xc000341fc8 sp=0xc000341f38 pc=0x84ea5d
github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1.gowrap2()
        /root/go-librespot/ap/ap.go:264 +0x25 fp=0xc000341fe0 sp=0xc000341fc8 pc=0x84e125
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000341fe8 sp=0xc000341fe0 pc=0x47b701
created by github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1 in goroutine 51
        /root/go-librespot/ap/ap.go:264 +0xff

goroutine 66 gp=0xc000288700 m=nil [IO wait]:
runtime.gopark(0x20?, 0xc000343b30?, 0x8b?, 0x98?, 0xb?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000343ad0 sp=0xc000343ab0 pc=0x473bce
runtime.netpollblock(0x4921b8?, 0x40bbc6?, 0x0?)
        /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc000343b08 sp=0xc000343ad0 pc=0x438437
internal/poll.runtime_pollWait(0x7f6b12c8dff0, 0x72)
        /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000343b28 sp=0xc000343b08 pc=0x472ec5
internal/poll.(*pollDesc).wait(0xc0001c8980?, 0xc0003e59fc?, 0x0)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc000343b50 sp=0xc000343b28 pc=0x4ef267
internal/poll.(*pollDesc).waitRead(...)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0001c8980, {0xc0003e59fc, 0x3, 0x3})
        /usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc000343be8 sp=0xc000343b50 pc=0x4f055a
net.(*netFD).Read(0xc0001c8980, {0xc0003e59fc?, 0x7f6b12f19108?, 0xc0003de3c0?})
        /usr/local/go/src/net/fd_posix.go:55 +0x25 fp=0xc000343c30 sp=0xc000343be8 pc=0x5648e5
net.(*conn).Read(0xc00004a428, {0xc0003e59fc?, 0x84acf9?, 0x10a0e40?})
        /usr/local/go/src/net/net.go:189 +0x45 fp=0xc000343c78 sp=0xc000343c30 pc=0x573045
net.(*TCPConn).Read(0x0?, {0xc0003e59fc?, 0xc000343ce0?, 0x475949?})
        <autogenerated>:1 +0x25 fp=0xc000343ca8 sp=0xc000343c78 pc=0x587d25
io.ReadAtLeast({0xc11d00, 0xc00004a428}, {0xc0003e59fc, 0x3, 0x3}, 0x3)
        /usr/local/go/src/io/io.go:335 +0x90 fp=0xc000343cf0 sp=0xc000343ca8 pc=0x4e6d70
io.ReadFull(...)
        /usr/local/go/src/io/io.go:354
github.com/devgianlu/go-librespot/ap.(*shannonConn).receivePacket(0xc0002574a0, {0xc19038, 0x10c0c20})
        /root/go-librespot/ap/shannon.go:124 +0x398 fp=0xc000343e38 sp=0xc000343cf0 pc=0x851658
github.com/devgianlu/go-librespot/ap.(*Accesspoint).recvLoop(0xc00047e5a0)
        /root/go-librespot/ap/ap.go:276 +0x6c fp=0xc000343fc8 sp=0xc000343e38 pc=0x84e22c
github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1.gowrap1()
        /root/go-librespot/ap/ap.go:260 +0x25 fp=0xc000343fe0 sp=0xc000343fc8 pc=0x84e185
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000343fe8 sp=0xc000343fe0 pc=0x47b701
created by github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1 in goroutine 51
        /root/go-librespot/ap/ap.go:260 +0x78

goroutine 65 gp=0xc0002888c0 m=nil [select]:
runtime.gopark(0xc000340f38?, 0x5?, 0x48?, 0xf?, 0xc000340ee6?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000340d80 sp=0xc000340d60 pc=0x473bce
runtime.selectgo(0xc000340f38, 0xc000340edc, 0xc000340f48?, 0x0, 0xc00033a440?, 0x1)
        /usr/local/go/src/runtime/select.go:335 +0x7a5 fp=0xc000340ea8 sp=0xc000340d80 pc=0x451885
nhooyr.io/websocket.(*Conn).timeoutLoop(0xc0003ba340)
        /root/go/pkg/mod/nhooyr.io/websocket@v1.8.7/conn_notjs.go:153 +0x156 fp=0xc000340fc8 sp=0xc000340ea8 pc=0x837cd6
nhooyr.io/websocket.newConn.gowrap1()
        /root/go/pkg/mod/nhooyr.io/websocket@v1.8.7/conn_notjs.go:114 +0x25 fp=0xc000340fe0 sp=0xc000340fc8 pc=0x837845
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000340fe8 sp=0xc000340fe0 pc=0x47b701
created by nhooyr.io/websocket.newConn in goroutine 51
        /root/go/pkg/mod/nhooyr.io/websocket@v1.8.7/conn_notjs.go:114 +0x4a6

goroutine 68 gp=0xc000288a80 m=nil [chan receive]:
runtime.gopark(0xc0001db8c8?, 0xc0003d5860?, 0x70?, 0x0?, 0xc00042fb78?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc0001bbb28 sp=0xc0001bbb08 pc=0x473bce
runtime.chanrecv(0xc00031f880, 0xc00042fbff, 0x1)
        /usr/local/go/src/runtime/chan.go:639 +0x41c fp=0xc0001bbba0 sp=0xc0001bbb28 pc=0x40e7bc
runtime.chanrecv1(0xc0003f0000?, 0x0?)
        /usr/local/go/src/runtime/chan.go:489 +0x12 fp=0xc0001bbbc8 sp=0xc0001bbba0 pc=0x40e372
github.com/devgianlu/go-librespot/dealer.(*Dealer).handleRequest(0xc0003e61c0, 0xc0002aba70)
        /root/go-librespot/dealer/recv.go:237 +0x265 fp=0xc0001bbe98 sp=0xc0001bbbc8 pc=0x8aab85
github.com/devgianlu/go-librespot/dealer.(*Dealer).recvLoop(0xc0003e61c0)
        /root/go-librespot/dealer/dealer.go:213 +0x388 fp=0xc0001bbfc8 sp=0xc0001bbe98 pc=0x8a9368
github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1.gowrap1()
        /root/go-librespot/dealer/dealer.go:125 +0x25 fp=0xc0001bbfe0 sp=0xc0001bbfc8 pc=0x8a8bc5
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0001bbfe8 sp=0xc0001bbfe0 pc=0x47b701
created by github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1 in goroutine 51
        /root/go-librespot/dealer/dealer.go:125 +0x78

goroutine 69 gp=0xc000289500 m=nil [select]:
runtime.gopark(0xc00034ef98?, 0x2?, 0xa0?, 0xf?, 0xc00034ef44?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00034ede0 sp=0xc00034edc0 pc=0x473bce
runtime.selectgo(0xc00034ef98, 0xc00034ef40, 0xc000184c40?, 0x0, 0xc0003e5420?, 0x1)
        /usr/local/go/src/runtime/select.go:335 +0x7a5 fp=0xc00034ef08 sp=0xc00034ede0 pc=0x451885
github.com/devgianlu/go-librespot/dealer.(*Dealer).pingTicker(0xc0003e61c0)
        /root/go-librespot/dealer/dealer.go:138 +0x8f fp=0xc00034efc8 sp=0xc00034ef08 pc=0x8a8c8f
github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1.gowrap2()
        /root/go-librespot/dealer/dealer.go:129 +0x25 fp=0xc00034efe0 sp=0xc00034efc8 pc=0x8a8b65
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00034efe8 sp=0xc00034efe0 pc=0x47b701
created by github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1 in goroutine 51
        /root/go-librespot/dealer/dealer.go:129 +0xf6

goroutine 95 gp=0xc0004268c0 m=nil [IO wait]:
runtime.gopark(0x2498a76136b21974?, 0xa63900fd2190ad18?, 0x74?, 0x19?, 0xb?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000342730 sp=0xc000342710 pc=0x473bce
runtime.netpollblock(0x4921b8?, 0x40bbc6?, 0x0?)
        /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc000342768 sp=0xc000342730 pc=0x438437
internal/poll.runtime_pollWait(0x7f6b12c8db90, 0x72)
        /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000342788 sp=0xc000342768 pc=0x472ec5
internal/poll.(*pollDesc).wait(0xc0004b7680?, 0xc0002c0000?, 0x0)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc0003427b0 sp=0xc000342788 pc=0x4ef267
internal/poll.(*pollDesc).waitRead(...)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0004b7680, {0xc0002c0000, 0xa000, 0xa000})
        /usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc000342848 sp=0xc0003427b0 pc=0x4f055a
net.(*netFD).Read(0xc0004b7680, {0xc0002c0000?, 0x1049400?, 0xc0003429d0?})
        /usr/local/go/src/net/fd_posix.go:55 +0x25 fp=0xc000342890 sp=0xc000342848 pc=0x5648e5
net.(*conn).Read(0xc00004a410, {0xc0002c0000?, 0x0?, 0x6a29b3?})
        /usr/local/go/src/net/net.go:189 +0x45 fp=0xc0003428d8 sp=0xc000342890 pc=0x573045
net.(*TCPConn).Read(0xdaf?, {0xc0002c0000?, 0x18?, 0x7f6b12cc2218?})
        <autogenerated>:1 +0x25 fp=0xc000342908 sp=0xc0003428d8 pc=0x587d25
crypto/tls.(*atLeastReader).Read(0xc0002fba58, {0xc0002c0000?, 0x0?, 0xc0002fba58?})
        /usr/local/go/src/crypto/tls/conn.go:809 +0x3b fp=0xc000342950 sp=0xc000342908 pc=0x65a4fb
bytes.(*Buffer).ReadFrom(0xc0004adeb8, {0xc134e0, 0xc0002fba58})
        /usr/local/go/src/bytes/buffer.go:211 +0x98 fp=0xc0003429a8 sp=0xc000342950 pc=0x51ce58
crypto/tls.(*Conn).readFromUntil(0xc0004adc08, {0xc11d00, 0xc00004a410}, 0xc000342a40?)
        /usr/local/go/src/crypto/tls/conn.go:831 +0xde fp=0xc0003429e0 sp=0xc0003429a8 pc=0x65a6de
crypto/tls.(*Conn).readRecordOrCCS(0xc0004adc08, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:629 +0x3cf fp=0xc000342c58 sp=0xc0003429e0 pc=0x6577ef
crypto/tls.(*Conn).readRecord(...)
        /usr/local/go/src/crypto/tls/conn.go:591
crypto/tls.(*Conn).Read(0xc0004adc08, {0xc0004c6000, 0x1000, 0x0?})
        /usr/local/go/src/crypto/tls/conn.go:1385 +0x150 fp=0xc000342cc8 sp=0xc000342c58 pc=0x65e050
net/http.(*persistConn).Read(0xc0003e3560, {0xc0004c6000?, 0x729065?, 0xa48020?})
        /usr/local/go/src/net/http/transport.go:2052 +0x4a fp=0xc000342d28 sp=0xc000342cc8 pc=0x73036a
bufio.(*Reader).fill(0xc0003d5680)
        /usr/local/go/src/bufio/bufio.go:110 +0x103 fp=0xc000342d60 sp=0xc000342d28 pc=0x6a1e43
bufio.(*Reader).Peek(0xc0003d5680, 0x1)
        /usr/local/go/src/bufio/bufio.go:148 +0x53 fp=0xc000342d80 sp=0xc000342d60 pc=0x6a1f73
net/http.(*persistConn).readLoop(0xc0003e3560)
        /usr/local/go/src/net/http/transport.go:2205 +0x185 fp=0xc000342fc8 sp=0xc000342d80 pc=0x730ea5
net/http.(*Transport).dialConn.gowrap2()
        /usr/local/go/src/net/http/transport.go:1874 +0x25 fp=0xc000342fe0 sp=0xc000342fc8 pc=0x72f8a5
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000342fe8 sp=0xc000342fe0 pc=0x47b701
created by net/http.(*Transport).dialConn in goroutine 87
        /usr/local/go/src/net/http/transport.go:1874 +0x154f

goroutine 96 gp=0xc000426a80 m=nil [select]:
runtime.gopark(0xc00033cf48?, 0x2?, 0x80?, 0x6a?, 0xc00033cef4?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00033cd90 sp=0xc00033cd70 pc=0x473bce
runtime.selectgo(0xc00033cf48, 0xc00033cef0, 0xc000465040?, 0x0, 0x0?, 0x1)
        /usr/local/go/src/runtime/select.go:335 +0x7a5 fp=0xc00033ceb8 sp=0xc00033cd90 pc=0x451885
net/http.(*persistConn).writeLoop(0xc0003e3560)
        /usr/local/go/src/net/http/transport.go:2519 +0xe7 fp=0xc00033cfc8 sp=0xc00033ceb8 pc=0x7328a7
net/http.(*Transport).dialConn.gowrap3()
        /usr/local/go/src/net/http/transport.go:1875 +0x25 fp=0xc00033cfe0 sp=0xc00033cfc8 pc=0x72f845
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00033cfe8 sp=0xc00033cfe0 pc=0x47b701
created by net/http.(*Transport).dialConn in goroutine 87
        /usr/local/go/src/net/http/transport.go:1875 +0x15a5

goroutine 79 gp=0xc000426c40 m=nil [IO wait]:
runtime.gopark(0x15296432aba6b9ca?, 0x64fc22f789c75cae?, 0x40?, 0x6c?, 0xb?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000235700 sp=0xc0002356e0 pc=0x473bce
runtime.netpollblock(0x4921b8?, 0x40bbc6?, 0x0?)
        /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc000235738 sp=0xc000235700 pc=0x438437
internal/poll.runtime_pollWait(0x7f6b12c8ded8, 0x72)
        /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000235758 sp=0xc000235738 pc=0x472ec5
internal/poll.(*pollDesc).wait(0xc00022c180?, 0xc000236000?, 0x0)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc000235780 sp=0xc000235758 pc=0x4ef267
internal/poll.(*pollDesc).waitRead(...)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00022c180, {0xc000236000, 0x1000, 0x1000})
        /usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc000235818 sp=0xc000235780 pc=0x4f055a
net.(*netFD).Read(0xc00022c180, {0xc000236000?, 0x4f2865?, 0xc00022c180?})
        /usr/local/go/src/net/fd_posix.go:55 +0x25 fp=0xc000235860 sp=0xc000235818 pc=0x5648e5
net.(*conn).Read(0xc00004a5d8, {0xc000236000?, 0xc000235a78?, 0x656c84?})
        /usr/local/go/src/net/net.go:189 +0x45 fp=0xc0002358a8 sp=0xc000235860 pc=0x573045
net.(*TCPConn).Read(0x24fb?, {0xc000236000?, 0x18?, 0x2500?})
        <autogenerated>:1 +0x25 fp=0xc0002358d8 sp=0xc0002358a8 pc=0x587d25
crypto/tls.(*atLeastReader).Read(0xc0002fad98, {0xc000236000?, 0x0?, 0xc0002fad98?})
        /usr/local/go/src/crypto/tls/conn.go:809 +0x3b fp=0xc000235920 sp=0xc0002358d8 pc=0x65a4fb
bytes.(*Buffer).ReadFrom(0xc000347438, {0xc134e0, 0xc0002fad98})
        /usr/local/go/src/bytes/buffer.go:211 +0x98 fp=0xc000235978 sp=0xc000235920 pc=0x51ce58
crypto/tls.(*Conn).readFromUntil(0xc000347188, {0xc11d00, 0xc00004a5d8}, 0xc000235a10?)
        /usr/local/go/src/crypto/tls/conn.go:831 +0xde fp=0xc0002359b0 sp=0xc000235978 pc=0x65a6de
crypto/tls.(*Conn).readRecordOrCCS(0xc000347188, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:629 +0x3cf fp=0xc000235c28 sp=0xc0002359b0 pc=0x6577ef
crypto/tls.(*Conn).readRecord(...)
        /usr/local/go/src/crypto/tls/conn.go:591
crypto/tls.(*Conn).Read(0xc000347188, {0xc00023a000, 0x1000, 0x11?})
        /usr/local/go/src/crypto/tls/conn.go:1385 +0x150 fp=0xc000235c98 sp=0xc000235c28 pc=0x65e050
bufio.(*Reader).Read(0xc000238900, {0xc0003e7000, 0x9, 0x7425ee?})
        /usr/local/go/src/bufio/bufio.go:241 +0x197 fp=0xc000235cd0 sp=0xc000235c98 pc=0x6a2377
io.ReadAtLeast({0xc120a0, 0xc000238900}, {0xc0003e7000, 0x9, 0x9}, 0x9)
        /usr/local/go/src/io/io.go:335 +0x90 fp=0xc000235d18 sp=0xc000235cd0 pc=0x4e6d70
io.ReadFull(...)
        /usr/local/go/src/io/io.go:354
net/http.http2readFrameHeader({0xc0003e7000, 0x9, 0x6fede8?}, {0xc120a0?, 0xc000238900?})
        /usr/local/go/src/net/http/h2_bundle.go:1642 +0x65 fp=0xc000235d68 sp=0xc000235d18 pc=0x6d6e05
net/http.(*http2Framer).ReadFrame(0xc0003e6fc0)
        /usr/local/go/src/net/http/h2_bundle.go:1909 +0x85 fp=0xc000235e10 sp=0xc000235d68 pc=0x6d7545
net/http.(*http2clientConnReadLoop).run(0xc000235fa8)
        /usr/local/go/src/net/http/h2_bundle.go:9496 +0xda fp=0xc000235f60 sp=0xc000235e10 pc=0x6fa7da
net/http.(*http2ClientConn).readLoop(0xc0001cbb00)
        /usr/local/go/src/net/http/h2_bundle.go:9392 +0x7c fp=0xc000235fc8 sp=0xc000235f60 pc=0x6f9dbc
net/http.(*http2Transport).newClientConn.gowrap1()
        /usr/local/go/src/net/http/h2_bundle.go:8006 +0x25 fp=0xc000235fe0 sp=0xc000235fc8 pc=0x6f2b45
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000235fe8 sp=0xc000235fe0 pc=0x47b701
created by net/http.(*http2Transport).newClientConn in goroutine 78
        /usr/local/go/src/net/http/h2_bundle.go:8006 +0xd1b

goroutine 139 gp=0xc0004fc380 m=nil [IO wait]:
runtime.gopark(0xf3166ad5dab2da20?, 0x96574319107ff84?, 0x20?, 0xda?, 0xb?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00022e730 sp=0xc00022e710 pc=0x473bce
runtime.netpollblock(0x4921b8?, 0x40bbc6?, 0x0?)
        /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc00022e768 sp=0xc00022e730 pc=0x438437
internal/poll.runtime_pollWait(0x7f6b12c8d960, 0x72)
        /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc00022e788 sp=0xc00022e768 pc=0x472ec5
internal/poll.(*pollDesc).wait(0xc0004b7980?, 0xc0004f0000?, 0x0)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc00022e7b0 sp=0xc00022e788 pc=0x4ef267
internal/poll.(*pollDesc).waitRead(...)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0004b7980, {0xc0004f0000, 0xa000, 0xa000})
        /usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc00022e848 sp=0xc00022e7b0 pc=0x4f055a
net.(*netFD).Read(0xc0004b7980, {0xc0004f0000?, 0x1049400?, 0xc00022e9d0?})
        /usr/local/go/src/net/fd_posix.go:55 +0x25 fp=0xc00022e890 sp=0xc00022e848 pc=0x5648e5
net.(*conn).Read(0xc00004a788, {0xc0004f0000?, 0xc0004ba0e0?, 0x6a29b3?})
        /usr/local/go/src/net/net.go:189 +0x45 fp=0xc00022e8d8 sp=0xc00022e890 pc=0x573045
net.(*TCPConn).Read(0xdb1?, {0xc0004f0000?, 0x18?, 0x7f6b12cc2218?})
        <autogenerated>:1 +0x25 fp=0xc00022e908 sp=0xc00022e8d8 pc=0x587d25
crypto/tls.(*atLeastReader).Read(0xc0002fb5f0, {0xc0004f0000?, 0x0?, 0xc0002fb5f0?})
        /usr/local/go/src/crypto/tls/conn.go:809 +0x3b fp=0xc00022e950 sp=0xc00022e908 pc=0x65a4fb
bytes.(*Buffer).ReadFrom(0xc0004ac9b8, {0xc134e0, 0xc0002fb5f0})
        /usr/local/go/src/bytes/buffer.go:211 +0x98 fp=0xc00022e9a8 sp=0xc00022e950 pc=0x51ce58
crypto/tls.(*Conn).readFromUntil(0xc0004ac708, {0xc11d00, 0xc00004a788}, 0xc00022ea40?)
        /usr/local/go/src/crypto/tls/conn.go:831 +0xde fp=0xc00022e9e0 sp=0xc00022e9a8 pc=0x65a6de
crypto/tls.(*Conn).readRecordOrCCS(0xc0004ac708, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:629 +0x3cf fp=0xc00022ec58 sp=0xc00022e9e0 pc=0x6577ef
crypto/tls.(*Conn).readRecord(...)
        /usr/local/go/src/crypto/tls/conn.go:591
crypto/tls.(*Conn).Read(0xc0004ac708, {0xc00023b000, 0x1000, 0x0?})
        /usr/local/go/src/crypto/tls/conn.go:1385 +0x150 fp=0xc00022ecc8 sp=0xc00022ec58 pc=0x65e050
net/http.(*persistConn).Read(0xc0003e3d40, {0xc00023b000?, 0x729065?, 0xa48020?})
        /usr/local/go/src/net/http/transport.go:2052 +0x4a fp=0xc00022ed28 sp=0xc00022ecc8 pc=0x73036a
bufio.(*Reader).fill(0xc0003d52c0)
        /usr/local/go/src/bufio/bufio.go:110 +0x103 fp=0xc00022ed60 sp=0xc00022ed28 pc=0x6a1e43
bufio.(*Reader).Peek(0xc0003d52c0, 0x1)
        /usr/local/go/src/bufio/bufio.go:148 +0x53 fp=0xc00022ed80 sp=0xc00022ed60 pc=0x6a1f73
net/http.(*persistConn).readLoop(0xc0003e3d40)
        /usr/local/go/src/net/http/transport.go:2205 +0x185 fp=0xc00022efc8 sp=0xc00022ed80 pc=0x730ea5
net/http.(*Transport).dialConn.gowrap2()
        /usr/local/go/src/net/http/transport.go:1874 +0x25 fp=0xc00022efe0 sp=0xc00022efc8 pc=0x72f8a5
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00022efe8 sp=0xc00022efe0 pc=0x47b701
created by net/http.(*Transport).dialConn in goroutine 110
        /usr/local/go/src/net/http/transport.go:1874 +0x154f

goroutine 140 gp=0xc0004fc540 m=nil [select]:
runtime.gopark(0xc00033df48?, 0x2?, 0x40?, 0xc5?, 0xc00033def4?)
        /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00033dd90 sp=0xc00033dd70 pc=0x473bce
runtime.selectgo(0xc00033df48, 0xc00033def0, 0xc00033ae40?, 0x0, 0x0?, 0x1)
        /usr/local/go/src/runtime/select.go:335 +0x7a5 fp=0xc00033deb8 sp=0xc00033dd90 pc=0x451885
net/http.(*persistConn).writeLoop(0xc0003e3d40)
        /usr/local/go/src/net/http/transport.go:2519 +0xe7 fp=0xc00033dfc8 sp=0xc00033deb8 pc=0x7328a7
net/http.(*Transport).dialConn.gowrap3()
        /usr/local/go/src/net/http/transport.go:1875 +0x25 fp=0xc00033dfe0 sp=0xc00033dfc8 pc=0x72f845
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00033dfe8 sp=0xc00033dfe0 pc=0x47b701
created by net/http.(*Transport).dialConn in goroutine 110
        /usr/local/go/src/net/http/transport.go:1875 +0x15a5

rax    0xfffffffffffffffc
rbx    0x4
rcx    0x48068e
rdx    0x80
rdi    0x4
rsi    0x7ffe2c51956c
rbp    0x7ffe2c519520
rsp    0x7ffe2c5194d8
r8     0x0
r9     0x0
r10    0x4d99
r11    0x246
r12    0x7ffe2c5195b0
r13    0x1
r14    0x10a0000
r15    0x1
rip    0x48068e
rflags 0x246
cs     0x33
fs     0x0
gs     0x0
exit status 2

Here is Alsa, only difference to pipe is that it fails because I have no sound device in my LXC container. However after it fails, I can still reconnect to the spotify connect device, in comparison to pipe where it is not reachable / viewable anymore in spotify.

INFO[0000] running go-librespot dev                     
DEBU[0000] app state loaded                             
DEBU[0000] fetched new accesspoints: [ap-gew4.spotify.com:4070 ap-gew4.spotify.com:443 ap-gew4.spotify.com:80 ap-guc3.spotify.com:4070 ap-gew1.spotify.com:443 ap-gae2.spotify.com:80] 
DEBU[0000] fetched new dealers: [gew4-dealer.spotify.com:443 guc3-dealer.spotify.com:443 gew1-dealer.spotify.com:443 gae2-dealer.spotify.com:443] 
DEBU[0000] fetched new spclients: [gew4-spclient.spotify.com:443 guc3-spclient.spotify.com:443 gew1-spclient.spotify.com:443 gae2-spclient.spotify.com:443] 
INFO[0000] zeroconf server listening on port 44815      
DEBU[0000] obtained new client token: ####BLURRED##### 
DEBU[0000] connected to ap-gew4.spotify.com:4070        
DEBU[0000] completed keyexchange                        
DEBU[0000] completed challenge                          
INFO[0000] authenticated AP as ####BLURRED##### 
INFO[0000] authenticated Login5 as ####BLURRED##### 
DEBU[0000] initializing zeroconf session, username: ####BLURRED##### 
DEBU[0000] dealer connection opened                     
DEBU[0000] skipping packet PacketTypeSecretBlock, len: 336 
DEBU[0000] skipping packet PacketTypeLicenseVersion, len: 2 
DEBU[0000] skipping packet PacketTypeUnknown1f, len: 17 
DEBU[0000] skipping packet PacketTypeLegacyWelcome, len: 0 
DEBU[0000] skipping packet PacketTypeMercuryEvent, len: 481 
DEBU[0000] received connection id: NzlmZGQxMzctNmMwZi00ZmQ4LTk3MTUtMmM2NDczNmE1ZGFkK2RlYWxlcit0Y3A6Ly8wYWNhNWEzMy5pcC5nZXc0LnNwb3RpZnkubmV0OjU3MDArMkQxQjNDRDFEQTNCNTEwOUIzQ0E5RkM2NThCOERDNzgzQUJFNEU3M0YyRTQ3QURDQTlCQjUwNkRGQ0I5NUU3Ng== 
DEBU[0000] put connect state because NEW_DEVICE         
DEBU[0000] update volume to 65535/65535                 
DEBU[0001] put connect state because VOLUME_CHANGED     
DEBU[0007] handling transfer player command from ####BLURRED##### 
DEBU[0007] resolved context of episode                   uri="spotify:show:7iZEp9f2Gg8JvKNqK3t905"
DEBU[0007] shuffled context with seed 14489014476575378647 (len: 33, keep: 22)  uri="spotify:show:7iZEp9f2Gg8JvKNqK3t905"
DEBU[0007] loading episode (paused: true, position: 1992466ms)  uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL"
DEBU[0007] put connect state because PLAYER_STATE_CHANGED 
DEBU[0007] skipping packet PacketTypeMercuryEvent, len: 250 
DEBU[0007] selected format OGG_VORBIS_96 (c551b3f2154d39489f7f031ebb7375dec9c9a9d1)  uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL"
DEBU[0007] requested aes key for file c551b3f2154d39489f7f031ebb7375dec9c9a9d1, gid: 0tBz3mzFkUEqtF2SpCSqSL 
DEBU[0007] fetched first chunk of 46, total size is 23925157 bytes  uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL"
DEBU[0007] fetched chunk 32/45, size: 524288             uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL"
DEBU[0007] created new output device                    
INFO[0007] loaded episode "E01 Avignon: Der Prozess Pelicot – Der Glaskasten" (paused: true, position: 1992466ms, duration: 2783660ms, prefetched: false)  uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL"
DEBU[0007] put connect state because PLAYER_STATE_CHANGED 
DEBU[0007] sending successful reply for dealer request  
DEBU[0007] skipping dealer message                       uri=social-connect/v2/broadcast_status_update
DEBU[0007] put connect state because PLAYER_STATE_CHANGED 
DEBU[0007] fetched chunk 1/45, size: 524288              uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL"
DEBU[0008] fetched chunk 35/45, size: 524288             uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL"
DEBU[0008] fetched chunk 34/45, size: 524288             uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL"
DEBU[0008] fetched chunk 2/45, size: 524288              uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL"
DEBU[0008] fetched chunk 33/45, size: 524288             uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL"
DEBU[0008] fetched chunk 3/45, size: 524288              uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL"
DEBU[0010] handling resume player command from 3f44cde3470626fbaabb160a10c5dad771998d6a 
ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory
ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM default
WARN[0010] failed handling dealer request                error="failed starting playback: ALSA error at snd_pcm_open: No such file or directory"```
<!-- gh-comment-id:2596840731 --> @FrancisHGR commented on GitHub (Jan 16, 2025): Hope I made it right: ```root@debian-test:~/go-librespot# kill -6 545 root@debian-test:~/go-librespot# SIGABRT: abort PC=0x48068e m=0 sigcode=0 goroutine 0 gp=0x10a0000 m=0 mp=0x10a0e40 [idle]: internal/runtime/syscall.Syscall6() /usr/local/go/src/internal/runtime/syscall/asm_linux_amd64.s:36 +0xe fp=0x7ffe2c5194e0 sp=0x7ffe2c5194d8 pc=0x48068e internal/runtime/syscall.EpollWait(0x2c5195b4?, {0x7ffe2c51956c?, 0x7f6b13414590?, 0x402156?}, 0x400da8?, 0x0?) /usr/local/go/src/internal/runtime/syscall/syscall_linux.go:32 +0x45 fp=0x7ffe2c519530 sp=0x7ffe2c5194e0 pc=0x480625 runtime.netpoll(0xc00004a000?) /usr/local/go/src/runtime/netpoll_epoll.go:116 +0xd2 fp=0x7ffe2c519bb8 sp=0x7ffe2c519530 pc=0x438e72 runtime.findRunnable() /usr/local/go/src/runtime/proc.go:3580 +0x8c5 fp=0x7ffe2c519d30 sp=0x7ffe2c519bb8 pc=0x445d85 runtime.schedule() /usr/local/go/src/runtime/proc.go:3995 +0xb1 fp=0x7ffe2c519d68 sp=0x7ffe2c519d30 pc=0x4472f1 runtime.park_m(0xc00016ba40) /usr/local/go/src/runtime/proc.go:4102 +0x1eb fp=0x7ffe2c519dc0 sp=0x7ffe2c519d68 pc=0x44770b runtime.mcall() /usr/local/go/src/runtime/asm_amd64.s:459 +0x4e fp=0x7ffe2c519dd8 sp=0x7ffe2c519dc0 pc=0x4796ce goroutine 1 gp=0xc0000061c0 m=nil [select]: runtime.gopark(0xc000043c78?, 0x2?, 0xc0?, 0x5d?, 0xc000043c14?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc0001bdaa0 sp=0xc0001bda80 pc=0x473bce runtime.selectgo(0xc0001bdc78, 0xc000043c10, 0x40?, 0x0, 0x41988b?, 0x1) /usr/local/go/src/runtime/select.go:335 +0x7a5 fp=0xc0001bdbc8 sp=0xc0001bdaa0 pc=0x451885 github.com/devgianlu/go-librespot/zeroconf.(*Zeroconf).Serve(0xc0002f5ae0, 0xc0001bdd80) /root/go-librespot/zeroconf/zeroconf.go:270 +0x29a fp=0xc0001bdd10 sp=0xc0001bdbc8 pc=0x918c7a main.(*App).withAppPlayer(0xc0000aac80, {0xc19038, 0x10c0c20}, 0xc00007f640) /root/go-librespot/cmd/daemon/main.go:316 +0x513 fp=0xc0001bde10 sp=0xc0001bdd10 pc=0x9ae313 main.(*App).withCredentials(...) /root/go-librespot/cmd/daemon/main.go:190 main.(*App).SpotifyToken(0xc0000aac80, {0xc19038, 0x10c0c20}, {0xc00003a4c8?, 0xc000043ee8?}, {0x0?, 0x1?}) /root/go-librespot/cmd/daemon/main.go:182 +0xc5 fp=0xc0001bde68 sp=0xc0001bde10 pc=0x9ad885 main.main() /root/go-librespot/cmd/daemon/main.go:618 +0x698 fp=0xc0001bdf50 sp=0xc0001bde68 pc=0x9b0ab8 runtime.main() /usr/local/go/src/runtime/proc.go:272 +0x28b fp=0xc0001bdfe0 sp=0xc0001bdf50 pc=0x43fa8b runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0001bdfe8 sp=0xc0001bdfe0 pc=0x47b701 goroutine 2 gp=0xc000006c40 m=nil [force gc (idle)]: runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00005efa8 sp=0xc00005ef88 pc=0x473bce runtime.goparkunlock(...) /usr/local/go/src/runtime/proc.go:430 runtime.forcegchelper() /usr/local/go/src/runtime/proc.go:337 +0xb3 fp=0xc00005efe0 sp=0xc00005efa8 pc=0x43fdd3 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00005efe8 sp=0xc00005efe0 pc=0x47b701 created by runtime.init.7 in goroutine 1 /usr/local/go/src/runtime/proc.go:325 +0x1a goroutine 3 gp=0xc000006e00 m=nil [GC sweep wait]: runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00005f780 sp=0xc00005f760 pc=0x473bce runtime.goparkunlock(...) /usr/local/go/src/runtime/proc.go:430 runtime.bgsweep(0xc000080000) /usr/local/go/src/runtime/mgcsweep.go:317 +0xdf fp=0xc00005f7c8 sp=0xc00005f780 pc=0x42a4df runtime.gcenable.gowrap1() /usr/local/go/src/runtime/mgc.go:204 +0x25 fp=0xc00005f7e0 sp=0xc00005f7c8 pc=0x41eba5 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00005f7e8 sp=0xc00005f7e0 pc=0x47b701 created by runtime.gcenable in goroutine 1 /usr/local/go/src/runtime/mgc.go:204 +0x66 goroutine 4 gp=0xc000006fc0 m=nil [GC scavenge wait]: runtime.gopark(0x109fbe0?, 0xc0c298?, 0x0?, 0x0?, 0x0?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00005ff78 sp=0xc00005ff58 pc=0x473bce runtime.goparkunlock(...) /usr/local/go/src/runtime/proc.go:430 runtime.(*scavengerState).park(0x109fbe0) /usr/local/go/src/runtime/mgcscavenge.go:425 +0x49 fp=0xc00005ffa8 sp=0xc00005ff78 pc=0x427ec9 runtime.bgscavenge(0xc000080000) /usr/local/go/src/runtime/mgcscavenge.go:658 +0x59 fp=0xc00005ffc8 sp=0xc00005ffa8 pc=0x428459 runtime.gcenable.gowrap2() /usr/local/go/src/runtime/mgc.go:205 +0x25 fp=0xc00005ffe0 sp=0xc00005ffc8 pc=0x41eb45 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00005ffe8 sp=0xc00005ffe0 pc=0x47b701 created by runtime.gcenable in goroutine 1 /usr/local/go/src/runtime/mgc.go:205 +0xa5 goroutine 5 gp=0xc000007880 m=nil [finalizer wait]: runtime.gopark(0x0?, 0xc0002fb5c0?, 0x10?, 0x41?, 0x1000000010?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00005e620 sp=0xc00005e600 pc=0x473bce runtime.runfinq() /usr/local/go/src/runtime/mfinal.go:193 +0x107 fp=0xc00005e7e0 sp=0xc00005e620 pc=0x41dc27 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00005e7e8 sp=0xc00005e7e0 pc=0x47b701 created by runtime.createfing in goroutine 1 /usr/local/go/src/runtime/mfinal.go:163 +0x3d goroutine 6 gp=0xc00016a8c0 m=nil [chan receive]: runtime.gopark(0xc000060760?, 0x548ee5?, 0xe0?, 0xd9?, 0xc269a0?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000060718 sp=0xc0000606f8 pc=0x473bce runtime.chanrecv(0xc0000902a0, 0x0, 0x1) /usr/local/go/src/runtime/chan.go:639 +0x41c fp=0xc000060790 sp=0xc000060718 pc=0x40e7bc runtime.chanrecv1(0x0?, 0x0?) /usr/local/go/src/runtime/chan.go:489 +0x12 fp=0xc0000607b8 sp=0xc000060790 pc=0x40e372 runtime.unique_runtime_registerUniqueMapCleanup.func1(...) /usr/local/go/src/runtime/mgc.go:1781 runtime.unique_runtime_registerUniqueMapCleanup.gowrap1() /usr/local/go/src/runtime/mgc.go:1784 +0x2f fp=0xc0000607e0 sp=0xc0000607b8 pc=0x421bcf runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000607e8 sp=0xc0000607e0 pc=0x47b701 created by unique.runtime_registerUniqueMapCleanup in goroutine 1 /usr/local/go/src/runtime/mgc.go:1779 +0x96 goroutine 48 gp=0xc00016ac40 m=nil [IO wait]: runtime.gopark(0xb885f7f372c699e9?, 0x229cf3657228ebdb?, 0x40?, 0xac?, 0xb?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000073700 sp=0xc0000736e0 pc=0x473bce runtime.netpollblock(0x4921b8?, 0x40bbc6?, 0x0?) /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc000073738 sp=0xc000073700 pc=0x438437 internal/poll.runtime_pollWait(0x7f6b12c8e220, 0x72) /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000073758 sp=0xc000073738 pc=0x472ec5 internal/poll.(*pollDesc).wait(0xc00039f080?, 0xc0003dc000?, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc000073780 sp=0xc000073758 pc=0x4ef267 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).Read(0xc00039f080, {0xc0003dc000, 0x1000, 0x1000}) /usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc000073818 sp=0xc000073780 pc=0x4f055a net.(*netFD).Read(0xc00039f080, {0xc0003dc000?, 0x4f2865?, 0xc00039f080?}) /usr/local/go/src/net/fd_posix.go:55 +0x25 fp=0xc000073860 sp=0xc000073818 pc=0x5648e5 net.(*conn).Read(0xc00004a7c0, {0xc0003dc000?, 0xc000073a78?, 0x656c84?}) /usr/local/go/src/net/net.go:189 +0x45 fp=0xc0000738a8 sp=0xc000073860 pc=0x573045 net.(*TCPConn).Read(0x23b?, {0xc0003dc000?, 0x18?, 0x240?}) <autogenerated>:1 +0x25 fp=0xc0000738d8 sp=0xc0000738a8 pc=0x587d25 crypto/tls.(*atLeastReader).Read(0xc00035d668, {0xc0003dc000?, 0x0?, 0xc00035d668?}) /usr/local/go/src/crypto/tls/conn.go:809 +0x3b fp=0xc000073920 sp=0xc0000738d8 pc=0x65a4fb bytes.(*Buffer).ReadFrom(0xc0003d22b8, {0xc134e0, 0xc00035d668}) /usr/local/go/src/bytes/buffer.go:211 +0x98 fp=0xc000073978 sp=0xc000073920 pc=0x51ce58 crypto/tls.(*Conn).readFromUntil(0xc0003d2008, {0xc11d00, 0xc00004a7c0}, 0xc000073a10?) /usr/local/go/src/crypto/tls/conn.go:831 +0xde fp=0xc0000739b0 sp=0xc000073978 pc=0x65a6de crypto/tls.(*Conn).readRecordOrCCS(0xc0003d2008, 0x0) /usr/local/go/src/crypto/tls/conn.go:629 +0x3cf fp=0xc000073c28 sp=0xc0000739b0 pc=0x6577ef crypto/tls.(*Conn).readRecord(...) /usr/local/go/src/crypto/tls/conn.go:591 crypto/tls.(*Conn).Read(0xc0003d2008, {0xc0003ea000, 0x1000, 0x11?}) /usr/local/go/src/crypto/tls/conn.go:1385 +0x150 fp=0xc000073c98 sp=0xc000073c28 pc=0x65e050 bufio.(*Reader).Read(0xc0003d5260, {0xc0003e6120, 0x9, 0x7425ee?}) /usr/local/go/src/bufio/bufio.go:241 +0x197 fp=0xc000073cd0 sp=0xc000073c98 pc=0x6a2377 io.ReadAtLeast({0xc120a0, 0xc0003d5260}, {0xc0003e6120, 0x9, 0x9}, 0x9) /usr/local/go/src/io/io.go:335 +0x90 fp=0xc000073d18 sp=0xc000073cd0 pc=0x4e6d70 io.ReadFull(...) /usr/local/go/src/io/io.go:354 net/http.http2readFrameHeader({0xc0003e6120, 0x9, 0x6fede8?}, {0xc120a0?, 0xc0003d5260?}) /usr/local/go/src/net/http/h2_bundle.go:1642 +0x65 fp=0xc000073d68 sp=0xc000073d18 pc=0x6d6e05 net/http.(*http2Framer).ReadFrame(0xc0003e60e0) /usr/local/go/src/net/http/h2_bundle.go:1909 +0x85 fp=0xc000073e10 sp=0xc000073d68 pc=0x6d7545 net/http.(*http2clientConnReadLoop).run(0xc000073fa8) /usr/local/go/src/net/http/h2_bundle.go:9496 +0xda fp=0xc000073f60 sp=0xc000073e10 pc=0x6fa7da net/http.(*http2ClientConn).readLoop(0xc0003e8000) /usr/local/go/src/net/http/h2_bundle.go:9392 +0x7c fp=0xc000073fc8 sp=0xc000073f60 pc=0x6f9dbc net/http.(*http2Transport).newClientConn.gowrap1() /usr/local/go/src/net/http/h2_bundle.go:8006 +0x25 fp=0xc000073fe0 sp=0xc000073fc8 pc=0x6f2b45 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000073fe8 sp=0xc000073fe0 pc=0x47b701 created by net/http.(*http2Transport).newClientConn in goroutine 47 /usr/local/go/src/net/http/h2_bundle.go:8006 +0xd1b goroutine 85 gp=0xc00016ae00 m=nil [select]: runtime.gopark(0xc0000e1c50?, 0x3?, 0x0?, 0xae?, 0xc0000e1b8e?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc0000e1a20 sp=0xc0000e1a00 pc=0x473bce runtime.selectgo(0xc0000e1c50, 0xc0000e1b88, 0x0?, 0x0, 0x9fa820?, 0x1) /usr/local/go/src/runtime/select.go:335 +0x7a5 fp=0xc0000e1b48 sp=0xc0000e1a20 pc=0x451885 github.com/devgianlu/go-librespot/audio.(*KeyProvider).recvLoop(0xc00033b3c0) /root/go-librespot/audio/provider.go:63 +0x185 fp=0xc0000e1fc8 sp=0xc0000e1b48 pc=0x854fa5 github.com/devgianlu/go-librespot/audio.(*KeyProvider).startReceiving.func1.gowrap1() /root/go-librespot/audio/provider.go:53 +0x25 fp=0xc0000e1fe0 sp=0xc0000e1fc8 pc=0x854de5 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000e1fe8 sp=0xc0000e1fe0 pc=0x47b701 created by github.com/devgianlu/go-librespot/audio.(*KeyProvider).startReceiving.func1 in goroutine 51 /root/go-librespot/audio/provider.go:53 +0x56 goroutine 15 gp=0xc00016afc0 m=nil [GC worker (idle)]: runtime.gopark(0x1408e92408182?, 0x0?, 0x0?, 0x0?, 0x0?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000061738 sp=0xc000061718 pc=0x473bce runtime.gcBgMarkWorker(0xc00031ea10) /usr/local/go/src/runtime/mgc.go:1412 +0xe9 fp=0xc0000617c8 sp=0xc000061738 pc=0x420ee9 runtime.gcBgMarkStartWorkers.gowrap1() /usr/local/go/src/runtime/mgc.go:1328 +0x25 fp=0xc0000617e0 sp=0xc0000617c8 pc=0x420dc5 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000617e8 sp=0xc0000617e0 pc=0x47b701 created by runtime.gcBgMarkStartWorkers in goroutine 13 /usr/local/go/src/runtime/mgc.go:1328 +0x105 goroutine 18 gp=0xc00016b180 m=nil [IO wait]: runtime.gopark(0x2427e380e657f18b?, 0x5d2794367937fb08?, 0x80?, 0xb1?, 0xb?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc0000dd700 sp=0xc0000dd6e0 pc=0x473bce runtime.netpollblock(0x4921b8?, 0x40bbc6?, 0x0?) /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc0000dd738 sp=0xc0000dd700 pc=0x438437 internal/poll.runtime_pollWait(0x7f6b12c8e680, 0x72) /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc0000dd758 sp=0xc0000dd738 pc=0x472ec5 internal/poll.(*pollDesc).wait(0xc0000ab080?, 0xc00010d000?, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc0000dd780 sp=0xc0000dd758 pc=0x4ef267 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).Read(0xc0000ab080, {0xc00010d000, 0x1000, 0x1000}) /usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc0000dd818 sp=0xc0000dd780 pc=0x4f055a net.(*netFD).Read(0xc0000ab080, {0xc00010d000?, 0x4f2865?, 0xc0000ab080?}) /usr/local/go/src/net/fd_posix.go:55 +0x25 fp=0xc0000dd860 sp=0xc0000dd818 pc=0x5648e5 net.(*conn).Read(0xc00004a240, {0xc00010d000?, 0xc0000dda78?, 0x656c84?}) /usr/local/go/src/net/net.go:189 +0x45 fp=0xc0000dd8a8 sp=0xc0000dd860 pc=0x573045 net.(*TCPConn).Read(0x11b?, {0xc00010d000?, 0x18?, 0x120?}) <autogenerated>:1 +0x25 fp=0xc0000dd8d8 sp=0xc0000dd8a8 pc=0x587d25 crypto/tls.(*atLeastReader).Read(0xc0003d6fd8, {0xc00010d000?, 0x0?, 0xc0003d6fd8?}) /usr/local/go/src/crypto/tls/conn.go:809 +0x3b fp=0xc0000dd920 sp=0xc0000dd8d8 pc=0x65a4fb bytes.(*Buffer).ReadFrom(0xc0001d82b8, {0xc134e0, 0xc0003d6fd8}) /usr/local/go/src/bytes/buffer.go:211 +0x98 fp=0xc0000dd978 sp=0xc0000dd920 pc=0x51ce58 crypto/tls.(*Conn).readFromUntil(0xc0001d8008, {0xc11d00, 0xc00004a240}, 0xc0000dda10?) /usr/local/go/src/crypto/tls/conn.go:831 +0xde fp=0xc0000dd9b0 sp=0xc0000dd978 pc=0x65a6de crypto/tls.(*Conn).readRecordOrCCS(0xc0001d8008, 0x0) /usr/local/go/src/crypto/tls/conn.go:629 +0x3cf fp=0xc0000ddc28 sp=0xc0000dd9b0 pc=0x6577ef crypto/tls.(*Conn).readRecord(...) /usr/local/go/src/crypto/tls/conn.go:591 crypto/tls.(*Conn).Read(0xc0001d8008, {0xc00046b000, 0x1000, 0x11?}) /usr/local/go/src/crypto/tls/conn.go:1385 +0x150 fp=0xc0000ddc98 sp=0xc0000ddc28 pc=0x65e050 bufio.(*Reader).Read(0xc0004688a0, {0xc0002e7700, 0x9, 0x7425ee?}) /usr/local/go/src/bufio/bufio.go:241 +0x197 fp=0xc0000ddcd0 sp=0xc0000ddc98 pc=0x6a2377 io.ReadAtLeast({0xc120a0, 0xc0004688a0}, {0xc0002e7700, 0x9, 0x9}, 0x9) /usr/local/go/src/io/io.go:335 +0x90 fp=0xc0000ddd18 sp=0xc0000ddcd0 pc=0x4e6d70 io.ReadFull(...) /usr/local/go/src/io/io.go:354 net/http.http2readFrameHeader({0xc0002e7700, 0x9, 0x6fede8?}, {0xc120a0?, 0xc0004688a0?}) /usr/local/go/src/net/http/h2_bundle.go:1642 +0x65 fp=0xc0000ddd68 sp=0xc0000ddd18 pc=0x6d6e05 net/http.(*http2Framer).ReadFrame(0xc0002e76c0) /usr/local/go/src/net/http/h2_bundle.go:1909 +0x85 fp=0xc0000dde10 sp=0xc0000ddd68 pc=0x6d7545 net/http.(*http2clientConnReadLoop).run(0xc0000ddfa8) /usr/local/go/src/net/http/h2_bundle.go:9496 +0xda fp=0xc0000ddf60 sp=0xc0000dde10 pc=0x6fa7da net/http.(*http2ClientConn).readLoop(0xc000002000) /usr/local/go/src/net/http/h2_bundle.go:9392 +0x7c fp=0xc0000ddfc8 sp=0xc0000ddf60 pc=0x6f9dbc net/http.(*http2Transport).newClientConn.gowrap1() /usr/local/go/src/net/http/h2_bundle.go:8006 +0x25 fp=0xc0000ddfe0 sp=0xc0000ddfc8 pc=0x6f2b45 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0000ddfe8 sp=0xc0000ddfe0 pc=0x47b701 created by net/http.(*http2Transport).newClientConn in goroutine 16 /usr/local/go/src/net/http/h2_bundle.go:8006 +0xd1b goroutine 50 gp=0xc000427c00 m=3 mp=0xc000062e08 [syscall]: syscall.Syscall6(0x101, 0xffffffffffffff9c, 0xc00003a978, 0x80001, 0x0, 0x0, 0x0) /usr/local/go/src/syscall/syscall_linux.go:95 +0x39 fp=0xc00006fc20 sp=0xc00006fbc0 pc=0x493f39 syscall.openat(0xffffffffffffff9c, {0xc00003a528?, 0x30?}, 0x80001, 0x0) /usr/local/go/src/syscall/zsyscall_linux_amd64.go:98 +0x90 fp=0xc00006fc88 sp=0xc00006fc20 pc=0x491510 syscall.Open(...) /usr/local/go/src/syscall/syscall_linux.go:284 os.open({0xc00003a528?, 0x414e3e?}, 0x7f6b12c69d58?, 0x8470e?) /usr/local/go/src/os/file_open_unix.go:15 +0x2b fp=0xc00006fcc0 sp=0xc00006fc88 pc=0x4fbf4b os.openFileNolog.func1() /usr/local/go/src/os/file_unix.go:279 +0x92 fp=0xc00006fd08 sp=0xc00006fcc0 pc=0x4fcf32 os.ignoringEINTR(...) /usr/local/go/src/os/file_posix.go:251 os.openFileNolog({0xc00003a528, 0x17}, 0x1, 0x184501?) /usr/local/go/src/os/file_unix.go:278 +0xae fp=0xc00006fda0 sp=0xc00006fd08 pc=0x4fcd4e os.OpenFile({0xc00003a528, 0x17}, 0x1, 0x0) /usr/local/go/src/os/file.go:385 +0x3e fp=0xc00006fdd0 sp=0xc00006fda0 pc=0x4fb5de github.com/devgianlu/go-librespot/output.newPipeOutput(0xc0004b5080) /root/go-librespot/output/driver-pipe.go:73 +0x1cd fp=0xc00006fe28 sp=0xc00006fdd0 pc=0x8610cd github.com/devgianlu/go-librespot/output.NewOutput(0x20?) /root/go-librespot/output/output.go:127 +0x3f fp=0xc00006fe70 sp=0xc00006fe28 pc=0x862b3f github.com/devgianlu/go-librespot/player.NewPlayer.func1({0xc12920, 0xc0001f5e00}, 0x3f800000) /root/go-librespot/player/player.go:140 +0x198 fp=0xc00006fe98 sp=0xc00006fe70 pc=0x88ead8 github.com/devgianlu/go-librespot/player.(*Player).manageLoop(0xc0003a77a0) /root/go-librespot/player/player.go:194 +0x2de fp=0xc00006ffc8 sp=0xc00006fe98 pc=0x88edfe github.com/devgianlu/go-librespot/player.NewPlayer.gowrap1() /root/go-librespot/player/player.go:162 +0x25 fp=0xc00006ffe0 sp=0xc00006ffc8 pc=0x88e905 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00006ffe8 sp=0xc00006ffe0 pc=0x47b701 created by github.com/devgianlu/go-librespot/player.NewPlayer in goroutine 1 /root/go-librespot/player/player.go:162 +0x19a goroutine 51 gp=0xc000427dc0 m=nil [chan receive]: runtime.gopark(0x7f6b12c94cb8?, 0xc000084ae0?, 0x70?, 0x0?, 0xc000042db8?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000042d68 sp=0xc000042d48 pc=0x473bce runtime.chanrecv(0xc00039b6c0, 0xc000042fc0, 0x1) /usr/local/go/src/runtime/chan.go:639 +0x41c fp=0xc000042de0 sp=0xc000042d68 pc=0x40e7bc runtime.chanrecv1(0xac2640?, 0xc000042f00?) /usr/local/go/src/runtime/chan.go:489 +0x12 fp=0xc000042e08 sp=0xc000042de0 pc=0x40e372 github.com/devgianlu/go-librespot/player.(*Player).SetPrimaryStream(...) /root/go-librespot/player/player.go:394 main.(*AppPlayer).loadCurrentTrack(0xc0000ab480, {0xc19038, 0x10c0c20}, 0x1, 0x1) /root/go-librespot/cmd/daemon/controls.go:245 +0x7d6 fp=0xc000043088 sp=0xc000042e08 pc=0x9a8df6 main.(*AppPlayer).handlePlayerCommand(_, {_, _}, {0x70d9d99b, {0xc000272180, 0x28}, {{0xc00035f4a0, 0x8}, {0x0, 0x0}, ...}}) /root/go-librespot/cmd/daemon/player.go:237 +0x1945 fp=0xc000043280 sp=0xc000043088 pc=0x9b3225 main.(*AppPlayer).handleDealerRequest(_, {_, _}, {0xc00031f880, {0xc00003d590, 0x24}, {0x70d9d99b, {0xc000272180, 0x28}, {{0xc00035f4a0, ...}, ...}}}) /root/go-librespot/cmd/daemon/player.go:354 +0x150 fp=0xc0000434d0 sp=0xc000043280 pc=0x9b3770 main.(*AppPlayer).Run(0xc0000ab480, {0xc19038, 0x10c0c20}, 0xc00039abd0) /root/go-librespot/cmd/daemon/player.go:582 +0x690 fp=0xc000043fb0 sp=0xc0000434d0 pc=0x9b5c50 main.(*App).withAppPlayer.gowrap1() /root/go-librespot/cmd/daemon/main.go:254 +0x2c fp=0xc000043fe0 sp=0xc000043fb0 pc=0x9aee6c runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000043fe8 sp=0xc000043fe0 pc=0x47b701 created by main.(*App).withAppPlayer in goroutine 1 /root/go-librespot/cmd/daemon/main.go:254 +0x34b goroutine 33 gp=0xc00016a700 m=nil [IO wait]: runtime.gopark(0xb1da521ef27e388b?, 0xb702da7498dd1c99?, 0x0?, 0xa7?, 0xb?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00006e700 sp=0xc00006e6e0 pc=0x473bce runtime.netpollblock(0x4921b8?, 0x40bbc6?, 0x0?) /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc00006e738 sp=0xc00006e700 pc=0x438437 internal/poll.runtime_pollWait(0x7f6b12c8e108, 0x72) /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc00006e758 sp=0xc00006e738 pc=0x472ec5 internal/poll.(*pollDesc).wait(0xc0001c8200?, 0xc0001cc000?, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc00006e780 sp=0xc00006e758 pc=0x4ef267 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).Read(0xc0001c8200, {0xc0001cc000, 0x1000, 0x1000}) /usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc00006e818 sp=0xc00006e780 pc=0x4f055a net.(*netFD).Read(0xc0001c8200, {0xc0001cc000?, 0x4f2865?, 0xc0001c8200?}) /usr/local/go/src/net/fd_posix.go:55 +0x25 fp=0xc00006e860 sp=0xc00006e818 pc=0x5648e5 net.(*conn).Read(0xc00004a368, {0xc0001cc000?, 0xc00006ea78?, 0x656c84?}) /usr/local/go/src/net/net.go:189 +0x45 fp=0xc00006e8a8 sp=0xc00006e860 pc=0x573045 net.(*TCPConn).Read(0x11b?, {0xc0001cc000?, 0x18?, 0x120?}) <autogenerated>:1 +0x25 fp=0xc00006e8d8 sp=0xc00006e8a8 pc=0x587d25 crypto/tls.(*atLeastReader).Read(0xc0003d7248, {0xc0001cc000?, 0x0?, 0xc0003d7248?}) /usr/local/go/src/crypto/tls/conn.go:809 +0x3b fp=0xc00006e920 sp=0xc00006e8d8 pc=0x65a4fb bytes.(*Buffer).ReadFrom(0xc0001d9b38, {0xc134e0, 0xc0003d7248}) /usr/local/go/src/bytes/buffer.go:211 +0x98 fp=0xc00006e978 sp=0xc00006e920 pc=0x51ce58 crypto/tls.(*Conn).readFromUntil(0xc0001d9888, {0xc11d00, 0xc00004a368}, 0xc00006ea10?) /usr/local/go/src/crypto/tls/conn.go:831 +0xde fp=0xc00006e9b0 sp=0xc00006e978 pc=0x65a6de crypto/tls.(*Conn).readRecordOrCCS(0xc0001d9888, 0x0) /usr/local/go/src/crypto/tls/conn.go:629 +0x3cf fp=0xc00006ec28 sp=0xc00006e9b0 pc=0x6577ef crypto/tls.(*Conn).readRecord(...) /usr/local/go/src/crypto/tls/conn.go:591 crypto/tls.(*Conn).Read(0xc0001d9888, {0xc00027a000, 0x1000, 0x11?}) /usr/local/go/src/crypto/tls/conn.go:1385 +0x150 fp=0xc00006ec98 sp=0xc00006ec28 pc=0x65e050 bufio.(*Reader).Read(0xc000256360, {0xc0002e77e0, 0x9, 0x7425ee?}) /usr/local/go/src/bufio/bufio.go:241 +0x197 fp=0xc00006ecd0 sp=0xc00006ec98 pc=0x6a2377 io.ReadAtLeast({0xc120a0, 0xc000256360}, {0xc0002e77e0, 0x9, 0x9}, 0x9) /usr/local/go/src/io/io.go:335 +0x90 fp=0xc00006ed18 sp=0xc00006ecd0 pc=0x4e6d70 io.ReadFull(...) /usr/local/go/src/io/io.go:354 net/http.http2readFrameHeader({0xc0002e77e0, 0x9, 0x6fede8?}, {0xc120a0?, 0xc000256360?}) /usr/local/go/src/net/http/h2_bundle.go:1642 +0x65 fp=0xc00006ed68 sp=0xc00006ed18 pc=0x6d6e05 net/http.(*http2Framer).ReadFrame(0xc0002e77a0) /usr/local/go/src/net/http/h2_bundle.go:1909 +0x85 fp=0xc00006ee10 sp=0xc00006ed68 pc=0x6d7545 net/http.(*http2clientConnReadLoop).run(0xc00006efa8) /usr/local/go/src/net/http/h2_bundle.go:9496 +0xda fp=0xc00006ef60 sp=0xc00006ee10 pc=0x6fa7da net/http.(*http2ClientConn).readLoop(0xc0000f2d80) /usr/local/go/src/net/http/h2_bundle.go:9392 +0x7c fp=0xc00006efc8 sp=0xc00006ef60 pc=0x6f9dbc net/http.(*http2Transport).newClientConn.gowrap1() /usr/local/go/src/net/http/h2_bundle.go:8006 +0x25 fp=0xc00006efe0 sp=0xc00006efc8 pc=0x6f2b45 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00006efe8 sp=0xc00006efe0 pc=0x47b701 created by net/http.(*http2Transport).newClientConn in goroutine 32 /usr/local/go/src/net/http/h2_bundle.go:8006 +0xd1b goroutine 52 gp=0xc00016b500 m=nil [chan receive]: runtime.gopark(0x0?, 0xc000062e08?, 0x80?, 0xb1?, 0x0?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000070e98 sp=0xc000070e78 pc=0x473bce runtime.chanrecv(0xc00039b180, 0xc000070f98, 0x1) /usr/local/go/src/runtime/chan.go:639 +0x41c fp=0xc000070f10 sp=0xc000070e98 pc=0x40e7bc runtime.chanrecv2(0x0?, 0x0?) /usr/local/go/src/runtime/chan.go:494 +0x12 fp=0xc000070f38 sp=0xc000070f10 pc=0x40e392 main.(*App).withAppPlayer.func1() /root/go-librespot/cmd/daemon/main.go:264 +0x6c fp=0xc000070fe0 sp=0xc000070f38 pc=0x9aedac runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000070fe8 sp=0xc000070fe0 pc=0x47b701 created by main.(*App).withAppPlayer in goroutine 1 /root/go-librespot/cmd/daemon/main.go:261 +0x3eb goroutine 26 gp=0xc00016b880 m=nil [IO wait]: runtime.gopark(0xc0002be1e0?, 0xc000075d78?, 0x60?, 0xcb?, 0x475949?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000075d38 sp=0xc000075d18 pc=0x473bce runtime.netpollblock(0xc11be0?, 0x10593e0?, 0x0?) /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc000075d70 sp=0xc000075d38 pc=0x438437 internal/poll.runtime_pollWait(0x7f6b12c8e450, 0x72) /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000075d90 sp=0xc000075d70 pc=0x472ec5 internal/poll.(*pollDesc).wait(0xc0000ab380?, 0x50?, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc000075db8 sp=0xc000075d90 pc=0x4ef267 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).RawRead(0xc0000ab380, 0xc0002be1e0) /usr/local/go/src/internal/poll/fd_unix.go:717 +0x125 fp=0xc000075e18 sp=0xc000075db8 pc=0x4f52a5 net.(*rawConn).Read(0xc00004a200, 0x0?) /usr/local/go/src/net/rawconn.go:44 +0x36 fp=0xc000075e50 sp=0xc000075e18 pc=0x5772b6 golang.org/x/net/internal/socket.(*Conn).recvMsg(0xc0001f4540, 0xc0002a6cc0, 0x0) /root/go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/rawconn_msg.go:27 +0x144 fp=0xc000075ea8 sp=0xc000075e50 pc=0x8bb864 golang.org/x/net/internal/socket.(*Conn).RecvMsg(...) /root/go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/socket.go:247 golang.org/x/net/ipv4.(*payloadHandler).ReadFrom(0xc0002bfa50, {0xc000480000, 0x10000, 0x10000}) /root/go/pkg/mod/golang.org/x/net@v0.26.0/ipv4/payload_cmsg.go:31 +0x4ae fp=0xc000075f48 sp=0xc000075ea8 pc=0x8bf2ee github.com/grandcat/zeroconf.(*Server).recv4(0xc000468a20, 0xc0002bfa40) /root/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:254 +0xca fp=0xc000075fc0 sp=0xc000075f48 pc=0x913d6a github.com/grandcat/zeroconf.(*Server).mainloop.gowrap1() /root/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:188 +0x25 fp=0xc000075fe0 sp=0xc000075fc0 pc=0x913a05 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000075fe8 sp=0xc000075fe0 pc=0x47b701 created by github.com/grandcat/zeroconf.(*Server).mainloop in goroutine 20 /root/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:188 +0x78 goroutine 27 gp=0xc00016ba40 m=nil [IO wait]: runtime.gopark(0xc0002be230?, 0xc000074d28?, 0x60?, 0xd2?, 0x7f6b12f19108?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000074ce8 sp=0xc000074cc8 pc=0x473bce runtime.netpollblock(0xc11be0?, 0x10593e0?, 0x0?) /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc000074d20 sp=0xc000074ce8 pc=0x438437 internal/poll.runtime_pollWait(0x7f6b12c8e338, 0x72) /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000074d40 sp=0xc000074d20 pc=0x472ec5 internal/poll.(*pollDesc).wait(0xc0000ab400?, 0x50?, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc000074d68 sp=0xc000074d40 pc=0x4ef267 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).RawRead(0xc0000ab400, 0xc0002be230) /usr/local/go/src/internal/poll/fd_unix.go:717 +0x125 fp=0xc000074dc8 sp=0xc000074d68 pc=0x4f52a5 net.(*rawConn).Read(0xc00004a210, 0x0?) /usr/local/go/src/net/rawconn.go:44 +0x36 fp=0xc000074e00 sp=0xc000074dc8 pc=0x5772b6 golang.org/x/net/internal/socket.(*Conn).recvMsg(0xc0001f4560, 0xc0002a6d20, 0x0) /root/go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/rawconn_msg.go:27 +0x144 fp=0xc000074e58 sp=0xc000074e00 pc=0x8bb864 golang.org/x/net/internal/socket.(*Conn).RecvMsg(...) /root/go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/socket.go:247 golang.org/x/net/ipv6.(*payloadHandler).ReadFrom(0xc0002bfaa0, {0xc0003be000, 0x10000, 0x10000}) /root/go/pkg/mod/golang.org/x/net@v0.26.0/ipv6/payload_cmsg.go:31 +0x38d fp=0xc000074f48 sp=0xc000074e58 pc=0x8c268d github.com/grandcat/zeroconf.(*Server).recv6(0xc000468a20, 0xc0002bfa90) /root/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:282 +0xca fp=0xc000074fc0 sp=0xc000074f48 pc=0x913f2a github.com/grandcat/zeroconf.(*Server).mainloop.gowrap2() /root/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:191 +0x25 fp=0xc000074fe0 sp=0xc000074fc0 pc=0x9139a5 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000074fe8 sp=0xc000074fe0 pc=0x47b701 created by github.com/grandcat/zeroconf.(*Server).mainloop in goroutine 20 /root/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:191 +0xd9 goroutine 53 gp=0xc000288000 m=nil [chan receive]: runtime.gopark(0xc000249210?, 0xc00045f980?, 0x8?, 0x92?, 0xc000249200?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00005ae70 sp=0xc00005ae50 pc=0x473bce runtime.chanrecv(0xc0000903f0, 0xc00005afb8, 0x1) /usr/local/go/src/runtime/chan.go:639 +0x41c fp=0xc00005aee8 sp=0xc00005ae70 pc=0x40e7bc runtime.chanrecv2(0xc00005af38?, 0x40ed1e?) /usr/local/go/src/runtime/chan.go:494 +0x12 fp=0xc00005af10 sp=0xc00005aee8 pc=0x40e392 main.(*App).withAppPlayer.func2() /root/go-librespot/cmd/daemon/main.go:280 +0x85 fp=0xc00005afe0 sp=0xc00005af10 pc=0x9aea25 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00005afe8 sp=0xc00005afe0 pc=0x47b701 created by main.(*App).withAppPlayer in goroutine 1 /root/go-librespot/cmd/daemon/main.go:277 +0x4ab goroutine 54 gp=0xc0002881c0 m=nil [IO wait]: runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00033fbe0 sp=0xc00033fbc0 pc=0x473bce runtime.netpollblock(0x10?, 0x40bbc6?, 0x0?) /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc00033fc18 sp=0xc00033fbe0 pc=0x438437 internal/poll.runtime_pollWait(0x7f6b12c8e568, 0x72) /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc00033fc38 sp=0xc00033fc18 pc=0x472ec5 internal/poll.(*pollDesc).wait(0xc0000aaa00?, 0x10?, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc00033fc60 sp=0xc00033fc38 pc=0x4ef267 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).Accept(0xc0000aaa00) /usr/local/go/src/internal/poll/fd_unix.go:620 +0x295 fp=0xc00033fd08 sp=0xc00033fc60 pc=0x4f4635 net.(*netFD).accept(0xc0000aaa00) /usr/local/go/src/net/fd_unix.go:172 +0x29 fp=0xc00033fdc0 sp=0xc00033fd08 pc=0x5668a9 net.(*TCPListener).accept(0xc000278080) /usr/local/go/src/net/tcpsock_posix.go:159 +0x1e fp=0xc00033fe10 sp=0xc00033fdc0 pc=0x57c1be net.(*TCPListener).Accept(0xc000278080) /usr/local/go/src/net/tcpsock.go:372 +0x30 fp=0xc00033fe40 sp=0xc00033fe10 pc=0x57b390 net/http.(*onceCloseListener).Accept(0xc19000?) <autogenerated>:1 +0x24 fp=0xc00033fe58 sp=0xc00033fe40 pc=0x743764 net/http.(*Server).Serve(0xc00047f950, {0xc18010, 0xc000278080}) /usr/local/go/src/net/http/server.go:3330 +0x30c fp=0xc00033ff88 sp=0xc00033fe58 pc=0x71bc6c net/http.Serve(...) /usr/local/go/src/net/http/server.go:2858 github.com/devgianlu/go-librespot/zeroconf.(*Zeroconf).Serve.func2() /root/go-librespot/zeroconf/zeroconf.go:267 +0x85 fp=0xc00033ffe0 sp=0xc00033ff88 pc=0x918d85 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00033ffe8 sp=0xc00033ffe0 pc=0x47b701 created by github.com/devgianlu/go-librespot/zeroconf.(*Zeroconf).Serve in goroutine 1 /root/go-librespot/zeroconf/zeroconf.go:267 +0x156 goroutine 67 gp=0xc000288540 m=nil [select]: runtime.gopark(0xc000341f98?, 0x2?, 0x50?, 0x73?, 0xc000341f6c?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000341e10 sp=0xc000341df0 pc=0x473bce runtime.selectgo(0xc000341f98, 0xc000341f68, 0x412f73747265632f?, 0x0, 0x6369746e65687475?, 0x1) /usr/local/go/src/runtime/select.go:335 +0x7a5 fp=0xc000341f38 sp=0xc000341e10 pc=0x451885 github.com/devgianlu/go-librespot/ap.(*Accesspoint).pongAckTicker(0xc00047e5a0) /root/go-librespot/ap/ap.go:355 +0x7d fp=0xc000341fc8 sp=0xc000341f38 pc=0x84ea5d github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1.gowrap2() /root/go-librespot/ap/ap.go:264 +0x25 fp=0xc000341fe0 sp=0xc000341fc8 pc=0x84e125 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000341fe8 sp=0xc000341fe0 pc=0x47b701 created by github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1 in goroutine 51 /root/go-librespot/ap/ap.go:264 +0xff goroutine 66 gp=0xc000288700 m=nil [IO wait]: runtime.gopark(0x20?, 0xc000343b30?, 0x8b?, 0x98?, 0xb?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000343ad0 sp=0xc000343ab0 pc=0x473bce runtime.netpollblock(0x4921b8?, 0x40bbc6?, 0x0?) /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc000343b08 sp=0xc000343ad0 pc=0x438437 internal/poll.runtime_pollWait(0x7f6b12c8dff0, 0x72) /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000343b28 sp=0xc000343b08 pc=0x472ec5 internal/poll.(*pollDesc).wait(0xc0001c8980?, 0xc0003e59fc?, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc000343b50 sp=0xc000343b28 pc=0x4ef267 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).Read(0xc0001c8980, {0xc0003e59fc, 0x3, 0x3}) /usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc000343be8 sp=0xc000343b50 pc=0x4f055a net.(*netFD).Read(0xc0001c8980, {0xc0003e59fc?, 0x7f6b12f19108?, 0xc0003de3c0?}) /usr/local/go/src/net/fd_posix.go:55 +0x25 fp=0xc000343c30 sp=0xc000343be8 pc=0x5648e5 net.(*conn).Read(0xc00004a428, {0xc0003e59fc?, 0x84acf9?, 0x10a0e40?}) /usr/local/go/src/net/net.go:189 +0x45 fp=0xc000343c78 sp=0xc000343c30 pc=0x573045 net.(*TCPConn).Read(0x0?, {0xc0003e59fc?, 0xc000343ce0?, 0x475949?}) <autogenerated>:1 +0x25 fp=0xc000343ca8 sp=0xc000343c78 pc=0x587d25 io.ReadAtLeast({0xc11d00, 0xc00004a428}, {0xc0003e59fc, 0x3, 0x3}, 0x3) /usr/local/go/src/io/io.go:335 +0x90 fp=0xc000343cf0 sp=0xc000343ca8 pc=0x4e6d70 io.ReadFull(...) /usr/local/go/src/io/io.go:354 github.com/devgianlu/go-librespot/ap.(*shannonConn).receivePacket(0xc0002574a0, {0xc19038, 0x10c0c20}) /root/go-librespot/ap/shannon.go:124 +0x398 fp=0xc000343e38 sp=0xc000343cf0 pc=0x851658 github.com/devgianlu/go-librespot/ap.(*Accesspoint).recvLoop(0xc00047e5a0) /root/go-librespot/ap/ap.go:276 +0x6c fp=0xc000343fc8 sp=0xc000343e38 pc=0x84e22c github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1.gowrap1() /root/go-librespot/ap/ap.go:260 +0x25 fp=0xc000343fe0 sp=0xc000343fc8 pc=0x84e185 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000343fe8 sp=0xc000343fe0 pc=0x47b701 created by github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1 in goroutine 51 /root/go-librespot/ap/ap.go:260 +0x78 goroutine 65 gp=0xc0002888c0 m=nil [select]: runtime.gopark(0xc000340f38?, 0x5?, 0x48?, 0xf?, 0xc000340ee6?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000340d80 sp=0xc000340d60 pc=0x473bce runtime.selectgo(0xc000340f38, 0xc000340edc, 0xc000340f48?, 0x0, 0xc00033a440?, 0x1) /usr/local/go/src/runtime/select.go:335 +0x7a5 fp=0xc000340ea8 sp=0xc000340d80 pc=0x451885 nhooyr.io/websocket.(*Conn).timeoutLoop(0xc0003ba340) /root/go/pkg/mod/nhooyr.io/websocket@v1.8.7/conn_notjs.go:153 +0x156 fp=0xc000340fc8 sp=0xc000340ea8 pc=0x837cd6 nhooyr.io/websocket.newConn.gowrap1() /root/go/pkg/mod/nhooyr.io/websocket@v1.8.7/conn_notjs.go:114 +0x25 fp=0xc000340fe0 sp=0xc000340fc8 pc=0x837845 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000340fe8 sp=0xc000340fe0 pc=0x47b701 created by nhooyr.io/websocket.newConn in goroutine 51 /root/go/pkg/mod/nhooyr.io/websocket@v1.8.7/conn_notjs.go:114 +0x4a6 goroutine 68 gp=0xc000288a80 m=nil [chan receive]: runtime.gopark(0xc0001db8c8?, 0xc0003d5860?, 0x70?, 0x0?, 0xc00042fb78?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc0001bbb28 sp=0xc0001bbb08 pc=0x473bce runtime.chanrecv(0xc00031f880, 0xc00042fbff, 0x1) /usr/local/go/src/runtime/chan.go:639 +0x41c fp=0xc0001bbba0 sp=0xc0001bbb28 pc=0x40e7bc runtime.chanrecv1(0xc0003f0000?, 0x0?) /usr/local/go/src/runtime/chan.go:489 +0x12 fp=0xc0001bbbc8 sp=0xc0001bbba0 pc=0x40e372 github.com/devgianlu/go-librespot/dealer.(*Dealer).handleRequest(0xc0003e61c0, 0xc0002aba70) /root/go-librespot/dealer/recv.go:237 +0x265 fp=0xc0001bbe98 sp=0xc0001bbbc8 pc=0x8aab85 github.com/devgianlu/go-librespot/dealer.(*Dealer).recvLoop(0xc0003e61c0) /root/go-librespot/dealer/dealer.go:213 +0x388 fp=0xc0001bbfc8 sp=0xc0001bbe98 pc=0x8a9368 github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1.gowrap1() /root/go-librespot/dealer/dealer.go:125 +0x25 fp=0xc0001bbfe0 sp=0xc0001bbfc8 pc=0x8a8bc5 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc0001bbfe8 sp=0xc0001bbfe0 pc=0x47b701 created by github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1 in goroutine 51 /root/go-librespot/dealer/dealer.go:125 +0x78 goroutine 69 gp=0xc000289500 m=nil [select]: runtime.gopark(0xc00034ef98?, 0x2?, 0xa0?, 0xf?, 0xc00034ef44?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00034ede0 sp=0xc00034edc0 pc=0x473bce runtime.selectgo(0xc00034ef98, 0xc00034ef40, 0xc000184c40?, 0x0, 0xc0003e5420?, 0x1) /usr/local/go/src/runtime/select.go:335 +0x7a5 fp=0xc00034ef08 sp=0xc00034ede0 pc=0x451885 github.com/devgianlu/go-librespot/dealer.(*Dealer).pingTicker(0xc0003e61c0) /root/go-librespot/dealer/dealer.go:138 +0x8f fp=0xc00034efc8 sp=0xc00034ef08 pc=0x8a8c8f github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1.gowrap2() /root/go-librespot/dealer/dealer.go:129 +0x25 fp=0xc00034efe0 sp=0xc00034efc8 pc=0x8a8b65 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00034efe8 sp=0xc00034efe0 pc=0x47b701 created by github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1 in goroutine 51 /root/go-librespot/dealer/dealer.go:129 +0xf6 goroutine 95 gp=0xc0004268c0 m=nil [IO wait]: runtime.gopark(0x2498a76136b21974?, 0xa63900fd2190ad18?, 0x74?, 0x19?, 0xb?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000342730 sp=0xc000342710 pc=0x473bce runtime.netpollblock(0x4921b8?, 0x40bbc6?, 0x0?) /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc000342768 sp=0xc000342730 pc=0x438437 internal/poll.runtime_pollWait(0x7f6b12c8db90, 0x72) /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000342788 sp=0xc000342768 pc=0x472ec5 internal/poll.(*pollDesc).wait(0xc0004b7680?, 0xc0002c0000?, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc0003427b0 sp=0xc000342788 pc=0x4ef267 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).Read(0xc0004b7680, {0xc0002c0000, 0xa000, 0xa000}) /usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc000342848 sp=0xc0003427b0 pc=0x4f055a net.(*netFD).Read(0xc0004b7680, {0xc0002c0000?, 0x1049400?, 0xc0003429d0?}) /usr/local/go/src/net/fd_posix.go:55 +0x25 fp=0xc000342890 sp=0xc000342848 pc=0x5648e5 net.(*conn).Read(0xc00004a410, {0xc0002c0000?, 0x0?, 0x6a29b3?}) /usr/local/go/src/net/net.go:189 +0x45 fp=0xc0003428d8 sp=0xc000342890 pc=0x573045 net.(*TCPConn).Read(0xdaf?, {0xc0002c0000?, 0x18?, 0x7f6b12cc2218?}) <autogenerated>:1 +0x25 fp=0xc000342908 sp=0xc0003428d8 pc=0x587d25 crypto/tls.(*atLeastReader).Read(0xc0002fba58, {0xc0002c0000?, 0x0?, 0xc0002fba58?}) /usr/local/go/src/crypto/tls/conn.go:809 +0x3b fp=0xc000342950 sp=0xc000342908 pc=0x65a4fb bytes.(*Buffer).ReadFrom(0xc0004adeb8, {0xc134e0, 0xc0002fba58}) /usr/local/go/src/bytes/buffer.go:211 +0x98 fp=0xc0003429a8 sp=0xc000342950 pc=0x51ce58 crypto/tls.(*Conn).readFromUntil(0xc0004adc08, {0xc11d00, 0xc00004a410}, 0xc000342a40?) /usr/local/go/src/crypto/tls/conn.go:831 +0xde fp=0xc0003429e0 sp=0xc0003429a8 pc=0x65a6de crypto/tls.(*Conn).readRecordOrCCS(0xc0004adc08, 0x0) /usr/local/go/src/crypto/tls/conn.go:629 +0x3cf fp=0xc000342c58 sp=0xc0003429e0 pc=0x6577ef crypto/tls.(*Conn).readRecord(...) /usr/local/go/src/crypto/tls/conn.go:591 crypto/tls.(*Conn).Read(0xc0004adc08, {0xc0004c6000, 0x1000, 0x0?}) /usr/local/go/src/crypto/tls/conn.go:1385 +0x150 fp=0xc000342cc8 sp=0xc000342c58 pc=0x65e050 net/http.(*persistConn).Read(0xc0003e3560, {0xc0004c6000?, 0x729065?, 0xa48020?}) /usr/local/go/src/net/http/transport.go:2052 +0x4a fp=0xc000342d28 sp=0xc000342cc8 pc=0x73036a bufio.(*Reader).fill(0xc0003d5680) /usr/local/go/src/bufio/bufio.go:110 +0x103 fp=0xc000342d60 sp=0xc000342d28 pc=0x6a1e43 bufio.(*Reader).Peek(0xc0003d5680, 0x1) /usr/local/go/src/bufio/bufio.go:148 +0x53 fp=0xc000342d80 sp=0xc000342d60 pc=0x6a1f73 net/http.(*persistConn).readLoop(0xc0003e3560) /usr/local/go/src/net/http/transport.go:2205 +0x185 fp=0xc000342fc8 sp=0xc000342d80 pc=0x730ea5 net/http.(*Transport).dialConn.gowrap2() /usr/local/go/src/net/http/transport.go:1874 +0x25 fp=0xc000342fe0 sp=0xc000342fc8 pc=0x72f8a5 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000342fe8 sp=0xc000342fe0 pc=0x47b701 created by net/http.(*Transport).dialConn in goroutine 87 /usr/local/go/src/net/http/transport.go:1874 +0x154f goroutine 96 gp=0xc000426a80 m=nil [select]: runtime.gopark(0xc00033cf48?, 0x2?, 0x80?, 0x6a?, 0xc00033cef4?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00033cd90 sp=0xc00033cd70 pc=0x473bce runtime.selectgo(0xc00033cf48, 0xc00033cef0, 0xc000465040?, 0x0, 0x0?, 0x1) /usr/local/go/src/runtime/select.go:335 +0x7a5 fp=0xc00033ceb8 sp=0xc00033cd90 pc=0x451885 net/http.(*persistConn).writeLoop(0xc0003e3560) /usr/local/go/src/net/http/transport.go:2519 +0xe7 fp=0xc00033cfc8 sp=0xc00033ceb8 pc=0x7328a7 net/http.(*Transport).dialConn.gowrap3() /usr/local/go/src/net/http/transport.go:1875 +0x25 fp=0xc00033cfe0 sp=0xc00033cfc8 pc=0x72f845 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00033cfe8 sp=0xc00033cfe0 pc=0x47b701 created by net/http.(*Transport).dialConn in goroutine 87 /usr/local/go/src/net/http/transport.go:1875 +0x15a5 goroutine 79 gp=0xc000426c40 m=nil [IO wait]: runtime.gopark(0x15296432aba6b9ca?, 0x64fc22f789c75cae?, 0x40?, 0x6c?, 0xb?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc000235700 sp=0xc0002356e0 pc=0x473bce runtime.netpollblock(0x4921b8?, 0x40bbc6?, 0x0?) /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc000235738 sp=0xc000235700 pc=0x438437 internal/poll.runtime_pollWait(0x7f6b12c8ded8, 0x72) /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc000235758 sp=0xc000235738 pc=0x472ec5 internal/poll.(*pollDesc).wait(0xc00022c180?, 0xc000236000?, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc000235780 sp=0xc000235758 pc=0x4ef267 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).Read(0xc00022c180, {0xc000236000, 0x1000, 0x1000}) /usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc000235818 sp=0xc000235780 pc=0x4f055a net.(*netFD).Read(0xc00022c180, {0xc000236000?, 0x4f2865?, 0xc00022c180?}) /usr/local/go/src/net/fd_posix.go:55 +0x25 fp=0xc000235860 sp=0xc000235818 pc=0x5648e5 net.(*conn).Read(0xc00004a5d8, {0xc000236000?, 0xc000235a78?, 0x656c84?}) /usr/local/go/src/net/net.go:189 +0x45 fp=0xc0002358a8 sp=0xc000235860 pc=0x573045 net.(*TCPConn).Read(0x24fb?, {0xc000236000?, 0x18?, 0x2500?}) <autogenerated>:1 +0x25 fp=0xc0002358d8 sp=0xc0002358a8 pc=0x587d25 crypto/tls.(*atLeastReader).Read(0xc0002fad98, {0xc000236000?, 0x0?, 0xc0002fad98?}) /usr/local/go/src/crypto/tls/conn.go:809 +0x3b fp=0xc000235920 sp=0xc0002358d8 pc=0x65a4fb bytes.(*Buffer).ReadFrom(0xc000347438, {0xc134e0, 0xc0002fad98}) /usr/local/go/src/bytes/buffer.go:211 +0x98 fp=0xc000235978 sp=0xc000235920 pc=0x51ce58 crypto/tls.(*Conn).readFromUntil(0xc000347188, {0xc11d00, 0xc00004a5d8}, 0xc000235a10?) /usr/local/go/src/crypto/tls/conn.go:831 +0xde fp=0xc0002359b0 sp=0xc000235978 pc=0x65a6de crypto/tls.(*Conn).readRecordOrCCS(0xc000347188, 0x0) /usr/local/go/src/crypto/tls/conn.go:629 +0x3cf fp=0xc000235c28 sp=0xc0002359b0 pc=0x6577ef crypto/tls.(*Conn).readRecord(...) /usr/local/go/src/crypto/tls/conn.go:591 crypto/tls.(*Conn).Read(0xc000347188, {0xc00023a000, 0x1000, 0x11?}) /usr/local/go/src/crypto/tls/conn.go:1385 +0x150 fp=0xc000235c98 sp=0xc000235c28 pc=0x65e050 bufio.(*Reader).Read(0xc000238900, {0xc0003e7000, 0x9, 0x7425ee?}) /usr/local/go/src/bufio/bufio.go:241 +0x197 fp=0xc000235cd0 sp=0xc000235c98 pc=0x6a2377 io.ReadAtLeast({0xc120a0, 0xc000238900}, {0xc0003e7000, 0x9, 0x9}, 0x9) /usr/local/go/src/io/io.go:335 +0x90 fp=0xc000235d18 sp=0xc000235cd0 pc=0x4e6d70 io.ReadFull(...) /usr/local/go/src/io/io.go:354 net/http.http2readFrameHeader({0xc0003e7000, 0x9, 0x6fede8?}, {0xc120a0?, 0xc000238900?}) /usr/local/go/src/net/http/h2_bundle.go:1642 +0x65 fp=0xc000235d68 sp=0xc000235d18 pc=0x6d6e05 net/http.(*http2Framer).ReadFrame(0xc0003e6fc0) /usr/local/go/src/net/http/h2_bundle.go:1909 +0x85 fp=0xc000235e10 sp=0xc000235d68 pc=0x6d7545 net/http.(*http2clientConnReadLoop).run(0xc000235fa8) /usr/local/go/src/net/http/h2_bundle.go:9496 +0xda fp=0xc000235f60 sp=0xc000235e10 pc=0x6fa7da net/http.(*http2ClientConn).readLoop(0xc0001cbb00) /usr/local/go/src/net/http/h2_bundle.go:9392 +0x7c fp=0xc000235fc8 sp=0xc000235f60 pc=0x6f9dbc net/http.(*http2Transport).newClientConn.gowrap1() /usr/local/go/src/net/http/h2_bundle.go:8006 +0x25 fp=0xc000235fe0 sp=0xc000235fc8 pc=0x6f2b45 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc000235fe8 sp=0xc000235fe0 pc=0x47b701 created by net/http.(*http2Transport).newClientConn in goroutine 78 /usr/local/go/src/net/http/h2_bundle.go:8006 +0xd1b goroutine 139 gp=0xc0004fc380 m=nil [IO wait]: runtime.gopark(0xf3166ad5dab2da20?, 0x96574319107ff84?, 0x20?, 0xda?, 0xb?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00022e730 sp=0xc00022e710 pc=0x473bce runtime.netpollblock(0x4921b8?, 0x40bbc6?, 0x0?) /usr/local/go/src/runtime/netpoll.go:575 +0xf7 fp=0xc00022e768 sp=0xc00022e730 pc=0x438437 internal/poll.runtime_pollWait(0x7f6b12c8d960, 0x72) /usr/local/go/src/runtime/netpoll.go:351 +0x85 fp=0xc00022e788 sp=0xc00022e768 pc=0x472ec5 internal/poll.(*pollDesc).wait(0xc0004b7980?, 0xc0004f0000?, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27 fp=0xc00022e7b0 sp=0xc00022e788 pc=0x4ef267 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).Read(0xc0004b7980, {0xc0004f0000, 0xa000, 0xa000}) /usr/local/go/src/internal/poll/fd_unix.go:165 +0x27a fp=0xc00022e848 sp=0xc00022e7b0 pc=0x4f055a net.(*netFD).Read(0xc0004b7980, {0xc0004f0000?, 0x1049400?, 0xc00022e9d0?}) /usr/local/go/src/net/fd_posix.go:55 +0x25 fp=0xc00022e890 sp=0xc00022e848 pc=0x5648e5 net.(*conn).Read(0xc00004a788, {0xc0004f0000?, 0xc0004ba0e0?, 0x6a29b3?}) /usr/local/go/src/net/net.go:189 +0x45 fp=0xc00022e8d8 sp=0xc00022e890 pc=0x573045 net.(*TCPConn).Read(0xdb1?, {0xc0004f0000?, 0x18?, 0x7f6b12cc2218?}) <autogenerated>:1 +0x25 fp=0xc00022e908 sp=0xc00022e8d8 pc=0x587d25 crypto/tls.(*atLeastReader).Read(0xc0002fb5f0, {0xc0004f0000?, 0x0?, 0xc0002fb5f0?}) /usr/local/go/src/crypto/tls/conn.go:809 +0x3b fp=0xc00022e950 sp=0xc00022e908 pc=0x65a4fb bytes.(*Buffer).ReadFrom(0xc0004ac9b8, {0xc134e0, 0xc0002fb5f0}) /usr/local/go/src/bytes/buffer.go:211 +0x98 fp=0xc00022e9a8 sp=0xc00022e950 pc=0x51ce58 crypto/tls.(*Conn).readFromUntil(0xc0004ac708, {0xc11d00, 0xc00004a788}, 0xc00022ea40?) /usr/local/go/src/crypto/tls/conn.go:831 +0xde fp=0xc00022e9e0 sp=0xc00022e9a8 pc=0x65a6de crypto/tls.(*Conn).readRecordOrCCS(0xc0004ac708, 0x0) /usr/local/go/src/crypto/tls/conn.go:629 +0x3cf fp=0xc00022ec58 sp=0xc00022e9e0 pc=0x6577ef crypto/tls.(*Conn).readRecord(...) /usr/local/go/src/crypto/tls/conn.go:591 crypto/tls.(*Conn).Read(0xc0004ac708, {0xc00023b000, 0x1000, 0x0?}) /usr/local/go/src/crypto/tls/conn.go:1385 +0x150 fp=0xc00022ecc8 sp=0xc00022ec58 pc=0x65e050 net/http.(*persistConn).Read(0xc0003e3d40, {0xc00023b000?, 0x729065?, 0xa48020?}) /usr/local/go/src/net/http/transport.go:2052 +0x4a fp=0xc00022ed28 sp=0xc00022ecc8 pc=0x73036a bufio.(*Reader).fill(0xc0003d52c0) /usr/local/go/src/bufio/bufio.go:110 +0x103 fp=0xc00022ed60 sp=0xc00022ed28 pc=0x6a1e43 bufio.(*Reader).Peek(0xc0003d52c0, 0x1) /usr/local/go/src/bufio/bufio.go:148 +0x53 fp=0xc00022ed80 sp=0xc00022ed60 pc=0x6a1f73 net/http.(*persistConn).readLoop(0xc0003e3d40) /usr/local/go/src/net/http/transport.go:2205 +0x185 fp=0xc00022efc8 sp=0xc00022ed80 pc=0x730ea5 net/http.(*Transport).dialConn.gowrap2() /usr/local/go/src/net/http/transport.go:1874 +0x25 fp=0xc00022efe0 sp=0xc00022efc8 pc=0x72f8a5 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00022efe8 sp=0xc00022efe0 pc=0x47b701 created by net/http.(*Transport).dialConn in goroutine 110 /usr/local/go/src/net/http/transport.go:1874 +0x154f goroutine 140 gp=0xc0004fc540 m=nil [select]: runtime.gopark(0xc00033df48?, 0x2?, 0x40?, 0xc5?, 0xc00033def4?) /usr/local/go/src/runtime/proc.go:424 +0xce fp=0xc00033dd90 sp=0xc00033dd70 pc=0x473bce runtime.selectgo(0xc00033df48, 0xc00033def0, 0xc00033ae40?, 0x0, 0x0?, 0x1) /usr/local/go/src/runtime/select.go:335 +0x7a5 fp=0xc00033deb8 sp=0xc00033dd90 pc=0x451885 net/http.(*persistConn).writeLoop(0xc0003e3d40) /usr/local/go/src/net/http/transport.go:2519 +0xe7 fp=0xc00033dfc8 sp=0xc00033deb8 pc=0x7328a7 net/http.(*Transport).dialConn.gowrap3() /usr/local/go/src/net/http/transport.go:1875 +0x25 fp=0xc00033dfe0 sp=0xc00033dfc8 pc=0x72f845 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00033dfe8 sp=0xc00033dfe0 pc=0x47b701 created by net/http.(*Transport).dialConn in goroutine 110 /usr/local/go/src/net/http/transport.go:1875 +0x15a5 rax 0xfffffffffffffffc rbx 0x4 rcx 0x48068e rdx 0x80 rdi 0x4 rsi 0x7ffe2c51956c rbp 0x7ffe2c519520 rsp 0x7ffe2c5194d8 r8 0x0 r9 0x0 r10 0x4d99 r11 0x246 r12 0x7ffe2c5195b0 r13 0x1 r14 0x10a0000 r15 0x1 rip 0x48068e rflags 0x246 cs 0x33 fs 0x0 gs 0x0 exit status 2 ``` Here is Alsa, only difference to pipe is that it fails because I have no sound device in my LXC container. However after it fails, I can still reconnect to the spotify connect device, in comparison to pipe where it is not reachable / viewable anymore in spotify. ```root@debian-test:~/go-librespot# go run ./cmd/daemon INFO[0000] running go-librespot dev DEBU[0000] app state loaded DEBU[0000] fetched new accesspoints: [ap-gew4.spotify.com:4070 ap-gew4.spotify.com:443 ap-gew4.spotify.com:80 ap-guc3.spotify.com:4070 ap-gew1.spotify.com:443 ap-gae2.spotify.com:80] DEBU[0000] fetched new dealers: [gew4-dealer.spotify.com:443 guc3-dealer.spotify.com:443 gew1-dealer.spotify.com:443 gae2-dealer.spotify.com:443] DEBU[0000] fetched new spclients: [gew4-spclient.spotify.com:443 guc3-spclient.spotify.com:443 gew1-spclient.spotify.com:443 gae2-spclient.spotify.com:443] INFO[0000] zeroconf server listening on port 44815 DEBU[0000] obtained new client token: ####BLURRED##### DEBU[0000] connected to ap-gew4.spotify.com:4070 DEBU[0000] completed keyexchange DEBU[0000] completed challenge INFO[0000] authenticated AP as ####BLURRED##### INFO[0000] authenticated Login5 as ####BLURRED##### DEBU[0000] initializing zeroconf session, username: ####BLURRED##### DEBU[0000] dealer connection opened DEBU[0000] skipping packet PacketTypeSecretBlock, len: 336 DEBU[0000] skipping packet PacketTypeLicenseVersion, len: 2 DEBU[0000] skipping packet PacketTypeUnknown1f, len: 17 DEBU[0000] skipping packet PacketTypeLegacyWelcome, len: 0 DEBU[0000] skipping packet PacketTypeMercuryEvent, len: 481 DEBU[0000] received connection id: NzlmZGQxMzctNmMwZi00ZmQ4LTk3MTUtMmM2NDczNmE1ZGFkK2RlYWxlcit0Y3A6Ly8wYWNhNWEzMy5pcC5nZXc0LnNwb3RpZnkubmV0OjU3MDArMkQxQjNDRDFEQTNCNTEwOUIzQ0E5RkM2NThCOERDNzgzQUJFNEU3M0YyRTQ3QURDQTlCQjUwNkRGQ0I5NUU3Ng== DEBU[0000] put connect state because NEW_DEVICE DEBU[0000] update volume to 65535/65535 DEBU[0001] put connect state because VOLUME_CHANGED DEBU[0007] handling transfer player command from ####BLURRED##### DEBU[0007] resolved context of episode uri="spotify:show:7iZEp9f2Gg8JvKNqK3t905" DEBU[0007] shuffled context with seed 14489014476575378647 (len: 33, keep: 22) uri="spotify:show:7iZEp9f2Gg8JvKNqK3t905" DEBU[0007] loading episode (paused: true, position: 1992466ms) uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL" DEBU[0007] put connect state because PLAYER_STATE_CHANGED DEBU[0007] skipping packet PacketTypeMercuryEvent, len: 250 DEBU[0007] selected format OGG_VORBIS_96 (c551b3f2154d39489f7f031ebb7375dec9c9a9d1) uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL" DEBU[0007] requested aes key for file c551b3f2154d39489f7f031ebb7375dec9c9a9d1, gid: 0tBz3mzFkUEqtF2SpCSqSL DEBU[0007] fetched first chunk of 46, total size is 23925157 bytes uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL" DEBU[0007] fetched chunk 32/45, size: 524288 uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL" DEBU[0007] created new output device INFO[0007] loaded episode "E01 Avignon: Der Prozess Pelicot – Der Glaskasten" (paused: true, position: 1992466ms, duration: 2783660ms, prefetched: false) uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL" DEBU[0007] put connect state because PLAYER_STATE_CHANGED DEBU[0007] sending successful reply for dealer request DEBU[0007] skipping dealer message uri=social-connect/v2/broadcast_status_update DEBU[0007] put connect state because PLAYER_STATE_CHANGED DEBU[0007] fetched chunk 1/45, size: 524288 uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL" DEBU[0008] fetched chunk 35/45, size: 524288 uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL" DEBU[0008] fetched chunk 34/45, size: 524288 uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL" DEBU[0008] fetched chunk 2/45, size: 524288 uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL" DEBU[0008] fetched chunk 33/45, size: 524288 uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL" DEBU[0008] fetched chunk 3/45, size: 524288 uri="spotify:episode:0tBz3mzFkUEqtF2SpCSqSL" DEBU[0010] handling resume player command from 3f44cde3470626fbaabb160a10c5dad771998d6a ALSA lib confmisc.c:855:(parse_card) cannot find card '0' ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM default WARN[0010] failed handling dealer request error="failed starting playback: ALSA error at snd_pcm_open: No such file or directory"```
Author
Owner

@devgianlu commented on GitHub (Jan 16, 2025):

It seems that the issue is:

goroutine 50 gp=0xc000427c00 m=3 mp=0xc000062e08 [syscall]:
syscall.Syscall6(0x101, 0xffffffffffffff9c, 0xc00003a978, 0x80001, 0x0, 0x0, 0x0)
        /usr/local/go/src/syscall/syscall_linux.go:95 +0x39 fp=0xc00006fc20 sp=0xc00006fbc0 pc=0x493f39
syscall.openat(0xffffffffffffff9c, {0xc00003a528?, 0x30?}, 0x80001, 0x0)
        /usr/local/go/src/syscall/zsyscall_linux_amd64.go:98 +0x90 fp=0xc00006fc88 sp=0xc00006fc20 pc=0x491510
syscall.Open(...)
        /usr/local/go/src/syscall/syscall_linux.go:284
os.open({0xc00003a528?, 0x414e3e?}, 0x7f6b12c69d58?, 0x8470e?)
        /usr/local/go/src/os/file_open_unix.go:15 +0x2b fp=0xc00006fcc0 sp=0xc00006fc88 pc=0x4fbf4b
os.openFileNolog.func1()
        /usr/local/go/src/os/file_unix.go:279 +0x92 fp=0xc00006fd08 sp=0xc00006fcc0 pc=0x4fcf32
os.ignoringEINTR(...)
        /usr/local/go/src/os/file_posix.go:251
os.openFileNolog({0xc00003a528, 0x17}, 0x1, 0x184501?)
        /usr/local/go/src/os/file_unix.go:278 +0xae fp=0xc00006fda0 sp=0xc00006fd08 pc=0x4fcd4e
os.OpenFile({0xc00003a528, 0x17}, 0x1, 0x0)
        /usr/local/go/src/os/file.go:385 +0x3e fp=0xc00006fdd0 sp=0xc00006fda0 pc=0x4fb5de
github.com/devgianlu/go-librespot/output.newPipeOutput(0xc0004b5080)
        /root/go-librespot/output/driver-pipe.go:73 +0x1cd fp=0xc00006fe28 sp=0xc00006fdd0 pc=0x8610cd
github.com/devgianlu/go-librespot/output.NewOutput(0x20?)
        /root/go-librespot/output/output.go:127 +0x3f fp=0xc00006fe70 sp=0xc00006fe28 pc=0x862b3f
github.com/devgianlu/go-librespot/player.NewPlayer.func1({0xc12920, 0xc0001f5e00}, 0x3f800000)
        /root/go-librespot/player/player.go:140 +0x198 fp=0xc00006fe98 sp=0xc00006fe70 pc=0x88ead8
github.com/devgianlu/go-librespot/player.(*Player).manageLoop(0xc0003a77a0)
        /root/go-librespot/player/player.go:194 +0x2de fp=0xc00006ffc8 sp=0xc00006fe98 pc=0x88edfe
github.com/devgianlu/go-librespot/player.NewPlayer.gowrap1()
        /root/go-librespot/player/player.go:162 +0x25 fp=0xc00006ffe0 sp=0xc00006ffc8 pc=0x88e905
runtime.goexit({})
        /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00006ffe8 sp=0xc00006ffe0 pc=0x47b701
created by github.com/devgianlu/go-librespot/player.NewPlayer in goroutine 1
        /root/go-librespot/player/player.go:162 +0x19a

Calling open a pipe will block until it is opened on the other side too. Have you tried starting owntone first?

<!-- gh-comment-id:2596970479 --> @devgianlu commented on GitHub (Jan 16, 2025): It seems that the issue is: ``` goroutine 50 gp=0xc000427c00 m=3 mp=0xc000062e08 [syscall]: syscall.Syscall6(0x101, 0xffffffffffffff9c, 0xc00003a978, 0x80001, 0x0, 0x0, 0x0) /usr/local/go/src/syscall/syscall_linux.go:95 +0x39 fp=0xc00006fc20 sp=0xc00006fbc0 pc=0x493f39 syscall.openat(0xffffffffffffff9c, {0xc00003a528?, 0x30?}, 0x80001, 0x0) /usr/local/go/src/syscall/zsyscall_linux_amd64.go:98 +0x90 fp=0xc00006fc88 sp=0xc00006fc20 pc=0x491510 syscall.Open(...) /usr/local/go/src/syscall/syscall_linux.go:284 os.open({0xc00003a528?, 0x414e3e?}, 0x7f6b12c69d58?, 0x8470e?) /usr/local/go/src/os/file_open_unix.go:15 +0x2b fp=0xc00006fcc0 sp=0xc00006fc88 pc=0x4fbf4b os.openFileNolog.func1() /usr/local/go/src/os/file_unix.go:279 +0x92 fp=0xc00006fd08 sp=0xc00006fcc0 pc=0x4fcf32 os.ignoringEINTR(...) /usr/local/go/src/os/file_posix.go:251 os.openFileNolog({0xc00003a528, 0x17}, 0x1, 0x184501?) /usr/local/go/src/os/file_unix.go:278 +0xae fp=0xc00006fda0 sp=0xc00006fd08 pc=0x4fcd4e os.OpenFile({0xc00003a528, 0x17}, 0x1, 0x0) /usr/local/go/src/os/file.go:385 +0x3e fp=0xc00006fdd0 sp=0xc00006fda0 pc=0x4fb5de github.com/devgianlu/go-librespot/output.newPipeOutput(0xc0004b5080) /root/go-librespot/output/driver-pipe.go:73 +0x1cd fp=0xc00006fe28 sp=0xc00006fdd0 pc=0x8610cd github.com/devgianlu/go-librespot/output.NewOutput(0x20?) /root/go-librespot/output/output.go:127 +0x3f fp=0xc00006fe70 sp=0xc00006fe28 pc=0x862b3f github.com/devgianlu/go-librespot/player.NewPlayer.func1({0xc12920, 0xc0001f5e00}, 0x3f800000) /root/go-librespot/player/player.go:140 +0x198 fp=0xc00006fe98 sp=0xc00006fe70 pc=0x88ead8 github.com/devgianlu/go-librespot/player.(*Player).manageLoop(0xc0003a77a0) /root/go-librespot/player/player.go:194 +0x2de fp=0xc00006ffc8 sp=0xc00006fe98 pc=0x88edfe github.com/devgianlu/go-librespot/player.NewPlayer.gowrap1() /root/go-librespot/player/player.go:162 +0x25 fp=0xc00006ffe0 sp=0xc00006ffc8 pc=0x88e905 runtime.goexit({}) /usr/local/go/src/runtime/asm_amd64.s:1700 +0x1 fp=0xc00006ffe8 sp=0xc00006ffe0 pc=0x47b701 created by github.com/devgianlu/go-librespot/player.NewPlayer in goroutine 1 /root/go-librespot/player/player.go:162 +0x19a ``` Calling open a pipe will block until it is opened on the other side too. Have you tried starting owntone first?
Author
Owner

@FrancisHGR commented on GitHub (Jan 16, 2025):

Good idea, I verified owntone and its running and other side of fifo connection should be setup...

<!-- gh-comment-id:2597020818 --> @FrancisHGR commented on GitHub (Jan 16, 2025): Good idea, I verified owntone and its running and other side of fifo connection should be setup...
Author
Owner

@FrancisHGR commented on GitHub (Jan 17, 2025):

Okay it is working now for me. I have built another version, this time via a docker container (golang:1.23.5-bookworm), no Debian lxc that I had before. I can't explain why this version runs and the other one not.

What I can confirm that I got an error related to the fifo when trying to access the other lxc go-librespot player via the docker golang-bookworm one. So your analysis was spot on, even though I can't explain what the difference is. I have of course recreated the fifo on the other build multiple times.

Without understanding the root cause I can say that I have a working version.

I want to extend my warmest gratitude to not only this great piece of software, but also to your amazingly fast responsiveness and help. Mille graze @devgianlu !

<!-- gh-comment-id:2599333920 --> @FrancisHGR commented on GitHub (Jan 17, 2025): Okay it is working now for me. I have built another version, this time via a docker container (golang:1.23.5-bookworm), no Debian lxc that I had before. I can't explain why this version runs and the other one not. What I can confirm that I got an error related to the fifo when trying to access the other lxc go-librespot player via the docker golang-bookworm one. So your analysis was spot on, even though I can't explain what the difference is. I have of course recreated the fifo on the other build multiple times. Without understanding the root cause I can say that I have a working version. I want to extend my warmest gratitude to not only this great piece of software, but also to your amazingly fast responsiveness and help. Mille graze @devgianlu !
Author
Owner

@devgianlu commented on GitHub (Jan 18, 2025):

That's great! I'll close this, but keep us updated if you eventually figure out what was the cause.

<!-- gh-comment-id:2599726925 --> @devgianlu commented on GitHub (Jan 18, 2025): That's great! I'll close this, but keep us updated if you eventually figure out what was the cause.
Author
Owner

@josephjmay commented on GitHub (Jan 23, 2025):

fwiw...I had the same issue using the prepackaged release binaries in go-librespot_linux_x86_64.tar.gz on Debian Bullseye x64.

DEBU[0007] fetched chunk 3/16, size: 524288              uri="spotify:track:1Iz4zgoRVfSiC0OIjx9S3m"
DEBU[0007] fetched chunk 15/16, size: 524288             uri="spotify:track:1Iz4zgoRVfSiC0OIjx9S3m"
TRAC[0007] seek to 207663ms (diff: 140ms, samples: 9157938, bytes: 8295103)  uri="spotify:track:1Iz4zgoRVfSiC0OIjx9S3m"
WARN[0007] failed handling dealer request          error="failed loading current track (transfer): failed setting stream for spotify:track:1Iz4zgoRVfSiC0OIjx9S3m: unknown audio backend: pipe"
DEBU[0007] put connect state because VOLUME_CHANGED
TRAC[0007] emitting websocket event: volume

I installed Go, cloned the repo, and launched go-librespot with go run ./cmd/daemon and it works without issue

<!-- gh-comment-id:2610981413 --> @josephjmay commented on GitHub (Jan 23, 2025): fwiw...I had the same issue using the prepackaged release binaries in [go-librespot_linux_x86_64.tar.gz](https://github.com/devgianlu/go-librespot/releases/download/v0.1.3/go-librespot_linux_x86_64.tar.gz) on Debian Bullseye x64. ``` DEBU[0007] fetched chunk 3/16, size: 524288 uri="spotify:track:1Iz4zgoRVfSiC0OIjx9S3m" DEBU[0007] fetched chunk 15/16, size: 524288 uri="spotify:track:1Iz4zgoRVfSiC0OIjx9S3m" TRAC[0007] seek to 207663ms (diff: 140ms, samples: 9157938, bytes: 8295103) uri="spotify:track:1Iz4zgoRVfSiC0OIjx9S3m" WARN[0007] failed handling dealer request error="failed loading current track (transfer): failed setting stream for spotify:track:1Iz4zgoRVfSiC0OIjx9S3m: unknown audio backend: pipe" DEBU[0007] put connect state because VOLUME_CHANGED TRAC[0007] emitting websocket event: volume ``` I installed Go, cloned the repo, and launched go-librespot with `go run ./cmd/daemon` and it works without issue
Author
Owner

@devgianlu commented on GitHub (Jan 23, 2025):

@josephjmay I haven't made a new release since the addition of the pipe output, but I will in the next couple of days.

<!-- gh-comment-id:2610992304 --> @devgianlu commented on GitHub (Jan 23, 2025): @josephjmay I haven't made a new release since the addition of the pipe output, but I will in the next couple of days.
Author
Owner

@FrancisHGR commented on GitHub (Jan 23, 2025):

I can add that the problem is constantly coming back. Sometimes it’s working and sometimes it crashes like described above.

I didn’t have a chance to investigate the background why it crashes.

Looking forward to a new release.

<!-- gh-comment-id:2611040696 --> @FrancisHGR commented on GitHub (Jan 23, 2025): I can add that the problem is constantly coming back. Sometimes it’s working and sometimes it crashes like described above. I didn’t have a chance to investigate the background why it crashes. Looking forward to a new release.
Author
Owner

@devgianlu commented on GitHub (Jan 24, 2025):

I have released v0.2.0

<!-- gh-comment-id:2612121100 --> @devgianlu commented on GitHub (Jan 24, 2025): I have released [v0.2.0](https://github.com/devgianlu/go-librespot/releases/tag/v0.2.0)
Author
Owner

@josephjmay commented on GitHub (Jan 24, 2025):

I have released v0.2.0

Thanks for the update! I installed the 0.2.0 binary, and the new pipe feature is working.

Please consider adding a log event in the future to note when go-librespot is waiting for a program to read the pipe. Likely that will be a common, if obvious, misstep.

<!-- gh-comment-id:2612741606 --> @josephjmay commented on GitHub (Jan 24, 2025): > I have released [v0.2.0](https://github.com/devgianlu/go-librespot/releases/tag/v0.2.0) Thanks for the update! I installed the 0.2.0 binary, and the new pipe feature is working. Please consider adding a log event in the future to note when go-librespot is waiting for a program to read the pipe. Likely that will be a common, if obvious, misstep.
Author
Owner

@FrancisHGR commented on GitHub (Jan 27, 2025):

I have released v0.2.0

Thanks, works spot on! Metadata pipe https://github.com/devgianlu/go-librespot/issues/157#issue-2768127385 would be icing on cake, though super happy about this program!

<!-- gh-comment-id:2616576352 --> @FrancisHGR commented on GitHub (Jan 27, 2025): > I have released [v0.2.0](https://github.com/devgianlu/go-librespot/releases/tag/v0.2.0) Thanks, works spot on! Metadata pipe https://github.com/devgianlu/go-librespot/issues/157#issue-2768127385 would be icing on cake, though super happy about this program!
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/go-librespot#101
No description provided.