hyprwm / xdg-desktop-portal-hyprland

xdg-desktop-portal backend for Hyprland
BSD 3-Clause "New" or "Revised" License
266 stars 45 forks source link

Screen capture stops working after $HOURS #131

Open 2e0byo opened 9 months ago

2e0byo commented 9 months ago

At some point (4h < point < 24h) after booting the system, screen capture fails: obs for instance shows

info: [pipewire] Asking for desktop
info: [pipewire] desktop selected, setting up screencast
info: [pipewire] Server version: 0.3.84
info: [pipewire] Library version: 0.3.84
info: [pipewire] Header version: 0.3.84
info: [pipewire] Created stream 0x562bfd558800
info: [pipewire] Stream 0x562bfd558800 state: "connecting" (error: none)
info: [pipewire] Playing stream 0x562bfd558800
info: [pipewire] Stream 0x562bfd558800 state: "paused" (error: none)
info: [pipewire] Stream 0x562bfd558800 state: "error" (error: no more input formats)
error: [pipewire] Error id:2 seq:10 res:-32 (Unknown error -32): no more input

I've traced this down to xdg-desktop-portal-hyprland by restarting services until it worked again. Logs from before restart:

Nov 18 18:05:01 digory xdg-desktop-portal-hyprland[2852]: [LOG] [screencopy] SHAREDATA returned selection 0
Nov 18 18:05:01 digory xdg-desktop-portal-hyprland[2852]: [LOG] [screencopy] Start:
Nov 18 18:05:01 digory xdg-desktop-portal-hyprland[2852]: [LOG] [screencopy]  | /org/freedesktop/portal/desktop/request/1_125/obs3
Nov 18 18:05:01 digory xdg-desktop-portal-hyprland[2852]: [LOG] [screencopy]  | /org/freedesktop/portal/desktop/session/1_125/obs1
Nov 18 18:05:01 digory xdg-desktop-portal-hyprland[2852]: [LOG] [screencopy]  | appid:
Nov 18 18:05:01 digory xdg-desktop-portal-hyprland[2852]: [LOG] [screencopy]  | parent_window:
Nov 18 18:05:01 digory xdg-desktop-portal-hyprland[2852]: [ERR] [screencopy] Couldn't obtain a format from dma
Nov 18 18:05:01 digory xdg-desktop-portal-hyprland[2852]: [LOG] [screencopy] New session:
Nov 18 18:05:01 digory xdg-desktop-portal-hyprland[2852]: [LOG] [screencopy]  | /org/freedesktop/portal/desktop/request/1_118/webrtc_53953641
Nov 18 18:05:01 digory xdg-desktop-portal-hyprland[2852]: [LOG] [screencopy]  | /org/freedesktop/portal/desktop/session/1_118/webrtc_session903947359
Nov 18 18:05:01 digory xdg-desktop-portal-hyprland[2852]: [LOG] [screencopy]  | appid:
Nov 18 18:05:01 digory xdg-desktop-portal-hyprland[2852]: [LOG] [screencopy] SelectSources:
Nov 18 18:05:01 digory xdg-desktop-portal-hyprland[2852]: [LOG] [screencopy]  | /org/freedesktop/portal/desktop/request/1_118/webrtc908602552
Logs from after, with successful screen capture ``` ov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] SHAREDATA returned selection 0 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] Start: Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_162/obs3 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_162/obs1 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | appid: Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | parent_window: Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [pw] Building modifiers for dma Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] Sharing initialized Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] New session: Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_168/obs1 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_168/obs1 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | appid: Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] SelectSources: Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_168/obs2 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_168/obs1 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | appid: Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] option cursor_mode to 2 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] option persist_mode to 2 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] unused option multiple Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] unused option types Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] restore data invalid / missing, prompting Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] execAndGet: WAYLAND_DISPLAY=wayland-1 QT_QPA_PLATFORM="wayland" XCURSOR_SIZE=24 HYPRLAND_IN> Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [sc] Selection: /screen:DP-4 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] SHAREDATA returned selection 0 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] Start: Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_168/obs3 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_168/obs1 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | appid: Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | parent_window: Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [pw] Building modifiers for dma Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] Sharing initialized Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [pw] Building modifiers for dma Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [pw] Building modifiers for dma Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy/pipewire] Out of buffers Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] New session: Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_174/obs1 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_174/obs1 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | appid: Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] SelectSources: Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_174/obs2 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_174/obs1 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | appid: Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] option cursor_mode to 2 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] option persist_mode to 2 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] unused option multiple Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] unused option types Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] restore data invalid / missing, prompting Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] execAndGet: WAYLAND_DISPLAY=wayland-1 QT_QPA_PLATFORM="wayland" XCURSOR_SIZE=24 HYPRLAND_IN> Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [sc] Selection: /screen:DP-4 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] SHAREDATA returned selection 0 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] Start: Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_174/obs3 Nov 18 18:31:00 digory xdg-desktop-portal-hyprland[556063]: [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_174/obs1 ```

