Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[umu-runtime] Proton prefix initialization fails with "Invalid cross-device link" #440

Closed
vy137 opened this issue Oct 8, 2024 · 14 comments · Fixed by #447
Closed

[umu-runtime] Proton prefix initialization fails with "Invalid cross-device link" #440

vy137 opened this issue Oct 8, 2024 · 14 comments · Fixed by #447

Comments

@vy137
Copy link

vy137 commented Oct 8, 2024

Describe the problem

On the creation of a prefix for a locally-installed game using Wine as its runner, I eventually run into this error (actual username replaced with $USER):

  File "/usr/lib/python3.11/shutil.py", line 853, in move
    os.rename(src, real_dst)
OSError: [Errno 18] Invalid cross-device link: '/home/$USER/.cache/umu/tmp2vm2zwya/SteamLinuxRuntime_sniper/pressure-vessel' -> '/home/$USER/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu/pressure-vessel'

The full logs: lutris.log.
Edit: Got a similar error at a different point on another run: different.log.

(Username replaced with $USER, and game name replaced with $GAME_NAME).

Is it reproducible with native Lutris?

No. On native Lutris 0.5.17-6 (from the Arch repos), I get a different error, though this is likely out of scope and unrelated?

Steps to reproduce

  1. Install Lutris from flathub-beta (commit b87416fc19478cdb74892bf00f644b8233d9e85833247a07d11f4812b000799c). This error also occurs on Lutris from the stable branch, flathub.
  2. Launch Lutris and let it download its runtime files.
  3. Close Lutris and launch it again (so that the Proton options show up).
  4. Add locally installed game.
    4.1. Give it a name.
    4.2. Set the runner to Wine.
    4.3. Set the executable path (somewhere in $HOME, meaning the flatpak has access to all the game files).
    4.4. Set the Wine prefix path to an empty directory (somewhere in $HOME, meaning the flatpak has access to the files).
    4.5. Set Wine version to GE-Proton (Latest), Proton Experimental, Proton 9.0 (Beta), or Proton 8.0. (Proton 7.0 leads to a different error.)
  5. Launch the game.

Expected behavior

The prefix is set up, and the environment is set up such that the game launches and runs.

Actual behavior

The prefix creation is cut short.

Flatpak info

flatpak --version

Flatpak 1.15.10

pacman -Q flatpak

flatpak 1:1.15.10-1

flatpak --gl-drivers:

default
host
@Channeira
Copy link

Channeira commented Oct 11, 2024

seeing exactly the same on Fedora 41, flatpak-1.15.10.
the same happens when using org.openwinecomponents.umu.umu-launcher directly though so this is most likely a umu and not a lutris issue.

lutris and umu-launcher both installed as system apps.

@Mershl
Copy link

Mershl commented Oct 11, 2024

Reported it to umu-launcher: Open-Wine-Components/umu-launcher#219

@Mershl
Copy link

Mershl commented Oct 12, 2024

@strycore umu 1.1.2 has been released which contains a fix for this issue seen in flatpak lutris.

@strycore
Copy link
Collaborator

umu 1.1.2 has been published in Lutris, let me know if this fixes this issue

@Mershl
Copy link

Mershl commented Oct 12, 2024

@R1kaB3rN umu 1.1.2 fixed the "Invalid cross-device link" issue for flatpak umu-launcher and flatpak lutris, but it seems like there's a new error when trying to start a game using umu-run through flatpak lutris.

@vy137 can you confirm this as well?

full log below. interesting bit: Downloading latest steamrt sniper, please wait... appears on every run.

