[GH-ISSUE #196] did not receive last pong from dealer when using PULSE #128

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

Originally created by @JaragonCR on GitHub (Aug 20, 2025).
Original GitHub issue: https://github.com/devgianlu/go-librespot/issues/196

When using native pulse the pongs keep failing, moved to ALSA with an ALSA bridge and it works fine.

Alsa Bridge
RUN curl -skL https://raw.githubusercontent.com/balena-io-experimental/audio/master/scripts/alsa-bridge/alpine-setup.sh | sh

Generated config:
log_level: info
device_name: Pergola-test
device_type: speaker
audio_backend: pulseaudio
bitrate: 320
normalisation_disabled: true
credentials:
type: "zeroconf"
INFO[0000] running go-librespot b39e5e50
INFO[0000] zeroconf server listening on port 51377
INFO[0021] authenticated AP username="22pq"
INFO[0021] authenticated Login5 username="22
pq"
INFO[0021] accepted zeroconf from Jorge's S24 Ultra username="22*********************pq"
ERRO[0112] did not receive last pong from dealer, 60s passed
ERRO[0142] did not receive last pong from dealer, 90s passed
SIGABRT: abort
PC=0x408d40 m=0 sigcode=0

goroutine 0 gp=0x10d1f20 m=0 mp=0x10d2560 [idle]:
runtime/internal/syscall.Syscall6(0x16, 0x4, 0x7fefb61e98, 0x80, 0xc79, 0x0, 0x0)
/usr/local/go/src/runtime/internal/syscall/asm_linux_arm64.s:17 +0x20 fp=0x7fefb61dd0 sp=0x7fefb61dd0 pc=0x408d40
runtime/internal/syscall.EpollWait(0x0?, {0x7fefb61e98?, 0x7fefb61e78?, 0x43b5a0?}, 0x0?, 0x0?)
/usr/local/go/src/runtime/internal/syscall/syscall_linux.go:55 +0x58 fp=0x7fefb61e40 sp=0x7fefb61dd0 pc=0x408c78
runtime.netpoll(0xbe604640)
/usr/local/go/src/runtime/netpoll_epoll.go:118 +0xf4 fp=0x7fefb626d0 sp=0x7fefb61e40 pc=0x43b414
runtime.findRunnable()
/usr/local/go/src/runtime/proc.go:3470 +0x9ec fp=0x7fefb62840 sp=0x7fefb626d0 pc=0x447ecc
runtime.schedule()
/usr/local/go/src/runtime/proc.go:3868 +0x98 fp=0x7fefb62880 sp=0x7fefb62840 pc=0x4498f8
runtime.park_m(0x40003b41c0)
/usr/local/go/src/runtime/proc.go:4036 +0x240 fp=0x7fefb628e0 sp=0x7fefb62880 pc=0x449f90
runtime.mcall()
/usr/local/go/src/runtime/asm_arm64.s:192 +0x54 fp=0x7fefb628f0 sp=0x7fefb628e0 pc=0x472cd4

goroutine 1 gp=0x40000021c0 m=nil [select, 2 minutes]:
runtime.gopark(0x4000047cb0?, 0x2?, 0x48?, 0x7b?, 0x4000047c4c?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000249ae0 sp=0x4000249ac0 pc=0x4418a8
runtime.selectgo(0x4000249cb0, 0x4000047c48, 0x40003aa1e0?, 0x0, 0x1d8?, 0x1)
/usr/local/go/src/runtime/select.go:327 +0x614 fp=0x4000249bf0 sp=0x4000249ae0 pc=0x454294
github.com/devgianlu/go-librespot/zeroconf.(*Zeroconf).Serve(0x4000579e00, 0x4000249dc8)
/go-librespot/zeroconf/zeroconf.go:283 +0x1f4 fp=0x4000249d40 sp=0x4000249bf0 pc=0x8c6af4
main.(*App).withAppPlayer(0x400033a000, {0xc11378, 0x11387e0}, 0x4000338130)
/go-librespot/cmd/daemon/main.go:321 +0x450 fp=0x4000249e50 sp=0x4000249d40 pc=0x94db10
main.(*App).Zeroconf(...)
/go-librespot/cmd/daemon/main.go:170
main.main()
/go-librespot/cmd/daemon/main.go:548 +0x410 fp=0x4000249f40 sp=0x4000249e50 pc=0x94f660
runtime.main()
/usr/local/go/src/runtime/proc.go:271 +0x28c fp=0x4000249fd0 sp=0x4000249f40 pc=0x44147c
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000249fd0 sp=0x4000249fd0 pc=0x475214

goroutine 2 gp=0x4000002c40 m=nil [force gc (idle), 2 minutes]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000060f90 sp=0x4000060f70 pc=0x4418a8
runtime.goparkunlock(...)
/usr/local/go/src/runtime/proc.go:408
runtime.forcegchelper()
/usr/local/go/src/runtime/proc.go:326 +0xb8 fp=0x4000060fd0 sp=0x4000060f90 pc=0x441738
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000060fd0 sp=0x4000060fd0 pc=0x475214
created by runtime.init.6 in goroutine 1
/usr/local/go/src/runtime/proc.go:314 +0x24

goroutine 18 gp=0x4000102380 m=nil [GC sweep wait]:
runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x400005c760 sp=0x400005c740 pc=0x4418a8
runtime.goparkunlock(...)
/usr/local/go/src/runtime/proc.go:408
runtime.bgsweep(0x400010e000)
/usr/local/go/src/runtime/mgcsweep.go:318 +0x108 fp=0x400005c7b0 sp=0x400005c760 pc=0x42cda8
runtime.gcenable.gowrap1()
/usr/local/go/src/runtime/mgc.go:203 +0x28 fp=0x400005c7d0 sp=0x400005c7b0 pc=0x420f58
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x400005c7d0 sp=0x400005c7d0 pc=0x475214
created by runtime.gcenable in goroutine 1
/usr/local/go/src/runtime/mgc.go:203 +0x6c

goroutine 19 gp=0x4000102540 m=nil [GC scavenge wait]:
runtime.gopark(0x88da1f?, 0x12aa861c?, 0x0?, 0x0?, 0x0?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x400005cf60 sp=0x400005cf40 pc=0x4418a8
runtime.goparkunlock(...)
/usr/local/go/src/runtime/proc.go:408
runtime.(*scavengerState).park(0x10d1a00)
/usr/local/go/src/runtime/mgcscavenge.go:425 +0x5c fp=0x400005cf90 sp=0x400005cf60 pc=0x42a73c
runtime.bgscavenge(0x400010e000)
/usr/local/go/src/runtime/mgcscavenge.go:658 +0xac fp=0x400005cfb0 sp=0x400005cf90 pc=0x42acec
runtime.gcenable.gowrap2()
/usr/local/go/src/runtime/mgc.go:204 +0x28 fp=0x400005cfd0 sp=0x400005cfb0 pc=0x420ef8
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x400005cfd0 sp=0x400005cfd0 pc=0x475214
created by runtime.gcenable in goroutine 1
/usr/local/go/src/runtime/mgc.go:204 +0xac

goroutine 20 gp=0x4000102a80 m=nil [finalizer wait]:
runtime.gopark(0x0?, 0x4002310a30?, 0x70?, 0x60?, 0x1000000010?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000436d80 sp=0x4000436d60 pc=0x4418a8
runtime.runfinq()
/usr/local/go/src/runtime/mfinal.go:194 +0x108 fp=0x4000436fd0 sp=0x4000436d80 pc=0x420028
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000436fd0 sp=0x4000436fd0 pc=0x475214
created by runtime.createfing in goroutine 1
/usr/local/go/src/runtime/mfinal.go:164 +0x80

goroutine 100 gp=0x400028f340 m=nil [select]:
runtime.gopark(0x400033f788?, 0x2?, 0x58?, 0xf6?, 0x400033f754?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x400033f600 sp=0x400033f5e0 pc=0x4418a8
runtime.selectgo(0x400033f788, 0x400033f750, 0x10d1860?, 0x0, 0x0?, 0x1)
/usr/local/go/src/runtime/select.go:327 +0x614 fp=0x400033f710 sp=0x400033f600 pc=0x454294
github.com/devgianlu/go-librespot/ap.(*Accesspoint).pongAckTicker(0x400045c000)
/go-librespot/ap/ap.go:355 +0x74 fp=0x400033f7b0 sp=0x400033f710 pc=0x7d4634
github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1.gowrap2()
/go-librespot/ap/ap.go:264 +0x28 fp=0x400033f7d0 sp=0x400033f7b0 pc=0x7d3ce8
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x400033f7d0 sp=0x400033f7d0 pc=0x475214
created by github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1 in goroutine 66
/go-librespot/ap/ap.go:264 +0x108

goroutine 3 gp=0x400028f880 m=nil [GC worker (idle)]:
runtime.gopark(0x38a718243bf8?, 0x3?, 0xa9?, 0x65?, 0x0?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000340f30 sp=0x4000340f10 pc=0x4418a8
runtime.gcBgMarkWorker()
/usr/local/go/src/runtime/mgc.go:1310 +0xd8 fp=0x4000340fd0 sp=0x4000340f30 pc=0x423058
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000340fd0 sp=0x4000340fd0 pc=0x475214
created by runtime.gcBgMarkStartWorkers in goroutine 40
/usr/local/go/src/runtime/mgc.go:1234 +0x28

goroutine 42 gp=0x40003b5340 m=nil [GC worker (idle)]:
runtime.gopark(0x38a7183004a4?, 0x1?, 0x6?, 0x18?, 0x0?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000341730 sp=0x4000341710 pc=0x4418a8
runtime.gcBgMarkWorker()
/usr/local/go/src/runtime/mgc.go:1310 +0xd8 fp=0x40003417d0 sp=0x4000341730 pc=0x423058
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40003417d0 sp=0x40003417d0 pc=0x475214
created by runtime.gcBgMarkStartWorkers in goroutine 40
/usr/local/go/src/runtime/mgc.go:1234 +0x28

goroutine 43 gp=0x40003b5500 m=nil [GC worker (idle), 1 minutes]:
runtime.gopark(0x38a718240f1f?, 0x3?, 0x1c?, 0x6e?, 0x0?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000341f30 sp=0x4000341f10 pc=0x4418a8
runtime.gcBgMarkWorker()
/usr/local/go/src/runtime/mgc.go:1310 +0xd8 fp=0x4000341fd0 sp=0x4000341f30 pc=0x423058
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000341fd0 sp=0x4000341fd0 pc=0x475214
created by runtime.gcBgMarkStartWorkers in goroutine 40
/usr/local/go/src/runtime/mgc.go:1234 +0x28

goroutine 4 gp=0x4000003500 m=nil [GC worker (idle)]:
runtime.gopark(0x38a7182403d6?, 0x3?, 0x91?, 0x5e?, 0x40003049a0?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000340730 sp=0x4000340710 pc=0x4418a8
runtime.gcBgMarkWorker()
/usr/local/go/src/runtime/mgc.go:1310 +0xd8 fp=0x40003407d0 sp=0x4000340730 pc=0x423058
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40003407d0 sp=0x40003407d0 pc=0x475214
created by runtime.gcBgMarkStartWorkers in goroutine 40
/usr/local/go/src/runtime/mgc.go:1234 +0x28

goroutine 26 gp=0x40001db6c0 m=nil [chan receive, 2 minutes]:
runtime.gopark(0x60?, 0x7f9e317f18?, 0x60?, 0x0?, 0x4000067808?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000063670 sp=0x4000063650 pc=0x4418a8
runtime.chanrecv(0x40001180c0, 0x4000063790, 0x1)
/usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x40000636f0 sp=0x4000063670 pc=0x40d234
runtime.chanrecv2(0x0?, 0x0?)
/usr/local/go/src/runtime/chan.go:447 +0x14 fp=0x4000063720 sp=0x40000636f0 pc=0x40ce14
main.(*App).withAppPlayer.func1()
/go-librespot/cmd/daemon/main.go:268 +0x60 fp=0x40000637d0 sp=0x4000063720 pc=0x94e510
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40000637d0 sp=0x40000637d0 pc=0x475214
created by main.(*App).withAppPlayer in goroutine 1
/go-librespot/cmd/daemon/main.go:265 +0x36c

goroutine 27 gp=0x40001dbc00 m=nil [chan receive, 2 minutes]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000063e60 sp=0x4000063e40 pc=0x4418a8
runtime.chanrecv(0x40003241e0, 0x4000063fb0, 0x1)
/usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x4000063ee0 sp=0x4000063e60 pc=0x40d234
runtime.chanrecv2(0x0?, 0x0?)
/usr/local/go/src/runtime/chan.go:447 +0x14 fp=0x4000063f10 sp=0x4000063ee0 pc=0x40ce14
main.(*App).withAppPlayer.func2()
/go-librespot/cmd/daemon/main.go:284 +0x6c fp=0x4000063fd0 sp=0x4000063f10 pc=0x94e19c
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000063fd0 sp=0x4000063fd0 pc=0x475214
created by main.(*App).withAppPlayer in goroutine 1
/go-librespot/cmd/daemon/main.go:281 +0x404

goroutine 28 gp=0x40001dbdc0 m=nil [IO wait]:
runtime.gopark(0x4000071be8?, 0x4e5f70?, 0x0?, 0x0?, 0x400004e008?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000071ba0 sp=0x4000071b80 pc=0x4418a8
runtime.netpollblock(0x4000071c38?, 0x4e3f84?, 0x0?)
/usr/local/go/src/runtime/netpoll.go:573 +0x158 fp=0x4000071be0 sp=0x4000071ba0 pc=0x43a8e8
internal/poll.runtime_pollWait(0x7f57859e40, 0x72)
/usr/local/go/src/runtime/netpoll.go:345 +0xa0 fp=0x4000071c10 sp=0x4000071be0 pc=0x46f990
internal/poll.(*pollDesc).wait(0x8?, 0x8?, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 fp=0x4000071c40 sp=0x4000071c10 pc=0x4df5e8
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0x40002de180)
/usr/local/go/src/internal/poll/fd_unix.go:611 +0x250 fp=0x4000071cf0 sp=0x4000071c40 pc=0x4e4070
net.(*netFD).accept(0x40002de180)
/usr/local/go/src/net/fd_unix.go:172 +0x28 fp=0x4000071db0 sp=0x4000071cf0 pc=0x547bd8
net.(*TCPListener).accept(0x40005448c0)
/usr/local/go/src/net/tcpsock_posix.go:159 +0x28 fp=0x4000071de0 sp=0x4000071db0 pc=0x55d968
net.(*TCPListener).Accept(0x40005448c0)
/usr/local/go/src/net/tcpsock.go:327 +0x2c fp=0x4000071e20 sp=0x4000071de0 pc=0x55cb7c
net/http.(*onceCloseListener).Accept(0x40004901b0?)
:1 +0x30 fp=0x4000071e40 sp=0x4000071e20 pc=0x6d13d0
net/http.(*Server).Serve(0x4000092000, {0xc10220, 0x40005448c0})
/usr/local/go/src/net/http/server.go:3260 +0x2a8 fp=0x4000071f70 sp=0x4000071e40 pc=0x6af978
net/http.Serve(...)
/usr/local/go/src/net/http/server.go:2799
github.com/devgianlu/go-librespot/zeroconf.(*Zeroconf).Serve.func2()
/go-librespot/zeroconf/zeroconf.go:280 +0x84 fp=0x4000071fd0 sp=0x4000071f70 pc=0x8c6be4
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000071fd0 sp=0x4000071fd0 pc=0x475214
created by github.com/devgianlu/go-librespot/zeroconf.(*Zeroconf).Serve in goroutine 1
/go-librespot/zeroconf/zeroconf.go:280 +0x138

goroutine 44 gp=0x40003b4000 m=nil [IO wait]:
runtime.gopark(0x50?, 0x4001d67638?, 0x58?, 0xad?, 0x413f30?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x40001aace0 sp=0x40001aacc0 pc=0x4418a8
runtime.netpollblock(0xb0434b?, 0x3?, 0x0?)
/usr/local/go/src/runtime/netpoll.go:573 +0x158 fp=0x40001aad20 sp=0x40001aace0 pc=0x43a8e8
internal/poll.runtime_pollWait(0x7f57859c50, 0x72)
/usr/local/go/src/runtime/netpoll.go:345 +0xa0 fp=0x40001aad50 sp=0x40001aad20 pc=0x46f990
internal/poll.(*pollDesc).wait(0x40002df000?, 0x413a08?, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 fp=0x40001aad80 sp=0x40001aad50 pc=0x4df5e8
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0x40002df000, 0x4000bff720)
/usr/local/go/src/internal/poll/fd_unix.go:708 +0x130 fp=0x40001aade0 sp=0x40001aad80 pc=0x4e4d40
net.(*rawConn).Read(0x4000122070, 0x0?)
/usr/local/go/src/net/rawconn.go:44 +0x30 fp=0x40001aae20 sp=0x40001aade0 pc=0x558910
golang.org/x/net/internal/socket.(*Conn).recvMsg(0x4000544c40, 0x4001d8a6c0, 0x0)
/go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/rawconn_msg.go:27 +0x138 fp=0x40001aae80 sp=0x40001aae20 pc=0x86b208
golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
/go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/socket.go:247
golang.org/x/net/ipv4.(*payloadHandler).ReadFrom(0x40005775a0, {0x400034e000, 0x10000, 0x10000})
/go/pkg/mod/golang.org/x/net@v0.26.0/ipv4/payload_cmsg.go:31 +0x468 fp=0x40001aaf30 sp=0x40001aae80 pc=0x86f028
github.com/grandcat/zeroconf.(*Server).recv4(0x400055dce0, 0x4000577590)
/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:254 +0xc4 fp=0x40001aafb0 sp=0x40001aaf30 pc=0x8c2464
github.com/grandcat/zeroconf.(*Server).mainloop.gowrap1()
/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:188 +0x2c fp=0x40001aafd0 sp=0x40001aafb0 pc=0x8c20ac
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40001aafd0 sp=0x40001aafd0 pc=0x475214
created by github.com/grandcat/zeroconf.(*Server).mainloop in goroutine 24
/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:188 +0x78

goroutine 45 gp=0x40003b41c0 m=nil [IO wait]:
runtime.gopark(0x50?, 0x4001d67680?, 0x8?, 0x6d?, 0x413f30?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x40001a6c90 sp=0x40001a6c70 pc=0x4418a8
runtime.netpollblock(0xb0434b?, 0x3?, 0x0?)
/usr/local/go/src/runtime/netpoll.go:573 +0x158 fp=0x40001a6cd0 sp=0x40001a6c90 pc=0x43a8e8
internal/poll.runtime_pollWait(0x7f57859b58, 0x72)
/usr/local/go/src/runtime/netpoll.go:345 +0xa0 fp=0x40001a6d00 sp=0x40001a6cd0 pc=0x46f990
internal/poll.(*pollDesc).wait(0x40002df080?, 0x413a08?, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 fp=0x40001a6d30 sp=0x40001a6d00 pc=0x4df5e8
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).RawRead(0x40002df080, 0x4000bff770)
/usr/local/go/src/internal/poll/fd_unix.go:708 +0x130 fp=0x40001a6d90 sp=0x40001a6d30 pc=0x4e4d40
net.(*rawConn).Read(0x4000122080, 0x0?)
/usr/local/go/src/net/rawconn.go:44 +0x30 fp=0x40001a6dd0 sp=0x40001a6d90 pc=0x558910
golang.org/x/net/internal/socket.(*Conn).recvMsg(0x4000544c60, 0x4001d8a720, 0x0)
/go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/rawconn_msg.go:27 +0x138 fp=0x40001a6e30 sp=0x40001a6dd0 pc=0x86b208
golang.org/x/net/internal/socket.(*Conn).RecvMsg(...)
/go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/socket.go:247
golang.org/x/net/ipv6.(*payloadHandler).ReadFrom(0x40005775f0, {0x4000232000, 0x10000, 0x10000})
/go/pkg/mod/golang.org/x/net@v0.26.0/ipv6/payload_cmsg.go:31 +0x344 fp=0x40001a6f30 sp=0x40001a6e30 pc=0x8725a4
github.com/grandcat/zeroconf.(*Server).recv6(0x400055dce0, 0x40005775e0)
/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:282 +0xc4 fp=0x40001a6fb0 sp=0x40001a6f30 pc=0x8c2624
github.com/grandcat/zeroconf.(*Server).mainloop.gowrap2()
/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:191 +0x2c fp=0x40001a6fd0 sp=0x40001a6fb0 pc=0x8c204c
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40001a6fd0 sp=0x40001a6fd0 pc=0x475214
created by github.com/grandcat/zeroconf.(*Server).mainloop in goroutine 24
/go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:191 +0xd8

goroutine 194 gp=0x4000003dc0 m=nil [IO wait]:
runtime.gopark(0x4000402300?, 0x40003b7950?, 0x0?, 0xe7?, 0x95ab3a?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x40001a5be0 sp=0x40001a5bc0 pc=0x4418a8
runtime.netpollblock(0x0?, 0xffffffff?, 0xff?)
/usr/local/go/src/runtime/netpoll.go:573 +0x158 fp=0x40001a5c20 sp=0x40001a5be0 pc=0x43a8e8
internal/poll.runtime_pollWait(0x7f5750af08, 0x72)
/usr/local/go/src/runtime/netpoll.go:345 +0xa0 fp=0x40001a5c50 sp=0x40001a5c20 pc=0x46f990
internal/poll.(*pollDesc).wait(0x40005f0700?, 0x4000498000?, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 fp=0x40001a5c80 sp=0x40001a5c50 pc=0x4df5e8
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x40005f0700, {0x4000498000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:164 +0x200 fp=0x40001a5d20 sp=0x40001a5c80 pc=0x4e0930
net.(*netFD).Read(0x40005f0700, {0x4000498000?, 0x400040c000?, 0x4000460070?})
/usr/local/go/src/net/fd_posix.go:55 +0x28 fp=0x40001a5d70 sp=0x40001a5d20 pc=0x545ff8
net.(*conn).Read(0x40002f40b8, {0x4000498000?, 0x0?, 0x5?})
/usr/local/go/src/net/net.go:185 +0x34 fp=0x40001a5dc0 sp=0x40001a5d70 pc=0x5549f4
net.(*TCPConn).Read(0xc1ba88?, {0x4000498000?, 0x0?, 0x4000492748?})
:1 +0x2c fp=0x40001a5df0 sp=0x40001a5dc0 pc=0x56605c
bufio.(*Reader).Read(0x4000402300, {0x40003b7950, 0x4, 0x4000492748?})
/usr/local/go/src/bufio/bufio.go:241 +0x1b4 fp=0x40001a5e30 sp=0x40001a5df0 pc=0x638af4
io.ReadAtLeast({0xc09580, 0x4000402300}, {0x40003b7950, 0x4, 0x8}, 0x4)
/usr/local/go/src/io/io.go:335 +0xa0 fp=0x40001a5e80 sp=0x40001a5e30 pc=0x4d9a60
io.ReadFull(...)
/usr/local/go/src/io/io.go:354
github.com/jfreymuth/pulse/proto.(*ProtocolReader).uint32(0x40003b7930)
/go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/proto/reader.go:42 +0x3c fp=0x40001a5ec0 sp=0x40001a5e80 pc=0x7df0bc
github.com/jfreymuth/pulse/proto.(*Client).readLoop(0x40003b7930)
/go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/proto/client.go:123 +0x28 fp=0x40001a5fb0 sp=0x40001a5ec0 pc=0x7dcdd8
github.com/jfreymuth/pulse/proto.(*Client).Open.gowrap1()
/go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/proto/client.go:55 +0x28 fp=0x40001a5fd0 sp=0x40001a5fb0 pc=0x7dc638
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40001a5fd0 sp=0x40001a5fd0 pc=0x475214
created by github.com/jfreymuth/pulse/proto.(*Client).Open in goroutine 16
/go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/proto/client.go:55 +0x228

goroutine 99 gp=0x40003b4700 m=nil [IO wait]:
runtime.gopark(0x40001a7aa8?, 0x41c65c?, 0xd8?, 0x7a?, 0x9?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x40001a7a60 sp=0x40001a7a40 pc=0x4418a8
runtime.netpollblock(0x0?, 0xffffffff?, 0xff?)
/usr/local/go/src/runtime/netpoll.go:573 +0x158 fp=0x40001a7aa0 sp=0x40001a7a60 pc=0x43a8e8
internal/poll.runtime_pollWait(0x7f57859778, 0x72)
/usr/local/go/src/runtime/netpoll.go:345 +0xa0 fp=0x40001a7ad0 sp=0x40001a7aa0 pc=0x46f990
internal/poll.(*pollDesc).wait(0x4000168580?, 0x4001d358ac?, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 fp=0x40001a7b00 sp=0x40001a7ad0 pc=0x4df5e8
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x4000168580, {0x4001d358ac, 0x3, 0x3})
/usr/local/go/src/internal/poll/fd_unix.go:164 +0x200 fp=0x40001a7ba0 sp=0x40001a7b00 pc=0x4e0930
net.(*netFD).Read(0x4000168580, {0x4001d358ac?, 0x1000000?, 0x10d2560?})
/usr/local/go/src/net/fd_posix.go:55 +0x28 fp=0x40001a7bf0 sp=0x40001a7ba0 pc=0x545ff8
net.(*conn).Read(0x4000122048, {0x4001d358ac?, 0x40001a7c88?, 0x10d2560?})
/usr/local/go/src/net/net.go:185 +0x34 fp=0x40001a7c40 sp=0x40001a7bf0 pc=0x5549f4
net.(*TCPConn).Read(0x0?, {0x4001d358ac?, 0x40001a7cb8?, 0x7d7074?})
:1 +0x2c fp=0x40001a7c70 sp=0x40001a7c40 pc=0x56605c
io.ReadAtLeast({0xc09220, 0x4000122048}, {0x4001d358ac, 0x3, 0x3}, 0x3)
/usr/local/go/src/io/io.go:335 +0xa0 fp=0x40001a7cc0 sp=0x40001a7c70 pc=0x4d9a60
io.ReadFull(...)
/usr/local/go/src/io/io.go:354
github.com/devgianlu/go-librespot/ap.(*shannonConn).receivePacket(0x40000cb140, {0xc11378, 0x11387e0})
/go-librespot/ap/shannon.go:124 +0x334 fp=0x40001a7e10 sp=0x40001a7cc0 pc=0x7d7094
github.com/devgianlu/go-librespot/ap.(*Accesspoint).recvLoop(0x400045c000)
/go-librespot/ap/ap.go:276 +0x60 fp=0x40001a7fb0 sp=0x40001a7e10 pc=0x7d3de0
github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1.gowrap1()
/go-librespot/ap/ap.go:260 +0x28 fp=0x40001a7fd0 sp=0x40001a7fb0 pc=0x7d3d48
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40001a7fd0 sp=0x40001a7fd0 pc=0x475214
created by github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1 in goroutine 66
/go-librespot/ap/ap.go:260 +0x88

goroutine 16 gp=0x40003b4c40 m=nil [chan receive, 2 minutes]:
runtime.gopark(0x400048f380?, 0x40003ae400?, 0x0?, 0x4?, 0x400?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x400152ad30 sp=0x400152ad10 pc=0x4418a8
runtime.chanrecv(0x400003e2a0, 0x0, 0x1)
/usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x400152adb0 sp=0x400152ad30 pc=0x40d234
runtime.chanrecv1(0x40003b7930?, 0xc0c640?)
/usr/local/go/src/runtime/chan.go:442 +0x14 fp=0x400152ade0 sp=0x400152adb0 pc=0x40cdf4
github.com/jfreymuth/pulse.(*PlaybackStream).Start(0x400026e700)
/go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/playback.go:196 +0x100 fp=0x400152ae20 sp=0x400152ade0 pc=0x7e4c30
github.com/devgianlu/go-librespot/output.(*pulseAudioOutput).Drop(0x400055c120)
/go-librespot/output/driver-pulseaudio.go:169 +0xcc fp=0x400152ae70 sp=0x400152ae20 pc=0x7e828c
github.com/devgianlu/go-librespot/player.(*Player).manageLoop(0x40005f0680)
/go-librespot/player/player.go:240 +0x3ac fp=0x400152afb0 sp=0x400152ae70 pc=0x83d34c
github.com/devgianlu/go-librespot/player.NewPlayer.gowrap1()
/go-librespot/player/player.go:183 +0x28 fp=0x400152afd0 sp=0x400152afb0 pc=0x83cd88
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x400152afd0 sp=0x400152afd0 pc=0x475214
created by github.com/devgianlu/go-librespot/player.NewPlayer in goroutine 1
/go-librespot/player/player.go:183 +0x1ec

goroutine 66 gp=0x40003b4e00 m=nil [chan receive, 2 minutes]:
runtime.gopark(0x40000ee998?, 0x40c0c8?, 0x0?, 0x1?, 0x4000320720?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x40000ee920 sp=0x40000ee900 pc=0x4418a8
runtime.chanrecv(0x40003246c0, 0x40000eec88, 0x1)
/usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x40000ee9a0 sp=0x40000ee920 pc=0x40d234
runtime.chanrecv1(0xa80a00?, 0x40000eed10?)
/usr/local/go/src/runtime/chan.go:442 +0x14 fp=0x40000ee9d0 sp=0x40000ee9a0 pc=0x40cdf4
github.com/devgianlu/go-librespot/player.(*Player).SetPrimaryStream(...)
/go-librespot/player/player.go:415
main.(*AppPlayer).loadCurrentTrack(0x40000aa000, {0xc11378, 0x11387e0}, 0x0, 0x1)
/go-librespot/cmd/daemon/controls.go:293 +0x6dc fp=0x40000eedf0 sp=0x40000ee9d0 pc=0x948aac
main.(*AppPlayer).handlePlayerCommand(, {, }, {0x2411955a, {0x40000370b0, 0x28}, {{0x400049bdc0, 0x8}, {0x0, 0x0}, ...}})
/go-librespot/cmd/daemon/player.go:250 +0x17c8 fp=0x40000ef000 sp=0x40000eedf0 pc=0x951cc8
main.(*AppPlayer).handleDealerRequest(
, {_, _}, {0x400003e300, {0x4000036390, 0x24}, {0x2411955a, {0x40000370b0, 0x28}, {{0x400049bdc0, ...}, ...}}})
/go-librespot/cmd/daemon/player.go:368 +0x118 fp=0x40000ef250 sp=0x40000ef000 pc=0x9521a8
main.(*AppPlayer).Run(0x40000aa000, {0xc11378, 0x11387e0}, 0x400003f080)
/go-librespot/cmd/daemon/player.go:596 +0x4e0 fp=0x40000effa0 sp=0x40000ef250 pc=0x953db0
main.(*App).withAppPlayer.func3.gowrap1()
/go-librespot/cmd/daemon/main.go:358 +0x34 fp=0x40000effd0 sp=0x40000effa0 pc=0x94e0f4
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40000effd0 sp=0x40000effd0 pc=0x475214
created by main.(*App).withAppPlayer.func3 in goroutine 1
/go-librespot/cmd/daemon/main.go:358 +0x468

goroutine 101 gp=0x40001db500 m=nil [chan receive, 2 minutes]:
runtime.gopark(0x40004c5b58?, 0x40c0c8?, 0x60?, 0xc?, 0x7f9e3206a8?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000247ae0 sp=0x4000247ac0 pc=0x4418a8
runtime.chanrecv(0x400003e300, 0x40004c5bd7, 0x1)
/usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x4000247b60 sp=0x4000247ae0 pc=0x40d234
runtime.chanrecv1(0x40000a2000?, 0x0?)
/usr/local/go/src/runtime/chan.go:442 +0x14 fp=0x4000247b90 sp=0x4000247b60 pc=0x40cdf4
github.com/devgianlu/go-librespot/dealer.(*Dealer).handleRequest(0x400041e7e0, 0x4000490240)
/go-librespot/dealer/recv.go:237 +0x234 fp=0x4000247e70 sp=0x4000247b90 pc=0x859eb4
github.com/devgianlu/go-librespot/dealer.(*Dealer).recvLoop(0x400041e7e0)
/go-librespot/dealer/dealer.go:213 +0x3b4 fp=0x4000247fb0 sp=0x4000247e70 pc=0x858764
github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1.gowrap1()
/go-librespot/dealer/dealer.go:125 +0x28 fp=0x4000247fd0 sp=0x4000247fb0 pc=0x857f38
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000247fd0 sp=0x4000247fd0 pc=0x475214
created by github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1 in goroutine 66
/go-librespot/dealer/dealer.go:125 +0x88

goroutine 102 gp=0x40001db880 m=nil [select]:
runtime.gopark(0x4000243f88?, 0x2?, 0x0?, 0x0?, 0x4000243f2c?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000243dd0 sp=0x4000243db0 pc=0x4418a8
runtime.selectgo(0x4000243f88, 0x4000243f28, 0x0?, 0x0, 0x40003cb960?, 0x1)
/usr/local/go/src/runtime/select.go:327 +0x614 fp=0x4000243ee0 sp=0x4000243dd0 pc=0x454294
github.com/devgianlu/go-librespot/dealer.(*Dealer).pingTicker(0x400041e7e0)
/go-librespot/dealer/dealer.go:138 +0x74 fp=0x4000243fb0 sp=0x4000243ee0 pc=0x857fe4
github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1.gowrap2()
/go-librespot/dealer/dealer.go:129 +0x28 fp=0x4000243fd0 sp=0x4000243fb0 pc=0x857ed8
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000243fd0 sp=0x4000243fd0 pc=0x475214
created by github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1 in goroutine 66
/go-librespot/dealer/dealer.go:129 +0x108

goroutine 122 gp=0x40003e76c0 m=nil [select, 2 minutes]:
runtime.gopark(0x4000070c38?, 0x3?, 0x38?, 0xa?, 0x4000070b3a?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x40000709d0 sp=0x40000709b0 pc=0x4418a8
runtime.selectgo(0x4000070c38, 0x4000070b34, 0x0?, 0x0, 0x99cb60?, 0x1)
/usr/local/go/src/runtime/select.go:327 +0x614 fp=0x4000070ae0 sp=0x40000709d0 pc=0x454294
github.com/devgianlu/go-librespot/audio.(*KeyProvider).recvLoop(0x400028dc00)
/go-librespot/audio/provider.go:63 +0x114 fp=0x4000070fb0 sp=0x4000070ae0 pc=0x7dae14
github.com/devgianlu/go-librespot/audio.(*KeyProvider).startReceiving.func1.gowrap1()
/go-librespot/audio/provider.go:53 +0x28 fp=0x4000070fd0 sp=0x4000070fb0 pc=0x7dacc8
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000070fd0 sp=0x4000070fd0 pc=0x475214
created by github.com/devgianlu/go-librespot/audio.(*KeyProvider).startReceiving.func1 in goroutine 66
/go-librespot/audio/provider.go:53 +0x60

goroutine 166 gp=0x4000536e00 m=nil [chan receive, 2 minutes]:
runtime.gopark(0x40000be660?, 0x10d1860?, 0x28?, 0x1f?, 0x1000000005479b0?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x40005b1ea0 sp=0x40005b1e80 pc=0x4418a8
runtime.chanrecv(0x400055c240, 0x40005b1fb0, 0x1)
/usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x40005b1f20 sp=0x40005b1ea0 pc=0x40d234
runtime.chanrecv2(0x77?, 0x1?)
/usr/local/go/src/runtime/chan.go:447 +0x14 fp=0x40005b1f50 sp=0x40005b1f20 pc=0x40ce14
github.com/devgianlu/go-librespot/output.newPulseAudioOutput.func1()
/go-librespot/output/driver-pulseaudio.go:92 +0x48 fp=0x40005b1fd0 sp=0x40005b1f50 pc=0x7e7b68
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40005b1fd0 sp=0x40005b1fd0 pc=0x475214
created by github.com/devgianlu/go-librespot/output.newPulseAudioOutput in goroutine 16
/go-librespot/output/driver-pulseaudio.go:91 +0x5f0

goroutine 153 gp=0x4000537a40 m=nil [chan receive]:
runtime.gopark(0x40000bed20?, 0x400058c800?, 0xd8?, 0x8e?, 0x7e3f64?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000438e90 sp=0x4000438e70 pc=0x4418a8
runtime.chanrecv(0x400003e120, 0x4000438f90, 0x1)
/usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x4000438f10 sp=0x4000438e90 pc=0x40d234
runtime.chanrecv2(0x40003b7930?, 0x4000000000?)
/usr/local/go/src/runtime/chan.go:447 +0x14 fp=0x4000438f40 sp=0x4000438f10 pc=0x40ce14
github.com/jfreymuth/pulse.(*PlaybackStream).run(0x400026e700)
/go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/playback.go:97 +0x38 fp=0x4000438fb0 sp=0x4000438f40 pc=0x7e46f8
github.com/jfreymuth/pulse.(*Client).NewPlayback.gowrap2()
/go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/playback.go:92 +0x28 fp=0x4000438fd0 sp=0x4000438fb0 pc=0x7e4628
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000438fd0 sp=0x4000438fd0 pc=0x475214
created by github.com/jfreymuth/pulse.(*Client).NewPlayback in goroutine 16
/go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/playback.go:92 +0x508

goroutine 212 gp=0x4000537c00 m=nil [chan receive, 2 minutes]:
runtime.gopark(0x4000075ef8?, 0x40d734?, 0x0?, 0x4?, 0x40000be660?)
/usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000075e80 sp=0x4000075e60 pc=0x4418a8
runtime.chanrecv(0x40003245a0, 0x4000075f60, 0x1)
/usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x4000075f00 sp=0x4000075e80 pc=0x40d234
runtime.chanrecv2(0x0?, 0xc0c5e0?)
/usr/local/go/src/runtime/chan.go:447 +0x14 fp=0x4000075f30 sp=0x4000075f00 pc=0x40ce14
github.com/jfreymuth/pulse.(*PlaybackStream).handleEvents(0x400026e700, 0x40003245a0)
/go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/playback.go:130 +0x48 fp=0x4000075fb0 sp=0x4000075f30 pc=0x7e4968
github.com/jfreymuth/pulse.(*Client).NewPlayback.gowrap1()
/go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/playback.go:77 +0x2c fp=0x4000075fd0 sp=0x4000075fb0 pc=0x7e468c
runtime.goexit({})
/usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000075fd0 sp=0x4000075fd0 pc=0x475214
created by github.com/jfreymuth/pulse.(*Client).NewPlayback in goroutine 16
/go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/playback.go:77 +0x28c

r0 0xfffffffffffffffc
r1 0x7fefb61e98
r2 0x80
r3 0xc79
r4 0x0
r5 0x0
r6 0xc79
r7 0x7fefb62688
r8 0x16
r9 0x1
r10 0x0
r11 0x4
r12 0x0
r13 0x1
r14 0xb
r15 0xc
r16 0x7fefb43bf0
r17 0x7fefb61ec0
r18 0xe0
r19 0xfffffffffffffffb
r20 0x7fefb61e40
r21 0x10d2560
r22 0x1
r23 0x11392c8
r24 0x0
r25 0x4000053cc0
r26 0xb6d490
r27 0x109a000
r28 0x10d1f20
r29 0x7fefb61dc8
lr 0x408c78
sp 0x7fefb61dd0
pc 0x408d40
fault 0x0
devgianlu
devgianlu commented last week
devgianlu
last week
Owner
@JaragonCR I am unable to reproduce the issue. Could you try with the alsa backend?

JaragonCR
JaragonCR commented last week
JaragonCR
last week
@devgianlu not with how iotsound is designed. I could try to add the alsa bridge to the container to emulate alsa but it would take a me a while.

JaragonCR
JaragonCR commented last week
JaragonCR
last week · edited by devgianlu
@devgianlu cannot reproduce with ALSA, works perfectly, you are onto something.

Here's my Docker build, needs cleanup, don't judge , it works :P

FROM golang:1.22-alpine

RUN apk add --no-cache
git
build-base
pkgconf
alsa-lib-dev
libogg-dev
libvorbis-dev
libpulse
avahi
libgcc
gcompat
alsa-lib
curl

RUN git clone https://github.com/devgianlu/go-librespot.git /go-librespot

WORKDIR /go-librespot

RUN go mod download
RUN go build -v ./cmd/daemon
ENV PULSE_SERVER=tcp:localhost:4317
RUN curl -skL https://raw.githubusercontent.com/balena-io-experimental/audio/master/scripts/alsa-bridge/alpine-setup.sh | sh

COPY start.sh /usr/src/

CMD [ "/bin/sh", "/usr/src/start.sh" ]

Generated config:
librespot log_level: info
librespot device_name: Pergola-test
librespot device_type: speaker
librespot bitrate: 320
librespot normalisation_disabled: true
librespot credentials:
librespot type: "zeroconf"

Originally created by @JaragonCR on GitHub (Aug 20, 2025). Original GitHub issue: https://github.com/devgianlu/go-librespot/issues/196 When using native pulse the pongs keep failing, moved to ALSA with an ALSA bridge and it works fine. Alsa Bridge RUN curl -skL https://raw.githubusercontent.com/balena-io-experimental/audio/master/scripts/alsa-bridge/alpine-setup.sh | sh Generated config: log_level: info device_name: Pergola-test device_type: speaker audio_backend: pulseaudio bitrate: 320 normalisation_disabled: true credentials: type: "zeroconf" INFO[0000] running go-librespot b39e5e50 INFO[0000] zeroconf server listening on port 51377 INFO[0021] authenticated AP username="22*********************pq" INFO[0021] authenticated Login5 username="22*********************pq" INFO[0021] accepted zeroconf from Jorge's S24 Ultra username="22*********************pq" ERRO[0112] did not receive last pong from dealer, 60s passed ERRO[0142] did not receive last pong from dealer, 90s passed SIGABRT: abort PC=0x408d40 m=0 sigcode=0 goroutine 0 gp=0x10d1f20 m=0 mp=0x10d2560 [idle]: runtime/internal/syscall.Syscall6(0x16, 0x4, 0x7fefb61e98, 0x80, 0xc79, 0x0, 0x0) /usr/local/go/src/runtime/internal/syscall/asm_linux_arm64.s:17 +0x20 fp=0x7fefb61dd0 sp=0x7fefb61dd0 pc=0x408d40 runtime/internal/syscall.EpollWait(0x0?, {0x7fefb61e98?, 0x7fefb61e78?, 0x43b5a0?}, 0x0?, 0x0?) /usr/local/go/src/runtime/internal/syscall/syscall_linux.go:55 +0x58 fp=0x7fefb61e40 sp=0x7fefb61dd0 pc=0x408c78 runtime.netpoll(0xbe604640) /usr/local/go/src/runtime/netpoll_epoll.go:118 +0xf4 fp=0x7fefb626d0 sp=0x7fefb61e40 pc=0x43b414 runtime.findRunnable() /usr/local/go/src/runtime/proc.go:3470 +0x9ec fp=0x7fefb62840 sp=0x7fefb626d0 pc=0x447ecc runtime.schedule() /usr/local/go/src/runtime/proc.go:3868 +0x98 fp=0x7fefb62880 sp=0x7fefb62840 pc=0x4498f8 runtime.park_m(0x40003b41c0) /usr/local/go/src/runtime/proc.go:4036 +0x240 fp=0x7fefb628e0 sp=0x7fefb62880 pc=0x449f90 runtime.mcall() /usr/local/go/src/runtime/asm_arm64.s:192 +0x54 fp=0x7fefb628f0 sp=0x7fefb628e0 pc=0x472cd4 goroutine 1 gp=0x40000021c0 m=nil [select, 2 minutes]: runtime.gopark(0x4000047cb0?, 0x2?, 0x48?, 0x7b?, 0x4000047c4c?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000249ae0 sp=0x4000249ac0 pc=0x4418a8 runtime.selectgo(0x4000249cb0, 0x4000047c48, 0x40003aa1e0?, 0x0, 0x1d8?, 0x1) /usr/local/go/src/runtime/select.go:327 +0x614 fp=0x4000249bf0 sp=0x4000249ae0 pc=0x454294 github.com/devgianlu/go-librespot/zeroconf.(*Zeroconf).Serve(0x4000579e00, 0x4000249dc8) /go-librespot/zeroconf/zeroconf.go:283 +0x1f4 fp=0x4000249d40 sp=0x4000249bf0 pc=0x8c6af4 main.(*App).withAppPlayer(0x400033a000, {0xc11378, 0x11387e0}, 0x4000338130) /go-librespot/cmd/daemon/main.go:321 +0x450 fp=0x4000249e50 sp=0x4000249d40 pc=0x94db10 main.(*App).Zeroconf(...) /go-librespot/cmd/daemon/main.go:170 main.main() /go-librespot/cmd/daemon/main.go:548 +0x410 fp=0x4000249f40 sp=0x4000249e50 pc=0x94f660 runtime.main() /usr/local/go/src/runtime/proc.go:271 +0x28c fp=0x4000249fd0 sp=0x4000249f40 pc=0x44147c runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000249fd0 sp=0x4000249fd0 pc=0x475214 goroutine 2 gp=0x4000002c40 m=nil [force gc (idle), 2 minutes]: runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000060f90 sp=0x4000060f70 pc=0x4418a8 runtime.goparkunlock(...) /usr/local/go/src/runtime/proc.go:408 runtime.forcegchelper() /usr/local/go/src/runtime/proc.go:326 +0xb8 fp=0x4000060fd0 sp=0x4000060f90 pc=0x441738 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000060fd0 sp=0x4000060fd0 pc=0x475214 created by runtime.init.6 in goroutine 1 /usr/local/go/src/runtime/proc.go:314 +0x24 goroutine 18 gp=0x4000102380 m=nil [GC sweep wait]: runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x400005c760 sp=0x400005c740 pc=0x4418a8 runtime.goparkunlock(...) /usr/local/go/src/runtime/proc.go:408 runtime.bgsweep(0x400010e000) /usr/local/go/src/runtime/mgcsweep.go:318 +0x108 fp=0x400005c7b0 sp=0x400005c760 pc=0x42cda8 runtime.gcenable.gowrap1() /usr/local/go/src/runtime/mgc.go:203 +0x28 fp=0x400005c7d0 sp=0x400005c7b0 pc=0x420f58 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x400005c7d0 sp=0x400005c7d0 pc=0x475214 created by runtime.gcenable in goroutine 1 /usr/local/go/src/runtime/mgc.go:203 +0x6c goroutine 19 gp=0x4000102540 m=nil [GC scavenge wait]: runtime.gopark(0x88da1f?, 0x12aa861c?, 0x0?, 0x0?, 0x0?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x400005cf60 sp=0x400005cf40 pc=0x4418a8 runtime.goparkunlock(...) /usr/local/go/src/runtime/proc.go:408 runtime.(*scavengerState).park(0x10d1a00) /usr/local/go/src/runtime/mgcscavenge.go:425 +0x5c fp=0x400005cf90 sp=0x400005cf60 pc=0x42a73c runtime.bgscavenge(0x400010e000) /usr/local/go/src/runtime/mgcscavenge.go:658 +0xac fp=0x400005cfb0 sp=0x400005cf90 pc=0x42acec runtime.gcenable.gowrap2() /usr/local/go/src/runtime/mgc.go:204 +0x28 fp=0x400005cfd0 sp=0x400005cfb0 pc=0x420ef8 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x400005cfd0 sp=0x400005cfd0 pc=0x475214 created by runtime.gcenable in goroutine 1 /usr/local/go/src/runtime/mgc.go:204 +0xac goroutine 20 gp=0x4000102a80 m=nil [finalizer wait]: runtime.gopark(0x0?, 0x4002310a30?, 0x70?, 0x60?, 0x1000000010?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000436d80 sp=0x4000436d60 pc=0x4418a8 runtime.runfinq() /usr/local/go/src/runtime/mfinal.go:194 +0x108 fp=0x4000436fd0 sp=0x4000436d80 pc=0x420028 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000436fd0 sp=0x4000436fd0 pc=0x475214 created by runtime.createfing in goroutine 1 /usr/local/go/src/runtime/mfinal.go:164 +0x80 goroutine 100 gp=0x400028f340 m=nil [select]: runtime.gopark(0x400033f788?, 0x2?, 0x58?, 0xf6?, 0x400033f754?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x400033f600 sp=0x400033f5e0 pc=0x4418a8 runtime.selectgo(0x400033f788, 0x400033f750, 0x10d1860?, 0x0, 0x0?, 0x1) /usr/local/go/src/runtime/select.go:327 +0x614 fp=0x400033f710 sp=0x400033f600 pc=0x454294 github.com/devgianlu/go-librespot/ap.(*Accesspoint).pongAckTicker(0x400045c000) /go-librespot/ap/ap.go:355 +0x74 fp=0x400033f7b0 sp=0x400033f710 pc=0x7d4634 github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1.gowrap2() /go-librespot/ap/ap.go:264 +0x28 fp=0x400033f7d0 sp=0x400033f7b0 pc=0x7d3ce8 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x400033f7d0 sp=0x400033f7d0 pc=0x475214 created by github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1 in goroutine 66 /go-librespot/ap/ap.go:264 +0x108 goroutine 3 gp=0x400028f880 m=nil [GC worker (idle)]: runtime.gopark(0x38a718243bf8?, 0x3?, 0xa9?, 0x65?, 0x0?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000340f30 sp=0x4000340f10 pc=0x4418a8 runtime.gcBgMarkWorker() /usr/local/go/src/runtime/mgc.go:1310 +0xd8 fp=0x4000340fd0 sp=0x4000340f30 pc=0x423058 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000340fd0 sp=0x4000340fd0 pc=0x475214 created by runtime.gcBgMarkStartWorkers in goroutine 40 /usr/local/go/src/runtime/mgc.go:1234 +0x28 goroutine 42 gp=0x40003b5340 m=nil [GC worker (idle)]: runtime.gopark(0x38a7183004a4?, 0x1?, 0x6?, 0x18?, 0x0?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000341730 sp=0x4000341710 pc=0x4418a8 runtime.gcBgMarkWorker() /usr/local/go/src/runtime/mgc.go:1310 +0xd8 fp=0x40003417d0 sp=0x4000341730 pc=0x423058 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40003417d0 sp=0x40003417d0 pc=0x475214 created by runtime.gcBgMarkStartWorkers in goroutine 40 /usr/local/go/src/runtime/mgc.go:1234 +0x28 goroutine 43 gp=0x40003b5500 m=nil [GC worker (idle), 1 minutes]: runtime.gopark(0x38a718240f1f?, 0x3?, 0x1c?, 0x6e?, 0x0?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000341f30 sp=0x4000341f10 pc=0x4418a8 runtime.gcBgMarkWorker() /usr/local/go/src/runtime/mgc.go:1310 +0xd8 fp=0x4000341fd0 sp=0x4000341f30 pc=0x423058 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000341fd0 sp=0x4000341fd0 pc=0x475214 created by runtime.gcBgMarkStartWorkers in goroutine 40 /usr/local/go/src/runtime/mgc.go:1234 +0x28 goroutine 4 gp=0x4000003500 m=nil [GC worker (idle)]: runtime.gopark(0x38a7182403d6?, 0x3?, 0x91?, 0x5e?, 0x40003049a0?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000340730 sp=0x4000340710 pc=0x4418a8 runtime.gcBgMarkWorker() /usr/local/go/src/runtime/mgc.go:1310 +0xd8 fp=0x40003407d0 sp=0x4000340730 pc=0x423058 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40003407d0 sp=0x40003407d0 pc=0x475214 created by runtime.gcBgMarkStartWorkers in goroutine 40 /usr/local/go/src/runtime/mgc.go:1234 +0x28 goroutine 26 gp=0x40001db6c0 m=nil [chan receive, 2 minutes]: runtime.gopark(0x60?, 0x7f9e317f18?, 0x60?, 0x0?, 0x4000067808?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000063670 sp=0x4000063650 pc=0x4418a8 runtime.chanrecv(0x40001180c0, 0x4000063790, 0x1) /usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x40000636f0 sp=0x4000063670 pc=0x40d234 runtime.chanrecv2(0x0?, 0x0?) /usr/local/go/src/runtime/chan.go:447 +0x14 fp=0x4000063720 sp=0x40000636f0 pc=0x40ce14 main.(*App).withAppPlayer.func1() /go-librespot/cmd/daemon/main.go:268 +0x60 fp=0x40000637d0 sp=0x4000063720 pc=0x94e510 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40000637d0 sp=0x40000637d0 pc=0x475214 created by main.(*App).withAppPlayer in goroutine 1 /go-librespot/cmd/daemon/main.go:265 +0x36c goroutine 27 gp=0x40001dbc00 m=nil [chan receive, 2 minutes]: runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000063e60 sp=0x4000063e40 pc=0x4418a8 runtime.chanrecv(0x40003241e0, 0x4000063fb0, 0x1) /usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x4000063ee0 sp=0x4000063e60 pc=0x40d234 runtime.chanrecv2(0x0?, 0x0?) /usr/local/go/src/runtime/chan.go:447 +0x14 fp=0x4000063f10 sp=0x4000063ee0 pc=0x40ce14 main.(*App).withAppPlayer.func2() /go-librespot/cmd/daemon/main.go:284 +0x6c fp=0x4000063fd0 sp=0x4000063f10 pc=0x94e19c runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000063fd0 sp=0x4000063fd0 pc=0x475214 created by main.(*App).withAppPlayer in goroutine 1 /go-librespot/cmd/daemon/main.go:281 +0x404 goroutine 28 gp=0x40001dbdc0 m=nil [IO wait]: runtime.gopark(0x4000071be8?, 0x4e5f70?, 0x0?, 0x0?, 0x400004e008?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000071ba0 sp=0x4000071b80 pc=0x4418a8 runtime.netpollblock(0x4000071c38?, 0x4e3f84?, 0x0?) /usr/local/go/src/runtime/netpoll.go:573 +0x158 fp=0x4000071be0 sp=0x4000071ba0 pc=0x43a8e8 internal/poll.runtime_pollWait(0x7f57859e40, 0x72) /usr/local/go/src/runtime/netpoll.go:345 +0xa0 fp=0x4000071c10 sp=0x4000071be0 pc=0x46f990 internal/poll.(*pollDesc).wait(0x8?, 0x8?, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 fp=0x4000071c40 sp=0x4000071c10 pc=0x4df5e8 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).Accept(0x40002de180) /usr/local/go/src/internal/poll/fd_unix.go:611 +0x250 fp=0x4000071cf0 sp=0x4000071c40 pc=0x4e4070 net.(*netFD).accept(0x40002de180) /usr/local/go/src/net/fd_unix.go:172 +0x28 fp=0x4000071db0 sp=0x4000071cf0 pc=0x547bd8 net.(*TCPListener).accept(0x40005448c0) /usr/local/go/src/net/tcpsock_posix.go:159 +0x28 fp=0x4000071de0 sp=0x4000071db0 pc=0x55d968 net.(*TCPListener).Accept(0x40005448c0) /usr/local/go/src/net/tcpsock.go:327 +0x2c fp=0x4000071e20 sp=0x4000071de0 pc=0x55cb7c net/http.(*onceCloseListener).Accept(0x40004901b0?) <autogenerated>:1 +0x30 fp=0x4000071e40 sp=0x4000071e20 pc=0x6d13d0 net/http.(*Server).Serve(0x4000092000, {0xc10220, 0x40005448c0}) /usr/local/go/src/net/http/server.go:3260 +0x2a8 fp=0x4000071f70 sp=0x4000071e40 pc=0x6af978 net/http.Serve(...) /usr/local/go/src/net/http/server.go:2799 github.com/devgianlu/go-librespot/zeroconf.(*Zeroconf).Serve.func2() /go-librespot/zeroconf/zeroconf.go:280 +0x84 fp=0x4000071fd0 sp=0x4000071f70 pc=0x8c6be4 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000071fd0 sp=0x4000071fd0 pc=0x475214 created by github.com/devgianlu/go-librespot/zeroconf.(*Zeroconf).Serve in goroutine 1 /go-librespot/zeroconf/zeroconf.go:280 +0x138 goroutine 44 gp=0x40003b4000 m=nil [IO wait]: runtime.gopark(0x50?, 0x4001d67638?, 0x58?, 0xad?, 0x413f30?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x40001aace0 sp=0x40001aacc0 pc=0x4418a8 runtime.netpollblock(0xb0434b?, 0x3?, 0x0?) /usr/local/go/src/runtime/netpoll.go:573 +0x158 fp=0x40001aad20 sp=0x40001aace0 pc=0x43a8e8 internal/poll.runtime_pollWait(0x7f57859c50, 0x72) /usr/local/go/src/runtime/netpoll.go:345 +0xa0 fp=0x40001aad50 sp=0x40001aad20 pc=0x46f990 internal/poll.(*pollDesc).wait(0x40002df000?, 0x413a08?, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 fp=0x40001aad80 sp=0x40001aad50 pc=0x4df5e8 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).RawRead(0x40002df000, 0x4000bff720) /usr/local/go/src/internal/poll/fd_unix.go:708 +0x130 fp=0x40001aade0 sp=0x40001aad80 pc=0x4e4d40 net.(*rawConn).Read(0x4000122070, 0x0?) /usr/local/go/src/net/rawconn.go:44 +0x30 fp=0x40001aae20 sp=0x40001aade0 pc=0x558910 golang.org/x/net/internal/socket.(*Conn).recvMsg(0x4000544c40, 0x4001d8a6c0, 0x0) /go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/rawconn_msg.go:27 +0x138 fp=0x40001aae80 sp=0x40001aae20 pc=0x86b208 golang.org/x/net/internal/socket.(*Conn).RecvMsg(...) /go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/socket.go:247 golang.org/x/net/ipv4.(*payloadHandler).ReadFrom(0x40005775a0, {0x400034e000, 0x10000, 0x10000}) /go/pkg/mod/golang.org/x/net@v0.26.0/ipv4/payload_cmsg.go:31 +0x468 fp=0x40001aaf30 sp=0x40001aae80 pc=0x86f028 github.com/grandcat/zeroconf.(*Server).recv4(0x400055dce0, 0x4000577590) /go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:254 +0xc4 fp=0x40001aafb0 sp=0x40001aaf30 pc=0x8c2464 github.com/grandcat/zeroconf.(*Server).mainloop.gowrap1() /go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:188 +0x2c fp=0x40001aafd0 sp=0x40001aafb0 pc=0x8c20ac runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40001aafd0 sp=0x40001aafd0 pc=0x475214 created by github.com/grandcat/zeroconf.(*Server).mainloop in goroutine 24 /go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:188 +0x78 goroutine 45 gp=0x40003b41c0 m=nil [IO wait]: runtime.gopark(0x50?, 0x4001d67680?, 0x8?, 0x6d?, 0x413f30?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x40001a6c90 sp=0x40001a6c70 pc=0x4418a8 runtime.netpollblock(0xb0434b?, 0x3?, 0x0?) /usr/local/go/src/runtime/netpoll.go:573 +0x158 fp=0x40001a6cd0 sp=0x40001a6c90 pc=0x43a8e8 internal/poll.runtime_pollWait(0x7f57859b58, 0x72) /usr/local/go/src/runtime/netpoll.go:345 +0xa0 fp=0x40001a6d00 sp=0x40001a6cd0 pc=0x46f990 internal/poll.(*pollDesc).wait(0x40002df080?, 0x413a08?, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 fp=0x40001a6d30 sp=0x40001a6d00 pc=0x4df5e8 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).RawRead(0x40002df080, 0x4000bff770) /usr/local/go/src/internal/poll/fd_unix.go:708 +0x130 fp=0x40001a6d90 sp=0x40001a6d30 pc=0x4e4d40 net.(*rawConn).Read(0x4000122080, 0x0?) /usr/local/go/src/net/rawconn.go:44 +0x30 fp=0x40001a6dd0 sp=0x40001a6d90 pc=0x558910 golang.org/x/net/internal/socket.(*Conn).recvMsg(0x4000544c60, 0x4001d8a720, 0x0) /go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/rawconn_msg.go:27 +0x138 fp=0x40001a6e30 sp=0x40001a6dd0 pc=0x86b208 golang.org/x/net/internal/socket.(*Conn).RecvMsg(...) /go/pkg/mod/golang.org/x/net@v0.26.0/internal/socket/socket.go:247 golang.org/x/net/ipv6.(*payloadHandler).ReadFrom(0x40005775f0, {0x4000232000, 0x10000, 0x10000}) /go/pkg/mod/golang.org/x/net@v0.26.0/ipv6/payload_cmsg.go:31 +0x344 fp=0x40001a6f30 sp=0x40001a6e30 pc=0x8725a4 github.com/grandcat/zeroconf.(*Server).recv6(0x400055dce0, 0x40005775e0) /go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:282 +0xc4 fp=0x40001a6fb0 sp=0x40001a6f30 pc=0x8c2624 github.com/grandcat/zeroconf.(*Server).mainloop.gowrap2() /go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:191 +0x2c fp=0x40001a6fd0 sp=0x40001a6fb0 pc=0x8c204c runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40001a6fd0 sp=0x40001a6fd0 pc=0x475214 created by github.com/grandcat/zeroconf.(*Server).mainloop in goroutine 24 /go/pkg/mod/github.com/grandcat/zeroconf@v1.0.0/server.go:191 +0xd8 goroutine 194 gp=0x4000003dc0 m=nil [IO wait]: runtime.gopark(0x4000402300?, 0x40003b7950?, 0x0?, 0xe7?, 0x95ab3a?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x40001a5be0 sp=0x40001a5bc0 pc=0x4418a8 runtime.netpollblock(0x0?, 0xffffffff?, 0xff?) /usr/local/go/src/runtime/netpoll.go:573 +0x158 fp=0x40001a5c20 sp=0x40001a5be0 pc=0x43a8e8 internal/poll.runtime_pollWait(0x7f5750af08, 0x72) /usr/local/go/src/runtime/netpoll.go:345 +0xa0 fp=0x40001a5c50 sp=0x40001a5c20 pc=0x46f990 internal/poll.(*pollDesc).wait(0x40005f0700?, 0x4000498000?, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 fp=0x40001a5c80 sp=0x40001a5c50 pc=0x4df5e8 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).Read(0x40005f0700, {0x4000498000, 0x1000, 0x1000}) /usr/local/go/src/internal/poll/fd_unix.go:164 +0x200 fp=0x40001a5d20 sp=0x40001a5c80 pc=0x4e0930 net.(*netFD).Read(0x40005f0700, {0x4000498000?, 0x400040c000?, 0x4000460070?}) /usr/local/go/src/net/fd_posix.go:55 +0x28 fp=0x40001a5d70 sp=0x40001a5d20 pc=0x545ff8 net.(*conn).Read(0x40002f40b8, {0x4000498000?, 0x0?, 0x5?}) /usr/local/go/src/net/net.go:185 +0x34 fp=0x40001a5dc0 sp=0x40001a5d70 pc=0x5549f4 net.(*TCPConn).Read(0xc1ba88?, {0x4000498000?, 0x0?, 0x4000492748?}) <autogenerated>:1 +0x2c fp=0x40001a5df0 sp=0x40001a5dc0 pc=0x56605c bufio.(*Reader).Read(0x4000402300, {0x40003b7950, 0x4, 0x4000492748?}) /usr/local/go/src/bufio/bufio.go:241 +0x1b4 fp=0x40001a5e30 sp=0x40001a5df0 pc=0x638af4 io.ReadAtLeast({0xc09580, 0x4000402300}, {0x40003b7950, 0x4, 0x8}, 0x4) /usr/local/go/src/io/io.go:335 +0xa0 fp=0x40001a5e80 sp=0x40001a5e30 pc=0x4d9a60 io.ReadFull(...) /usr/local/go/src/io/io.go:354 github.com/jfreymuth/pulse/proto.(*ProtocolReader).uint32(0x40003b7930) /go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/proto/reader.go:42 +0x3c fp=0x40001a5ec0 sp=0x40001a5e80 pc=0x7df0bc github.com/jfreymuth/pulse/proto.(*Client).readLoop(0x40003b7930) /go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/proto/client.go:123 +0x28 fp=0x40001a5fb0 sp=0x40001a5ec0 pc=0x7dcdd8 github.com/jfreymuth/pulse/proto.(*Client).Open.gowrap1() /go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/proto/client.go:55 +0x28 fp=0x40001a5fd0 sp=0x40001a5fb0 pc=0x7dc638 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40001a5fd0 sp=0x40001a5fd0 pc=0x475214 created by github.com/jfreymuth/pulse/proto.(*Client).Open in goroutine 16 /go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/proto/client.go:55 +0x228 goroutine 99 gp=0x40003b4700 m=nil [IO wait]: runtime.gopark(0x40001a7aa8?, 0x41c65c?, 0xd8?, 0x7a?, 0x9?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x40001a7a60 sp=0x40001a7a40 pc=0x4418a8 runtime.netpollblock(0x0?, 0xffffffff?, 0xff?) /usr/local/go/src/runtime/netpoll.go:573 +0x158 fp=0x40001a7aa0 sp=0x40001a7a60 pc=0x43a8e8 internal/poll.runtime_pollWait(0x7f57859778, 0x72) /usr/local/go/src/runtime/netpoll.go:345 +0xa0 fp=0x40001a7ad0 sp=0x40001a7aa0 pc=0x46f990 internal/poll.(*pollDesc).wait(0x4000168580?, 0x4001d358ac?, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 fp=0x40001a7b00 sp=0x40001a7ad0 pc=0x4df5e8 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).Read(0x4000168580, {0x4001d358ac, 0x3, 0x3}) /usr/local/go/src/internal/poll/fd_unix.go:164 +0x200 fp=0x40001a7ba0 sp=0x40001a7b00 pc=0x4e0930 net.(*netFD).Read(0x4000168580, {0x4001d358ac?, 0x1000000?, 0x10d2560?}) /usr/local/go/src/net/fd_posix.go:55 +0x28 fp=0x40001a7bf0 sp=0x40001a7ba0 pc=0x545ff8 net.(*conn).Read(0x4000122048, {0x4001d358ac?, 0x40001a7c88?, 0x10d2560?}) /usr/local/go/src/net/net.go:185 +0x34 fp=0x40001a7c40 sp=0x40001a7bf0 pc=0x5549f4 net.(*TCPConn).Read(0x0?, {0x4001d358ac?, 0x40001a7cb8?, 0x7d7074?}) <autogenerated>:1 +0x2c fp=0x40001a7c70 sp=0x40001a7c40 pc=0x56605c io.ReadAtLeast({0xc09220, 0x4000122048}, {0x4001d358ac, 0x3, 0x3}, 0x3) /usr/local/go/src/io/io.go:335 +0xa0 fp=0x40001a7cc0 sp=0x40001a7c70 pc=0x4d9a60 io.ReadFull(...) /usr/local/go/src/io/io.go:354 github.com/devgianlu/go-librespot/ap.(*shannonConn).receivePacket(0x40000cb140, {0xc11378, 0x11387e0}) /go-librespot/ap/shannon.go:124 +0x334 fp=0x40001a7e10 sp=0x40001a7cc0 pc=0x7d7094 github.com/devgianlu/go-librespot/ap.(*Accesspoint).recvLoop(0x400045c000) /go-librespot/ap/ap.go:276 +0x60 fp=0x40001a7fb0 sp=0x40001a7e10 pc=0x7d3de0 github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1.gowrap1() /go-librespot/ap/ap.go:260 +0x28 fp=0x40001a7fd0 sp=0x40001a7fb0 pc=0x7d3d48 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40001a7fd0 sp=0x40001a7fd0 pc=0x475214 created by github.com/devgianlu/go-librespot/ap.(*Accesspoint).startReceiving.func1 in goroutine 66 /go-librespot/ap/ap.go:260 +0x88 goroutine 16 gp=0x40003b4c40 m=nil [chan receive, 2 minutes]: runtime.gopark(0x400048f380?, 0x40003ae400?, 0x0?, 0x4?, 0x400?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x400152ad30 sp=0x400152ad10 pc=0x4418a8 runtime.chanrecv(0x400003e2a0, 0x0, 0x1) /usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x400152adb0 sp=0x400152ad30 pc=0x40d234 runtime.chanrecv1(0x40003b7930?, 0xc0c640?) /usr/local/go/src/runtime/chan.go:442 +0x14 fp=0x400152ade0 sp=0x400152adb0 pc=0x40cdf4 github.com/jfreymuth/pulse.(*PlaybackStream).Start(0x400026e700) /go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/playback.go:196 +0x100 fp=0x400152ae20 sp=0x400152ade0 pc=0x7e4c30 github.com/devgianlu/go-librespot/output.(*pulseAudioOutput).Drop(0x400055c120) /go-librespot/output/driver-pulseaudio.go:169 +0xcc fp=0x400152ae70 sp=0x400152ae20 pc=0x7e828c github.com/devgianlu/go-librespot/player.(*Player).manageLoop(0x40005f0680) /go-librespot/player/player.go:240 +0x3ac fp=0x400152afb0 sp=0x400152ae70 pc=0x83d34c github.com/devgianlu/go-librespot/player.NewPlayer.gowrap1() /go-librespot/player/player.go:183 +0x28 fp=0x400152afd0 sp=0x400152afb0 pc=0x83cd88 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x400152afd0 sp=0x400152afd0 pc=0x475214 created by github.com/devgianlu/go-librespot/player.NewPlayer in goroutine 1 /go-librespot/player/player.go:183 +0x1ec goroutine 66 gp=0x40003b4e00 m=nil [chan receive, 2 minutes]: runtime.gopark(0x40000ee998?, 0x40c0c8?, 0x0?, 0x1?, 0x4000320720?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x40000ee920 sp=0x40000ee900 pc=0x4418a8 runtime.chanrecv(0x40003246c0, 0x40000eec88, 0x1) /usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x40000ee9a0 sp=0x40000ee920 pc=0x40d234 runtime.chanrecv1(0xa80a00?, 0x40000eed10?) /usr/local/go/src/runtime/chan.go:442 +0x14 fp=0x40000ee9d0 sp=0x40000ee9a0 pc=0x40cdf4 github.com/devgianlu/go-librespot/player.(*Player).SetPrimaryStream(...) /go-librespot/player/player.go:415 main.(*AppPlayer).loadCurrentTrack(0x40000aa000, {0xc11378, 0x11387e0}, 0x0, 0x1) /go-librespot/cmd/daemon/controls.go:293 +0x6dc fp=0x40000eedf0 sp=0x40000ee9d0 pc=0x948aac main.(*AppPlayer).handlePlayerCommand(_, {_, _}, {0x2411955a, {0x40000370b0, 0x28}, {{0x400049bdc0, 0x8}, {0x0, 0x0}, ...}}) /go-librespot/cmd/daemon/player.go:250 +0x17c8 fp=0x40000ef000 sp=0x40000eedf0 pc=0x951cc8 main.(*AppPlayer).handleDealerRequest(_, {_, _}, {0x400003e300, {0x4000036390, 0x24}, {0x2411955a, {0x40000370b0, 0x28}, {{0x400049bdc0, ...}, ...}}}) /go-librespot/cmd/daemon/player.go:368 +0x118 fp=0x40000ef250 sp=0x40000ef000 pc=0x9521a8 main.(*AppPlayer).Run(0x40000aa000, {0xc11378, 0x11387e0}, 0x400003f080) /go-librespot/cmd/daemon/player.go:596 +0x4e0 fp=0x40000effa0 sp=0x40000ef250 pc=0x953db0 main.(*App).withAppPlayer.func3.gowrap1() /go-librespot/cmd/daemon/main.go:358 +0x34 fp=0x40000effd0 sp=0x40000effa0 pc=0x94e0f4 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40000effd0 sp=0x40000effd0 pc=0x475214 created by main.(*App).withAppPlayer.func3 in goroutine 1 /go-librespot/cmd/daemon/main.go:358 +0x468 goroutine 101 gp=0x40001db500 m=nil [chan receive, 2 minutes]: runtime.gopark(0x40004c5b58?, 0x40c0c8?, 0x60?, 0xc?, 0x7f9e3206a8?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000247ae0 sp=0x4000247ac0 pc=0x4418a8 runtime.chanrecv(0x400003e300, 0x40004c5bd7, 0x1) /usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x4000247b60 sp=0x4000247ae0 pc=0x40d234 runtime.chanrecv1(0x40000a2000?, 0x0?) /usr/local/go/src/runtime/chan.go:442 +0x14 fp=0x4000247b90 sp=0x4000247b60 pc=0x40cdf4 github.com/devgianlu/go-librespot/dealer.(*Dealer).handleRequest(0x400041e7e0, 0x4000490240) /go-librespot/dealer/recv.go:237 +0x234 fp=0x4000247e70 sp=0x4000247b90 pc=0x859eb4 github.com/devgianlu/go-librespot/dealer.(*Dealer).recvLoop(0x400041e7e0) /go-librespot/dealer/dealer.go:213 +0x3b4 fp=0x4000247fb0 sp=0x4000247e70 pc=0x858764 github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1.gowrap1() /go-librespot/dealer/dealer.go:125 +0x28 fp=0x4000247fd0 sp=0x4000247fb0 pc=0x857f38 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000247fd0 sp=0x4000247fd0 pc=0x475214 created by github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1 in goroutine 66 /go-librespot/dealer/dealer.go:125 +0x88 goroutine 102 gp=0x40001db880 m=nil [select]: runtime.gopark(0x4000243f88?, 0x2?, 0x0?, 0x0?, 0x4000243f2c?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000243dd0 sp=0x4000243db0 pc=0x4418a8 runtime.selectgo(0x4000243f88, 0x4000243f28, 0x0?, 0x0, 0x40003cb960?, 0x1) /usr/local/go/src/runtime/select.go:327 +0x614 fp=0x4000243ee0 sp=0x4000243dd0 pc=0x454294 github.com/devgianlu/go-librespot/dealer.(*Dealer).pingTicker(0x400041e7e0) /go-librespot/dealer/dealer.go:138 +0x74 fp=0x4000243fb0 sp=0x4000243ee0 pc=0x857fe4 github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1.gowrap2() /go-librespot/dealer/dealer.go:129 +0x28 fp=0x4000243fd0 sp=0x4000243fb0 pc=0x857ed8 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000243fd0 sp=0x4000243fd0 pc=0x475214 created by github.com/devgianlu/go-librespot/dealer.(*Dealer).startReceiving.func1 in goroutine 66 /go-librespot/dealer/dealer.go:129 +0x108 goroutine 122 gp=0x40003e76c0 m=nil [select, 2 minutes]: runtime.gopark(0x4000070c38?, 0x3?, 0x38?, 0xa?, 0x4000070b3a?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x40000709d0 sp=0x40000709b0 pc=0x4418a8 runtime.selectgo(0x4000070c38, 0x4000070b34, 0x0?, 0x0, 0x99cb60?, 0x1) /usr/local/go/src/runtime/select.go:327 +0x614 fp=0x4000070ae0 sp=0x40000709d0 pc=0x454294 github.com/devgianlu/go-librespot/audio.(*KeyProvider).recvLoop(0x400028dc00) /go-librespot/audio/provider.go:63 +0x114 fp=0x4000070fb0 sp=0x4000070ae0 pc=0x7dae14 github.com/devgianlu/go-librespot/audio.(*KeyProvider).startReceiving.func1.gowrap1() /go-librespot/audio/provider.go:53 +0x28 fp=0x4000070fd0 sp=0x4000070fb0 pc=0x7dacc8 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000070fd0 sp=0x4000070fd0 pc=0x475214 created by github.com/devgianlu/go-librespot/audio.(*KeyProvider).startReceiving.func1 in goroutine 66 /go-librespot/audio/provider.go:53 +0x60 goroutine 166 gp=0x4000536e00 m=nil [chan receive, 2 minutes]: runtime.gopark(0x40000be660?, 0x10d1860?, 0x28?, 0x1f?, 0x1000000005479b0?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x40005b1ea0 sp=0x40005b1e80 pc=0x4418a8 runtime.chanrecv(0x400055c240, 0x40005b1fb0, 0x1) /usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x40005b1f20 sp=0x40005b1ea0 pc=0x40d234 runtime.chanrecv2(0x77?, 0x1?) /usr/local/go/src/runtime/chan.go:447 +0x14 fp=0x40005b1f50 sp=0x40005b1f20 pc=0x40ce14 github.com/devgianlu/go-librespot/output.newPulseAudioOutput.func1() /go-librespot/output/driver-pulseaudio.go:92 +0x48 fp=0x40005b1fd0 sp=0x40005b1f50 pc=0x7e7b68 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x40005b1fd0 sp=0x40005b1fd0 pc=0x475214 created by github.com/devgianlu/go-librespot/output.newPulseAudioOutput in goroutine 16 /go-librespot/output/driver-pulseaudio.go:91 +0x5f0 goroutine 153 gp=0x4000537a40 m=nil [chan receive]: runtime.gopark(0x40000bed20?, 0x400058c800?, 0xd8?, 0x8e?, 0x7e3f64?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000438e90 sp=0x4000438e70 pc=0x4418a8 runtime.chanrecv(0x400003e120, 0x4000438f90, 0x1) /usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x4000438f10 sp=0x4000438e90 pc=0x40d234 runtime.chanrecv2(0x40003b7930?, 0x4000000000?) /usr/local/go/src/runtime/chan.go:447 +0x14 fp=0x4000438f40 sp=0x4000438f10 pc=0x40ce14 github.com/jfreymuth/pulse.(*PlaybackStream).run(0x400026e700) /go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/playback.go:97 +0x38 fp=0x4000438fb0 sp=0x4000438f40 pc=0x7e46f8 github.com/jfreymuth/pulse.(*Client).NewPlayback.gowrap2() /go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/playback.go:92 +0x28 fp=0x4000438fd0 sp=0x4000438fb0 pc=0x7e4628 runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000438fd0 sp=0x4000438fd0 pc=0x475214 created by github.com/jfreymuth/pulse.(*Client).NewPlayback in goroutine 16 /go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/playback.go:92 +0x508 goroutine 212 gp=0x4000537c00 m=nil [chan receive, 2 minutes]: runtime.gopark(0x4000075ef8?, 0x40d734?, 0x0?, 0x4?, 0x40000be660?) /usr/local/go/src/runtime/proc.go:402 +0xc8 fp=0x4000075e80 sp=0x4000075e60 pc=0x4418a8 runtime.chanrecv(0x40003245a0, 0x4000075f60, 0x1) /usr/local/go/src/runtime/chan.go:583 +0x404 fp=0x4000075f00 sp=0x4000075e80 pc=0x40d234 runtime.chanrecv2(0x0?, 0xc0c5e0?) /usr/local/go/src/runtime/chan.go:447 +0x14 fp=0x4000075f30 sp=0x4000075f00 pc=0x40ce14 github.com/jfreymuth/pulse.(*PlaybackStream).handleEvents(0x400026e700, 0x40003245a0) /go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/playback.go:130 +0x48 fp=0x4000075fb0 sp=0x4000075f30 pc=0x7e4968 github.com/jfreymuth/pulse.(*Client).NewPlayback.gowrap1() /go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/playback.go:77 +0x2c fp=0x4000075fd0 sp=0x4000075fb0 pc=0x7e468c runtime.goexit({}) /usr/local/go/src/runtime/asm_arm64.s:1222 +0x4 fp=0x4000075fd0 sp=0x4000075fd0 pc=0x475214 created by github.com/jfreymuth/pulse.(*Client).NewPlayback in goroutine 16 /go/pkg/mod/github.com/jfreymuth/pulse@v0.1.2-0.20241102120944-4ffb35054b53/playback.go:77 +0x28c r0 0xfffffffffffffffc r1 0x7fefb61e98 r2 0x80 r3 0xc79 r4 0x0 r5 0x0 r6 0xc79 r7 0x7fefb62688 r8 0x16 r9 0x1 r10 0x0 r11 0x4 r12 0x0 r13 0x1 r14 0xb r15 0xc r16 0x7fefb43bf0 r17 0x7fefb61ec0 r18 0xe0 r19 0xfffffffffffffffb r20 0x7fefb61e40 r21 0x10d2560 r22 0x1 r23 0x11392c8 r24 0x0 r25 0x4000053cc0 r26 0xb6d490 r27 0x109a000 r28 0x10d1f20 r29 0x7fefb61dc8 lr 0x408c78 sp 0x7fefb61dd0 pc 0x408d40 fault 0x0 [devgianlu](https://github.com/devgianlu) devgianlu commented [last week](https://github.com/devgianlu/go-librespot/issues/186#issuecomment-3188793474) devgianlu last week Owner @JaragonCR I am unable to reproduce the issue. Could you try with the alsa backend? JaragonCR JaragonCR commented last week [JaragonCR](https://github.com/JaragonCR) [last week](https://github.com/devgianlu/go-librespot/issues/186#issuecomment-3188909568) @devgianlu not with how iotsound is designed. I could try to add the alsa bridge to the container to emulate alsa but it would take a me a while. JaragonCR JaragonCR commented last week [JaragonCR](https://github.com/JaragonCR) [last week](https://github.com/devgianlu/go-librespot/issues/186#issuecomment-3189330987) · edited by [devgianlu](https://github.com/devgianlu) @devgianlu cannot reproduce with ALSA, works perfectly, you are onto something. Here's my Docker build, needs cleanup, don't judge , it works :P FROM golang:1.22-alpine RUN apk add --no-cache \ git \ build-base \ pkgconf \ alsa-lib-dev \ libogg-dev \ libvorbis-dev \ libpulse \ avahi \ libgcc \ gcompat \ alsa-lib \ curl RUN git clone https://github.com/devgianlu/go-librespot.git /go-librespot WORKDIR /go-librespot RUN go mod download RUN go build -v ./cmd/daemon ENV PULSE_SERVER=tcp:localhost:4317 RUN curl -skL https://raw.githubusercontent.com/balena-io-experimental/audio/master/scripts/alsa-bridge/alpine-setup.sh | sh COPY start.sh /usr/src/ CMD [ "/bin/sh", "/usr/src/start.sh" ] Generated config: librespot log_level: info librespot device_name: Pergola-test librespot device_type: speaker librespot bitrate: 320 librespot normalisation_disabled: true librespot credentials: librespot type: "zeroconf"
kerem 2026-02-28 14:25:38 +03:00
  • closed this issue
  • added the
    bug
    label
Author
Owner

@devgianlu commented on GitHub (Aug 30, 2025):

Could you try running it with pulse outside docker? It seems to work fine for me, maybe the problem is docker or your specific setup.

<!-- gh-comment-id:3239321931 --> @devgianlu commented on GitHub (Aug 30, 2025): Could you try running it with pulse outside docker? It seems to work fine for me, maybe the problem is docker or your specific setup.
Author
Owner

@JaragonCR commented on GitHub (Sep 5, 2025):

@devgianlu digging into the balena audio block it uses pulse 15. Are you testing with 16.2 or 17? I'm looking into how much work rebuilding their audio is. AFAIK it's working great with the ALSA & ALSA-->Pulse script

<!-- gh-comment-id:3259596336 --> @JaragonCR commented on GitHub (Sep 5, 2025): @devgianlu digging into the balena audio block it uses pulse 15. Are you testing with 16.2 or 17? I'm looking into how much work rebuilding their audio is. AFAIK it's working great with the ALSA & ALSA-->Pulse script
Author
Owner

@devgianlu commented on GitHub (Sep 10, 2025):

I did test this on Fedora 42, which doesn't actually use PulseAudio, but rather PipeWire 1.4.7.

<!-- gh-comment-id:3275934391 --> @devgianlu commented on GitHub (Sep 10, 2025): I did test this on Fedora 42, which doesn't actually use PulseAudio, but rather PipeWire 1.4.7.
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#128
No description provided.