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

オープン
#3,013 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
48/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
linux, shell

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

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.

主要言語
言語のデータがありません
スター
2.7k
フォーク
89
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

ValveSoftware/SteamOS のほかの issue

ValveSoftware/SteamOS の issue をすべて見る

似ている issue

Operating Systems の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。