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

Abierto
#3,013 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
linux, shell

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.

Lenguaje dominante
Sin datos de lenguaje
Estrellas
2.7k
Forks
89
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ValveSoftware/SteamOS

Todos los issues de ValveSoftware/SteamOS

Issues similares

Más issues de Operating Systems

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.