2024-10-12 22:44:16,071: No valid prefix detected in /var/home/mershl/Games/ssd-games/umu-testerino, creating one...
2024-10-12 22:44:16,094: Creating a win64 prefix in /var/home/mershl/Games/ssd-games/umu-testerino
2024-10-12 22:44:16,094: Winepath: /var/home/mershl/.var/app/com.valvesoftware.Steam/data/Steam/compatibilitytools.d/GE-Proton9-15/files/bin/wine
Started initial process 50 from /var/home/mershl/.var/app/net.lutris.Lutris/data/lutris/runtime/umu/umu_run.py createprefix
Start monitoring process.
[umu_run] DEBUG: Connecting to '1.1.1.1'...
[umu_runtime] DEBUG: Root: /var/home/mershl/.var/app/net.lutris.Lutris/data/lutris/runtime/umu/umu-run/umu
[umu_runtime] DEBUG: Local: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu
[umu_runtime] DEBUG: New install detected
Setting up Unified Launcher for Windows Games on Linux...
[umu_run] DEBUG: steamuser in prefix is link: False
[umu_run] DEBUG: user in prefix is link: True
[umu_run] WARNING: Executable not found: createprefix
[umu_runtime] DEBUG: Acquired file lock '/var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu/umu.lock'...
[umu_runtime] DEBUG: Codename: sniper
[umu_runtime] DEBUG: URL: https://repo.steampowered.com/steamrt-images-sniper/snapshots/latest-container-runtime-public-beta
[umu_run] INFO: WINEPREFIX=/var/mnt/ssd-1/mershl/wine/umu-testerino
[umu_run] INFO: GAMEID=umu-default
[umu_run] INFO: PROTON_CRASH_REPORT_DIR=/tmp/umu_crashreports
[umu_run] INFO: PROTONPATH=/var/home/mershl/.var/app/com.valvesoftware.Steam/.local/share/Steam/compatibilitytools.d/GE-Proton9-15
[umu_run] INFO: STEAM_COMPAT_APP_ID=default
[umu_run] INFO: STEAM_COMPAT_TOOL_PATHS=/var/home/mershl/.var/app/com.valvesoftware.Steam/.local/share/Steam/compatibilitytools.d/GE-Proton9-15:/var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu
[umu_run] INFO: STEAM_COMPAT_LIBRARY_PATHS=
[umu_run] INFO: STEAM_COMPAT_MOUNTS=/var/home/mershl/.var/app/com.valvesoftware.Steam/.local/share/Steam/compatibilitytools.d/GE-Proton9-15:/var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu
[umu_run] INFO: STEAM_COMPAT_INSTALL_PATH=
[umu_run] INFO: STEAM_COMPAT_CLIENT_INSTALL_PATH=
[umu_run] INFO: STEAM_COMPAT_DATA_PATH=/var/mnt/ssd-1/mershl/wine/umu-testerino
[umu_run] INFO: STEAM_COMPAT_SHADER_PATH=/var/mnt/ssd-1/mershl/wine/umu-testerino/shadercache
[umu_run] INFO: FONTCONFIG_PATH=
[umu_run] INFO: EXE=createprefix
[umu_run] INFO: SteamAppId=default
[umu_run] INFO: SteamGameId=default
[umu_run] INFO: STEAM_RUNTIME_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/openh264/extra:/usr/lib/x86_64-linux-gnu/GL/default/lib:/app/lib/i386-linux-gnu/GL/default/lib:/app/lib/ffmpeg:/usr/lib/x86_64-linux-gnu:/app/lib:/app/lib32:/app/lib/i386-linux-gnu:/app/lib32/ffmpeg:/usr/lib/extensions/vulkan/gamescope/lib
[umu_run] INFO: STORE=
[umu_run] INFO: PROTON_VERB=waitforexitandrun
[umu_run] INFO: UMU_ID=umu-default
[umu_run] INFO: ULWGL_ID=umu-default
[umu_run] INFO: UMU_ZENITY=
[umu_run] INFO: UMU_NO_RUNTIME=
[umu_run] INFO: UMU_RUNTIME_UPDATE=
Downloading latest steamrt sniper, please wait...
SteamLinuxRuntime_sniper.tar.xz: SHA256 is OK
[umu_runtime] DEBUG: Opening: /tmp/tmpkpie8ao4/SteamLinuxRuntime_sniper.tar.xz
[umu_runtime] DEBUG: Created: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo
[umu_runtime] DEBUG: Moving: /tmp/tmpkpie8ao4/SteamLinuxRuntime_sniper.tar.xz -> /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo
[umu_runtime] DEBUG: Using filter for archive
[umu_runtime] DEBUG: Extracting: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo/SteamLinuxRuntime_sniper.tar.xz -> /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo
2024-10-12 22:44:46,602: Wine prefix creation is taking longer than expected...
[umu_runtime] DEBUG: Source: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo/SteamLinuxRuntime_sniper
[umu_runtime] DEBUG: Destination: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu
[umu_runtime] DEBUG: Moving: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo/SteamLinuxRuntime_sniper/README.md -> /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu/README.md
[umu_runtime] DEBUG: Moving: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo/SteamLinuxRuntime_sniper/VERSIONS.txt -> /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu/VERSIONS.txt
[umu_runtime] DEBUG: Moving: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo/SteamLinuxRuntime_sniper/mtree.txt.gz -> /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu/mtree.txt.gz
[umu_runtime] DEBUG: Moving: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo/SteamLinuxRuntime_sniper/_v2-entry-point -> /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu/_v2-entry-point
[umu_runtime] DEBUG: Moving: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo/SteamLinuxRuntime_sniper/pressure-vessel -> /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu/pressure-vessel
[umu_runtime] DEBUG: Moving: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo/SteamLinuxRuntime_sniper/run -> /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu/run
[umu_runtime] DEBUG: Moving: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo/SteamLinuxRuntime_sniper/sniper_platform_0.20241008.104210 -> /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu/sniper_platform_0.20241008.104210
[umu_runtime] DEBUG: Moving: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo/SteamLinuxRuntime_sniper/run-in-sniper -> /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu/run-in-sniper
[umu_runtime] DEBUG: Moving: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo/SteamLinuxRuntime_sniper/steampipe -> /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu/steampipe
[umu_runtime] DEBUG: Moving: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo/SteamLinuxRuntime_sniper/toolmanifest.vdf -> /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu/toolmanifest.vdf
[umu_runtime] DEBUG: Renaming: _v2-entry-point -> umu
Verifying integrity of sniper_platform_0.20241008.104210...
sniper_platform_0.20241008.104210: mtree is OK
[umu_runtime] DEBUG: Released file lock '/var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu/umu.lock'
[umu_run] DEBUG: (PosixPath('/var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/data/umu/umu'), '--verb', 'waitforexitandrun', '--', PosixPath('/var/home/mershl/.var/app/com.valvesoftware.Steam/.local/share/Steam/compatibilitytools.d/GE-Proton9-15/proton'), 'waitforexitandrun', 'createprefix')
[umu_run] DEBUG: prctl exited with status: 0
pressure-vessel-wrap[61]: W: /dev/shm not shared between app instances (flatpak#4214). The Steam Overlay will not work.
steam-runtime-launch-client[61]: E: Unable to convert /app fd 16 into path: different file inside and outside sandbox
[umu_run] DEBUG: Child 61 exited with wait status: 125
send: b'GET /steamrt-images-sniper/snapshots/latest-container-runtime-public-beta/SHA256SUMS?versions=r4uiS7rgQ4RZ_NQzAkwKcA HTTP/1.1\r\nHost: repo.steampowered.com\r\nAccept-Encoding: identity\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
header: Date: Sat, 12 Oct 2024 20:44:17 GMT
header: Content-Type: text/plain
header: Content-Length: 267901
header: Connection: keep-alive
header: Last-Modified: Tue, 08 Oct 2024 12:53:06 GMT
header: ETag: "67052b32-4167d"
header: Cache-Control: public
header: CF-Cache-Status: MISS
header: Accept-Ranges: bytes
header: Vary: Accept-Encoding
header: Server: cloudflare
header: CF-RAY: 8d19ed4b5fced2cf-FRA
send: b'GET /steamrt-images-sniper/snapshots/latest-container-runtime-public-beta/SteamLinuxRuntime_sniper.tar.xz?versions=r4uiS7rgQ4RZ_NQzAkwKcA HTTP/1.1\r\nHost: repo.steampowered.com\r\nAccept-Encoding: identity\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
header: Date: Sat, 12 Oct 2024 20:44:19 GMT
header: Content-Type: application/octet-stream
header: Content-Length: 182863832
header: Connection: keep-alive
header: Last-Modified: Tue, 08 Oct 2024 12:53:09 GMT
header: ETag: "67052b35-ae647d8"
header: Cache-Control: public
header: CF-Cache-Status: MISS
header: Accept-Ranges: bytes
header: Vary: Accept-Encoding
header: Server: cloudflare
header: CF-RAY: 8d19ed55fdc4d2cf-FRA
Monitored process exited.
Initial process has exited (return code: 32000)
All processes have quit
Exit with return code 32000

@zocker-160
Copy link

zocker-160 commented Oct 12, 2024

Experiencing the same issue myself, @Mershl could you check if - after it exits - the folder ~/.var/app/org.openwinecomponents.umu.umu-launcher does exist and if there is anything inside?

Mine is empty and it could be related to what I mentioned here.
Could explain the

Downloading latest steamrt sniper, please wait... appears on every run.

part, because the files are not actually persisting.

@Mershl
Copy link

Mershl commented Oct 12, 2024

@Mershl could you check if - after it exits - the folder ~/.var/app/org.openwinecomponents.umu.umu-launcher does exist and if there is anything inside?

can confirm, ~/.var/app/org.openwinecomponents.umu.umu-launcher is not getting created by a umu-run of flatpak lutris / doesn't exist after an umu-run of flatpak lutris.

@strycore
Copy link
Collaborator

that doesn't make the slightest amount of sense. The Lutris Flatpak doesn't have access to ~/.var/app/org.openwinecomponents.umu.umu-launcher

What you're looking for is .var/app/net.lutris.Lutris/data/lutris/runtime/umu

@Mershl
Copy link

Mershl commented Oct 12, 2024

that doesn't make the slightest amount of sense. The Lutris Flatpak doesn't have access to ~/.var/app/org.openwinecomponents.umu.umu-launcher

at least the log is stating those write intentions

[umu_runtime] DEBUG: Created: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo
[umu_runtime] DEBUG: Moving: /tmp/tmpkpie8ao4/SteamLinuxRuntime_sniper.tar.xz -> /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo
[umu_runtime] DEBUG: Using filter for archive
[umu_runtime] DEBUG: Extracting: /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo/SteamLinuxRuntime_sniper.tar.xz -> /var/home/mershl/.var/app/org.openwinecomponents.umu.umu-launcher/cache/umu/tmpkcplkyoo

is umu 1.1.2 working for you in flatpak lutris @strycore?

@strycore
Copy link
Collaborator

is umu 1.1.2 working for you in flatpak lutris @strycore?

I haven't started QA for the Flatpak and I need to push an update to Flathub Beta.

@zocker-160
Copy link

zocker-160 commented Oct 12, 2024

that doesn't make the slightest amount of sense. The Lutris Flatpak doesn't have access to ~/.var/app/org.openwinecomponents.umu.umu-launcher

What you're looking for is .var/app/net.lutris.Lutris/data/lutris/runtime/umu

negative @strycore, see my comment to this PR: Open-Wine-Components/umu-launcher#220 (comment)

The .var/app/org.openwinecomponents.umu.umu-launcher path is hardcoded.

@strycore
Copy link
Collaborator

I have launched a new build: #442

@Mershl
Copy link

Mershl commented Oct 13, 2024

I have launched a new build: #442

This workaround "fixes" the issue and allows umu through flatpak lutris to go ingame.
It has a small issue: if the host directory ~/.var/app/org.openwinecomponents.umu.umu-launcher does not exist beforehand then the set permission does not allow flatpak lutris to create the "real" directory and it will create and fill an sandboxed/volatile ~/.var/app/org.openwinecomponents.umu.umu-launcher instead - which crashes when trying to launch.

On a sidenote... all that testing seems to have mangled my flatpak environment. I can no longer reference paths outside my home (even with excessive flatpak filesystem overrides) from flatpak lutris. everything outside home turns into /run/user paths when going through the GNOME file picker...

@Mershl
Copy link

Mershl commented Oct 13, 2024

On a sidenote... all that testing seems to have mangled my flatpak environment. I can no longer reference paths outside my home (even with excessive flatpak filesystem overrides) from flatpak lutris. everything outside home turns into /run/user paths when going through the GNOME file picker...

Slight off-topic, but this might be interesting to some:
xdg-document-portal[5003]: error: Multiple branches available for net.lutris.Lutris, you must specify one of: net.lutris.Lutris/x86_64/stable, net.lutris.Lutris/x86_64/beta picking a file outside the home directory will fallback to temp paths even if fitting --filesystem's have been specified if multiple branches of the same flatpak app are present. The issue is instantly fixed after removing one of the two branches.

created flatpak/flatpak#5966

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants