[SOLVED] Warframe doesn't get past first loading screen (evolution error)

I asked on r/linux_gaming for help and got an answer that surprised me. The evolution crashes may be related to xaudio2_7 and 64bit. I don’t know if there is a fix for that yet

Edit: to check if xaudio is the culprit we could play wrframe 64bit+dxvk with sound disabled

actually the 64bit are very stable for me, as long as i don’t use DXVK (which is unstable even on 32bit, maybe because of my driver being too old as you already hinted at, the graphical glitches that happen before the crashes seem to support that)

I tried it today. I played the Planes of Eidolon master sound disabled and it worked! Hope the xaudio2_7 incompatibility gets fixed soon

Unfortunately your bug is most probably another bug related to the nvidia drivers. For me there are no graphical glitches before a crash (RADV), just the evolution crash

I have test it with dxvk 0.7 it runs realy good

and dxvk 0.64

1 Like

awesome! Can you tell me some of the specs you used?

  • what version of wine are you running?
  • what Warframe version did you use (64bit/32bit)
  • how did you start Warframe (Lutris, my script, something else)
  • what’s your Hardware? (CPU and GPU) and your driver in use

you’re playing on Manjaro, did you compile something yourself or everything from the repos?

  1. wine version = esync 3.13 is in lutris script

  2. 64bit

  3. Lutris

  4. look here https://forum.manjaro.org/t/dump-your-inxi-fxzc0-here-and-bookmark-it/8298/411

  5. yes i play on Manjaro since 4 Years and no didn’t compile anything

1 Like

that setup runs me into the xaudio crash as soon as the process allocates >=1GB ram :confused:
a good way to test it seems to be playing alerts on submersible grineer sealab tilesets, i can’t usually stay more than a minute in one without crashing.

I use pulseaudio

I’m playing using the 64 bit client. I’m not sure the current installer works right away, so I’m using “my own fork” of Pyro4Hell’s script.

I put my WINECMD variable to be the latest wineesync(3.14) and I made the game always execute the 64 bit version (to ensure DXVK).

Environment variables are just DXVK_HUD=version mesa_glthread=true WINEESYNC=1

It feels like the game runs in a suboptimal way, but I can complete entire missions alright. I feel like if I do the same tileset, the game will run smoother because stuff will be stored in the memory.

Everything is on minimum and resolution at 1080p, but it feels like that’s not really the problem.

I have a lot of DLL overrides that came with the Lutris install for the game, including, but not limited to

  • xaudio2_7 (native, builtin)
  • d3dcompiler_43 (native,builtin)
  • d3dcompiler_47 (native, builtin)
  • rasapi32 (native)

me too, xaudio is the windows dll required.

same here for most missions, just those that go over the “xaudio pointer perversion limit” crash.

that’s the culprit for me. when using builtin i don’t have audio except for some menu and gun sounds, which are way too loud and very distorted; when using native i run into crashes as soon as it allocates enough ram.

reproduction that seems to trigger it most of the time:

  • go to a submersible grineer sealab tileset (they seem to be very large with all the ice caves, water etc having fancy textures)
  • wait for the ram usage to go >1GB (can happen as soon as during the first seconds of the map, especially when you spawn under water it seems)
  • wait for lotus to say something or a new enemy type to spawn and shout at you (=> put new audio data into the >1GB range and try to play it)

i wonder if we could use a small dll to wrap the native xaudio version and overload some functions to preserve the pointers somehow?
another option might be to limit the process’s memory range the same way windows does, maybe that helps? i have no idea how though


ok just for fun (haha fun haha hahaha ha… shoot me plz) i dug through the syswow64/xaudio2_7.dll's PE header a bit, it has (if i counted the bytes correctly) the image flags 0x2102 (at offset 0x116), which according to https://docs.microsoft.com/en-us/windows/desktop/debug/pe-format#file-headers resolves to:

  • IMAGE_FILE_DLL (duh :stuck_out_tongue: )
  • IMAGE_FILE_32BIT_MACHINE (waaaaait… 32bit dll in syswow? no wonder it fucks up pointers!)
  • IMAGE_FILE_EXECUTABLE_IMAGE (um wtf, how can it be an exe and dll at the same time? microsoft, you high?)