I've realised I'm on a slightly outdated commit, so I'll rebuild (arch, xdg-desktop-portal-hyprland-git) and see if this goes away, but it's been happening for at least a month.

How do I debug further? If it just failed I'd run in gdb, but I don't want to do that for hours on end until the problem emerges.

pwfff commented 8 months ago

for me it's not $HOURS, but literally once and only once. so when I try to screenshare with, say, Discord, the preview works great, but as soon as I choose the screen to actually stream it, I'm prompted twice more to select a screen (regardless of whether or not I manually checked the 'restore token' box), and both attempts fail. trying to share again leaves even the preview broken.

log output with one success and two failures ``` [LOG] [toplevel] (activate) locks: 1 [LOG] [toplevel] Activated, bound to 563919e7db60, toplevels: 6 [LOG] [screencopy] New session: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_24/webrtc_1247569504 [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_24/webrtc_session1436077690 [LOG] [screencopy] | appid: [LOG] [screencopy] SelectSources: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_24/webrtc1537828523 [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_24/webrtc_session1436077690 [LOG] [screencopy] | appid: [LOG] [screencopy] option persist_mode to 1 [LOG] [screencopy] unused option multiple [LOG] [screencopy] unused option types [LOG] [screencopy] restore data invalid / missing, prompting [LOG] execAndGet: WAYLAND_DISPLAY=wayland-1 QT_QPA_PLATFORM="wayland" XCURSOR_SIZE=24 HYPRLAND_INSTANCE_SIGNATURE=d74607e414dcd16911089a6d4b6aeb661c880923_1703709085 XDPH_WINDOW_SHARING_LIST="" hyprland-share-picker 2>&1 [LOG] [sc] Selection: /screen:DP-2 [LOG] [screencopy] SHAREDATA returned selection 0 [LOG] [screencopy] Start: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_24/webrtc311680905 [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_24/webrtc_session1436077690 [LOG] [screencopy] | appid: [LOG] [screencopy] | parent_window: [LOG] [pw] Building modifiers for dma [LOG] [screencopy] Sharing initialized [LOG] [pw] Building modifiers for dma [LOG] [screencopy] Stream destroyed [LOG] [screencopy] Session destroyed [LOG] [toplevel] (deactivate) locks: 0 [LOG] [toplevel] unbound manager [ERR] [pw] Attempted enqueue on invalid session?? [LOG] [toplevel] (activate) locks: 1 [LOG] [toplevel] Activated, bound to 563919e8fd40, toplevels: 6 [LOG] [screencopy] New session: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_24/webrtc_904717317 [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_24/webrtc_session2131647627 [LOG] [screencopy] | appid: [LOG] [screencopy] SelectSources: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_24/webrtc874214467 [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_24/webrtc_session2131647627 [LOG] [screencopy] | appid: [LOG] [screencopy] option persist_mode to 1 [LOG] [screencopy] unused option multiple [LOG] [screencopy] unused option types [LOG] [screencopy] restore data invalid / missing, prompting [LOG] execAndGet: WAYLAND_DISPLAY=wayland-1 QT_QPA_PLATFORM="wayland" XCURSOR_SIZE=24 HYPRLAND_INSTANCE_SIGNATURE=d74607e414dcd16911089a6d4b6aeb661c880923_1703709085 XDPH_WINDOW_SHARING_LIST="" hyprland-share-picker 2>&1 [LOG] [sc] Selection: /screen:DP-2 [LOG] [screencopy] SHAREDATA returned selection 0 [LOG] [screencopy] Session destroyed [LOG] [toplevel] (deactivate) locks: 0 [LOG] [toplevel] unbound manager [LOG] [toplevel] (activate) locks: 1 not a valid new object id (4278190098), message toplevel(n) [LOG] [toplevel] Activated, bound to 563919e8fd40, toplevels: 0 [LOG] [screencopy] New session: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_24/webrtc_603111804 [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_24/webrtc_session847136615 [LOG] [screencopy] | appid: [LOG] [toplevel] (activate) locks: 2 [LOG] [screencopy] New session: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_24/webrtc_356998718 [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_24/webrtc_session1926349320 [LOG] [screencopy] | appid: [LOG] [screencopy] SelectSources: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_24/webrtc1122189795 [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_24/webrtc_session847136615 [LOG] [screencopy] | appid: [LOG] [screencopy] option persist_mode to 1 [LOG] [screencopy] unused option multiple [LOG] [screencopy] unused option types [LOG] [screencopy] restore data invalid / missing, prompting [LOG] execAndGet: WAYLAND_DISPLAY=wayland-1 QT_QPA_PLATFORM="wayland" XCURSOR_SIZE=24 HYPRLAND_INSTANCE_SIGNATURE=d74607e414dcd16911089a6d4b6aeb661c880923_1703709085 XDPH_WINDOW_SHARING_LIST="" hyprland-share-picker 2>&1 [LOG] [sc] Selection: /screen:DP-2 [LOG] [screencopy] SHAREDATA returned selection 0 [LOG] [screencopy] Start: [LOG] [screencopy] | /org/freedesktop/portal/desktop/request/1_24/webrtc5153249 [LOG] [screencopy] | /org/freedesktop/portal/desktop/session/1_24/webrtc_session847136615 [LOG] [screencopy] | appid: [LOG] [screencopy] | parent_window: [ERR] [screencopy] Couldn't obtain a format from dma [LOG] [screencopy] Stream destroyed [LOG] [screencopy] Session destroyed [LOG] [toplevel] (deactivate) locks: 1 ```
ellwoodb commented 8 months ago

