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

Đang mở
#3,013 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
48/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
linux, shell
Lĩnh vực
operating-systems

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.

Ngôn ngữ chính
Không có dữ liệu ngôn ngữ
Star
2.7k
Fork
89
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của ValveSoftware/SteamOS

Tất cả issue của ValveSoftware/SteamOS

Issue tương tự

Thêm issue về Operating Systems

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.