note it doesn’t even seem to be IMAGE_FILE_LARGE_ADDRESS_AWARE == 0x0020 so it’s linked to only recognize <=2GB addresses. i wonder if it’s actually an issue with microsoft (well them abusing a 32bit dll on 64bit systems obviously is) but maybe wine not being careful enough about loading it as a 32bit dll?


ok srsly wtf microsoft
turns out syswow64 is 32bit and system32 is 64bit, because fuck logic, that’s why.
(yeah i know they kept the system32 for compatibility and the Windows(32)onWindows64 name is also technically correct, but still feels like they just want to confuse the shit out of their users)

does the same thing on system32/xaudio2_7.dll

Offset: 0x12E (18 bytes after the PE00 signature, please tell me if i’m counting wrong): 0x2022 (yes already swapped the bytes, raw it’s 22 20)

decoded:

  • 2000 IMAGE_FILE_DLL (still makes sense)
  • 0020 IMAGE_FILE_LARGE_ADDRESS_AWARE (oh yeah? then WHY THE HELL DO YOU CRASH!)
  • 0002 IMAGE_FILE_EXECUTABLE_IMAGE (still doesn’t make sense but apparently it gets set on dlls too to distinguish them from memory dumps and the like; only real meaning seems to be “this should be code instead of binary garbage”)

so ok, seems the header flags are valid, even though i would dispute the accuracy of that 0020 flag there, because clearly some dipshit at MS decided to link a 32bit-only lib containing 31bit-only “optimizations” as 64bit and call it a day without testing.

1 Like

since the newest update it doesn’t even try to start with builtin xaudio anymore, instantly crashes

I just updated warframe and the game is playing like before using my hybrid Lutris Standalone+Pyro4Hell script.

At this point, I recommend starting from scratch and making your own thread for support. Stating distribution, desktop environment, kernel, drivers and error messages, possibly with screenshot.

I just tested your infamous “grineer sealab” thing and it did break after a while. I could do a lot of a sabotage mission and use the aquatic archwing, but my game stopped working with an Evolution Error after swimming for a while and fighting.

My game always felt rather suttery, probably because I’m on a ryzen APU (both cpu and gpu drivers for this series are rather new), so I didn’t bother fixing stuff too much.

I could complete other missions in other tilesets, including some Void Fissures and Plains of Eidolons

Cheers.

sadly it seems we established it’s less support and more implementing a feature in wine which this forum isn’t suited for anyway. so i guess i’ll just go with what crashes the least (native aka broken xaudio) until they finish the wma decoding in the builtin lib.

Thanks for the deep testing.

For reference the xaudio builtin support gets discussed and tested at wine bugtracker

Currently there still seems to be a bug preventing warframe to play sounds correctly. Maybe you could give some additional insights to the bug :slight_smile:

Got some free time and tested the game a bit more.

I changed my system settings to overclock ram from 2400 MHz to 2800, single channel 8GB and put my GPU clock in “extreme mode” (whatever that means). CPU clock left the same. I ran some stability tests and then went to benchmark on some games.

Warframe seemed (in a totally biased fashion) slightly smoother (5~10fps gain?) but still stuttered loading some rooms.

I played Capture on Saturn and Capture on Uranus and did a full 4-mission-bounty on Cetus (lvl 3 bounty). After that, I did the infamous sabotage mission on Uranus that ALWAYS seems to have a water part. Everything went fine, no crashes. Sound is working perfectly, stuttering is OKish. General fps is from 40 to 60 (I capped it on 60) it does a lot of hiccups loading screens (1.5s of 3fps, then back to normal)

General setup:

  • 4.18.5 kernel from Ukuu
  • Linux mint 19 cinnamon
  • Ryzen 5 2400G APU
  • Mesa/Vulkan from Padoka PPA

Game settings:

  • wine Esync 3.14
  • dxvk 0.70 (just download the folder and let Lutris do its usual thing)

Env Variables:

  • DXVK_HUD=fps
  • WINEESYNC=1 (<-- I don’t really feel the gain with it, but w/e)
  • mesa_glthread=true

no more variables because they seem to be tied to NVidia gpus.

I surely feel it’s a decent warframe experience, but I also feel I could be much faster on Windows.