I'm having the same problem. After streaming once, it's broken, until I logout and login again. That should restart xdg-desktop-portal-hyprland and then it works again.

Edit: The error is exactly the same as @pwfff : [ERR] [screencopy] Couldn't obtain a format from dma

higor-dev commented 8 months ago

Having the exact same problem as @pwfff. First screen share works properly, stops working soon as I start sharing again. My logs are equal to @2e0byo's.

As a workaround I'm using the nuclear script from the wiki, https://wiki.hyprland.org/Useful-Utilities/Hyprland-desktop-portal/ everytime I need to screenshare.

jh-devv commented 8 months ago

Having the same issue, seems to be somewhat related to #11 #123,

I'm having the same problem. After streaming once, it's broken, until I logout and login again. That should restart xdg-desktop-portal-hyprland and then it works again.

Edit: The error is exactly the same as @pwfff : [ERR] [screencopy] Couldn't obtain a format from dma

Yea, I noticed this from the menu becoming "empty" in my duplicate issue here #152 😂

jh-devv commented 8 months ago

@ellwoodb I have managed to fix the [ERR] [screencopy] Couldn't obtain a format from dma by having OBS open before doing the screencast on Discord? It's weird, maybe something related to dma?

ellwoodb commented 8 months ago

@jh-devv I sadly don't have enough knowledge about how the portal works to know about dma stuff.

Despite that, opening OBS before Discord seems to "keep it alive" somehow. Interesting...

sudoAlphaX commented 1 month ago

for me it's not $HOURS, but literally once and only once. so when I try to screenshare with, say, Discord, the preview works great, but as soon as I choose the screen to actually stream it, I'm prompted twice more to select a screen (regardless of whether or not I manually checked the 'restore token' box), and both attempts fail. trying to share again leaves even the preview broken.

Having the same issue. Have you found any solutions to this problem?