Skip to content

noson-gui crashes (SIGABRT) when MPRIS Pause is received while the Sonos speaker is unreachable #262

Description

@aratuk

Summary
noson-gui aborts (SIGABRT) when an MPRIS Pause command arrives (e.g. sent automatically by the desktop environment on system suspend) while the target Sonos speaker's socket connection is not immediately available. The main/UI thread makes a synchronous, blocking HTTP request to the speaker in response to the D-Bus call, with no exception handling around the network/socket layer.

Environment
OS: Fedora Linux (aarch64 — Fedora Asahi Remix)
Kernel/arch: aarch64
Desktop environment: KDE Plasma
Trigger: Laptop lid closed → systemd-logind initiates suspend → Plasma's PowerDevil sends an MPRIS Pause command to all detected media players (including noson-gui) via its "Pause media players when suspending" feature
Relevant packages at crash time (from coredump): Qt 6.11.1, KF6 6.28.x libraries, libNosonApp

Steps to Reproduce

  1. Run noson-gui connected to a Sonos speaker.
  2. Start or leave playback active/available on the speaker.
  3. Close the laptop lid (or otherwise trigger a system suspend) on a KDE Plasma session with "Pause media players when suspending" enabled.
  4. PowerDevil sends an MPRIS Pause D-Bus call to noson-gui.
  5. noson-gui crashes with SIGABRT before/during suspend.

Actual Behavior
The process aborts. Systemd coredump shows the abort occurring on the main thread while it was in the middle of an HTTP request to the speaker:

#3  __select (libc.so.6)
#4  SONOS::TcpSocket::ReceiveData
#5  SONOS::WSResponse::ReadHeaderLine
#6  SONOS::WSResponse::_response::GetResponse
#7  SONOS::WSResponse::_response::_response (ctor)
#8  SONOS::WSResponse::init
#9  SONOS::Service::Request
#10 SONOS::AVTransport::Pause
#11 nosonapp::Player::pause
#12 Mpris2Player::qt_metacall
#13 QDBusConnectionPrivate::deliverCall
...
#26 QCoreApplication::exec
#27 main

All other threads in the process are idle/parked (pthread_cond_wait, poll, etc.) at the time of the crash — only the main thread, mid-network-call in response to the MPRIS Pause, is implicated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions