Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Sync playback crashes repeatedly in a sync group (v9.1.1)

Open Beginner friendly
#1,701 6 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@Bizarrus is already working on this.

Since Oct 23, 2026.

  • #1703 by @Bizarrus — open

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
68/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
perl
Domain
backend

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

  1. Have one or more real players (squeezelite / Squeezebox) in the setup.
  2. 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).
  3. Put the HTTP player into the same sync group as the real player(s).
  4. Start (synchronized) playback of the group.
  5. server.log repeatedly logs the startAt error 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 userland arm-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, model http) — all three in one sync group
  • Endpoint: :9000/stream.mp3

Additional context

Root cause from the source:

  • Slim/Player/HTTP.pm declares @ISA = qw(Slim::Player::Client) and does not implement startAt. startAt is only defined in the real player classes (SLIMP3.pm, Squeezebox1.pm, Squeezebox2.pm, SqueezeSlave.pm), not in the Slim::Player::Client base that HTTP inherits from.
  • Slim/Player/StreamingController.pm (~line 1509) iterates over all players of the sync group at sync-start and calls startAt unconditionally:
foreach $player ( @{ $self->{'players'} } ) {
    $player->startAt(
        $startAt - (
            $prefs->client($player)->get('startDelay') +
              $prefs->client($player)->get('playDelay') ) / 1000
    );
}
  • When a Slim::Player::HTTP member is present, this call dies with Can'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

Open in Codespaces

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from LMS-Community/slimserver

All issues in LMS-Community/slimserver

Similar issues

More Perl issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.