protonscr

Dust: An Elysian Tail

protonopen appid 236090Game compatibility - Unofficial.NET.NET-XNA
ValveSoftware/Proton#7923 · opened 2024-07-23 by ranplayer · updated 2024-07-29 · 3 comments · github · game page · search this game
Rranplayer 2024-07-23 github

Compatibility Report

  • Name of the game with compatibility issues: Dust: An Elysian Tail
  • Steam AppID of the game: 236090

System Information

  • GPU: RX 6700 XT

  • Video driver version: Mesa 24.1.3

  • Kernel version: 6.9.10 / 6.6.40

  • Link to full system information report:
    sysinfo_2024_07_23.tar.gz

  • Proton version: Experimental (2024/07/22), 9.0-2, 8.0-5

I confirm:

  • [X] that I haven't found an existing compatibility report for this game.
  • [X] that I have checked whether there are updates for my system available.

Proton log:

457.708:0124:0128:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised
457.708:0124:0128:trace:seh:dispatch_exception  eax=00000021 ebx=0108d160 ecx=00000021 edx=0000447b esi=01510af0 edi=00000000
457.708:0124:0128:trace:seh:dispatch_exception  ebp=0088f808 esp=0088f7d0 cs=0023 ss=002b ds=002b es=002b fs=0063 gs=006b flags=00010206
457.708:0124:0128:trace:seh:call_vectored_handlers calling handler at 7A6D3570 code=c0000005 flags=0
457.708:0124:0128:trace:seh:call_vectored_handlers handler at 7A6D3570 returned ffffffff
[00000128:] EXCEPTION handling: System.NullReferenceException: Object reference not set to an instance of an object
[ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object
  at SteamWrapped.MethodUtil.MethodSignaturesEqual (System.Reflection.MethodBase x, System.Reflection.MethodBase y) [0x00006] in <191027171fce4bbb927a742cd12d8d5a>:0 
  at SteamWrapped.MethodUtil.ReplaceMethod (System.Reflection.MethodBase source, System.Reflection.MethodBase dest) [0x00000] in <191027171fce4bbb927a742cd12d8d5a>:0 
  at SteamWrapped.SteamWraps.chk () [0x00063] in <191027171fce4bbb927a742cd12d8d5a>:0 
  at Dust.Game1..ctor () [0x00222] in <1349f755b6604de1a1ac6de51e79b6b3>:0 

Symptoms

  • Game fails to launch with Proton, while the native version is working fine.

Reproduction

  • Just start the game using Proton Experimental, 9.0-2 or 8.0-5
Wwaspennator 2024-07-24 github

I can confirm the same issue too, tried some methods, but I could not get it to launch on proton Experimental on my oled deck.

steam-236090.log.txt

Mmadewokherd 2024-07-29 github

That's not going to work. SteamWrapped.MethodUtil.ReplaceMethod is relying on implementation details of .NET Framework's JIT.

Mmadewokherd 2024-07-29 github

Looked a bit further. Turns out the method it's trying to replace isn't used anyway. The null reference can be worked around by adding a private method to FNA's GraphicsAdaptor class named IsProfileSupported that takes Enum and GraphicsProfile arguments. It probably trashes memory trying to replace that method, but surprisingly it didn't crash. Then it fails due to inability to read WMA video (Proton loads a test pattern instead, but the game detects it's the wrong size and crashes). That can be worked around by transcoding videos (https://gist.github.com/flibitijibibo/c97bc14aab04b1277d8ef5e97fc9aeff). I encountered one other crash quitting, but I didn't look into that.

Since the native version works, and the Windows version is relying on implementation details of both .NET Framework and XNA (likely not used by any other game) and with a work-around it might randomly start crashing in the future, I don't think it's worth trying to fix.

Proton versions