Sync playback crashes repeatedly in a sync group (v9.1.1)
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 68/100
Research direction
Read Slim/Player/HTTP.pm and the sync-start loop in Slim/Player/StreamingController.pm around line 1511. Reproduce with an HTTP player and real players in one sync group, then check how the loop handles players without startAt. Done means synchronized playback no longer repeatedly fails with the reported missing-method error.
Written by the indexing model from the issue text.
Description
Describe the bug
Playback for an entire sync group is constantly interrupted (drop/restart every fraction of a second) when the group contains an HTTP player (model http, e.g. VLC pulling the LMS stream) together with real squeezelite/Squeezebox players.
While such a group plays, server.log fills up with a repeating fatal error about every 0.4 s:
Error: Select task failed calling Slim::Web::HTTP::sendStreamingResponse:
Can't locate object method "startAt" via package "Slim::Player::HTTP"
at .../Slim/Player/StreamingController.pm line 1511.
The streaming task dies and is retried continuously, so audio on the real players in that group keeps breaking up. Removing the HTTP player from the sync group makes the problem disappear immediately.
To Reproduce
- Have one or more real players (squeezelite / Squeezebox) in the setup.
- Connect an HTTP player — e.g. open the LMS stream URL in VLC. It shows up as a player with model
http(Slim::Player::HTTP). - Put the HTTP player into the same sync group as the real player(s).
- Start (synchronized) playback of the group.
server.logrepeatedly logs thestartAterror above and playback on all grouped players keeps stuttering/restarting.
Expected behavior
An HTTP player being part of a sync group should not crash the streaming task. Either HTTP players should be excluded from synchronized groups, or Slim::Player::HTTP should provide a (no-op) startAt, so StreamingController can sync-start the group without a fatal "Can't locate object method" error.
System Information:
- OS on which LMS runs: Raspbian GNU/Linux 11 (bullseye)
- Hardware: ARM — kernel
6.1.93-v8+aarch64, LMS Perl userlandarm-linux-gnueabihf(32-bit) - Web skin used: n/a (not skin-related; triggered via player synchronization)
- Browser: n/a
- LMS Version: 9.1.1 (
1779815526, Wed Jun 17 2026), Perl 5.32.1 - Players involved: two squeezelite players (
Garage,am-Wohnzimmer) and one HTTP player (VLC aus 172.31.160.106, modelhttp) — all three in one sync group - Endpoint: :9000/stream.mp3
Additional context
Root cause from the source:
Slim/Player/HTTP.pmdeclares@ISA = qw(Slim::Player::Client)and does not implementstartAt.startAtis only defined in the real player classes (SLIMP3.pm,Squeezebox1.pm,Squeezebox2.pm,SqueezeSlave.pm), not in theSlim::Player::Clientbase thatHTTPinherits from.Slim/Player/StreamingController.pm(~line 1509) iterates over all players of the sync group at sync-start and callsstartAtunconditionally:
foreach $player ( @{ $self->{'players'} } ) {
$player->startAt(
$startAt - (
$prefs->client($player)->get('startDelay') +
$prefs->client($player)->get('playDelay') ) / 1000
);
}
- When a
Slim::Player::HTTPmember is present, this call dies withCan't locate object method "startAt", the streaming task is killed, and LMS retries it ~every 0.4 s — which is what produces the continuous interruptions.
server.log snippet (repeats continuously while the HTTP player is in the group):
[26-10-22 12:55:23.2895] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::sendStreamingResponse: Can't locate object method "startAt" via package "Slim::Player::HTTP" at /usr/share/perl5/Slim/Player/StreamingController.pm line 1511.
Workaround: remove the HTTP player from the sync group.
- Dominant language
- Perl
- Stars
- 1.8k
- Forks
- 381
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 14
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- No pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from LMS-Community/slimserver
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
LMS-Community/slimserver#1555 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 55/100
LMS-Community/slimserver#1683 · 3 comments ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
LMS-Community/slimserver#1677 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
LMS-Community/slimserver#1673 · 4 comments ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 68/100
LMS-Community/slimserver#1665 · 6 comments ·
Maintainers usually reply within 1 day
All issues in LMS-Community/slimserver
Similar issues
-
observablt-ci
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
elastic/golang-crossbuild#840 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
RotherOSS/otobo#6286 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
fix(api): API v3 Product Read ignores request language (lc) for sample products and image URLsPossibly taken @muntasir-396 claimed this 4 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
openfoodfacts/openfoodfacts-server#15042 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 3 days