[Steam Frame] xdg-desktop-portal-holo segfaults on Settings.ReadOne for a missing key

Aperta
#3,013 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
linux, shell

Direzione di ricerca

Start by running the provided gdbus reproduction in the Steam Frame gamescope session and confirm that xdg-desktop-portal-holo exits with SIGSEGV. Trace the org.freedesktop.portal.Settings.ReadOne handling in the xdg-desktop-portal-holo backend to find where a missing key or namespace causes the crash. Done means the backend remains alive and returns org.freedesktop.portal.Error.NotFound or an empty result, with a regression test covering the missing-key case.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Your system information

  • Device: Steam Frame
  • SteamOS: 0.4.5 (variant vr, build 20261022.6150929)
  • SteamVR: 2.18.2
  • Packages: xdg-desktop-portal-holo 0.1.14.bb73298-2, xdg-desktop-portal 1.18.4-1
  • Session: gamescope-session (XDG_CURRENT_DESKTOP=gamescope)

Please describe your issue in as much detail as possible:

xdg-desktop-portal-holo crashes with SIGSEGV whenever a client asks the Settings portal for a key that does not exist
via org.freedesktop.portal.Settings.ReadOne. Instead of returning org.freedesktop.portal.Error.NotFound, the backend
process dies (systemd restarts it on the next request).

In practice this is hit by every Qt app that runs as a Flatpak from the Steam session: the gamescope session exports
QT_QPA_PLATFORMTHEME=kde, so Qt loads the KDE Plasma platform theme, which (inside Flatpak) reads kdeglobals keys
through the Settings portal. On our headset the backend crashed 37 times in two days, once every time our app opened its
window (coredumpctl shows /usr/lib/xdg-desktop-portal-holo SIGSEGV, minidumps are in
/var/lib/steamos-log-submitter/pending/minidump/).

ReadOne for an existing key, the deprecated Read, and ReadAll (including a namespace that matches nothing) all work.

Steps for reproducing this issue:

  1. On a Steam Frame, open a shell in the gamescope session (SSH as the default user is enough).
  2. Note the current crash count:
    coredumpctl list --no-pager | grep -c xdg-desktop-portal-holo
  3. Ask the portal for a key that does not exist:
    gdbus call --session --dest org.freedesktop.portal.Desktop \
      --object-path /org/freedesktop/portal/desktop \
      --method org.freedesktop.portal.Settings.ReadOne org.kde.kdeglobals.General ColorScheme
    
    The call returns GDBus.Error:org.freedesktop.portal.Error.NotFound: Requested setting not found (generated by the
    frontend after the backend went away).
  4. Count again: the number went up by one. journalctl --user -u xdg-desktop-portal-holo shows
    Main process exited, code=dumped, status=11/SEGV.

For comparison, these do not crash:

... --method org.freedesktop.portal.Settings.ReadOne org.freedesktop.appearance color-scheme
... --method org.freedesktop.portal.Settings.Read    org.freedesktop.appearance color-scheme
... --method org.freedesktop.portal.Settings.ReadAll '["org.kde.kdeglobals.*"]'

Expected: the backend returns NotFound (or an empty result) for unknown namespaces/keys and keeps running.

Workaround we ship: inside Flatpak we override QT_QPA_PLATFORMTHEME=kde with xdgdesktopportal before
QGuiApplication is created, so Qt only reads org.freedesktop.appearance.

Lingua principale
Nessun dato sulla lingua
Stelle
2.7k
Fork
89
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di ValveSoftware/SteamOS

Tutte le issue di ValveSoftware/SteamOS

Issue simili

Altre issue su Operating Systems

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.