doitsujin / dxvk

Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine
zlib License
13.47k stars 870 forks source link

[d3d11] Stack Smashing in crossout #3571

Open Etaash-mathamsetty opened 1 year ago

Etaash-mathamsetty commented 1 year ago

Software information

Crossout (steam id 386180) Using dxvk 1.10.3 fixes the stack smashing issue Using dxvk 2.0 the game crashes (even with GPL disabled)

bisection commit is somewhere on the discord, if needed I can find it

System information

Log files

steam-386180.log

doitsujin commented 1 year ago

Not a lot to go on here, this seems undebuggable and the fact that the game uses EAC isn't helping things.

Etaash-mathamsetty commented 1 year ago

what if we apitrace and determine the call the last call to dxvk it makes?

doitsujin commented 1 year ago

I strongly doubt apitrace will work with this game due to anti-cheat, but you're welcome to try.

That said, the chances of that being useful even if it works are extremely low, this could be literally anything from uninitialized memory to some memory corruption and it could very well be caused by the game as well.

Blisto91 commented 1 year ago

For any onlookers the issue shows itself as a crash, at least for me, just before the intro splash screens shows.

It seems to be a race condition related to thread amount, maybe getting more likely as it increases as on my 7950x out of 35+ times I've only been able to get past that point once without messing with anything. Setting dxvk.numCompilerThreads = 1 i haven't been able to reproduce so far. Limiting via WINE_CPU_TOPOLOGY also helps, but it's worth noting that i haven't reproduced with wined3d so far.

I haven't found this to be a regression as it happens as far back as I've tried going with dxvk (1.3.4). Testing both radv and amdvlk shows the behavior.

LordGrimmauld commented 1 year ago

I tried setting numCompilerThreads to 1 as you said. dX4gPW2UKazidfQiMn4xDf-lastPlay.log

Interestingly, this crash still occurs on Wine-GE 8.24, it does however not occur on Proton-GE 8.24 if this dxvk.conf option is set (with otherwise identical options).

GPU: Nvidia GTX 1660ti mobile Driver: 545 (proprietary) Wine version: Wine GE (in the attached log, i can provide Proton-GE logs too if needed)

Tested in Heroic, i did however also produce identical logs using Bottles (flatpak) and Bottles (nix package).

I am happy to supply more logs if needed, this is super weird and i'd love more stability.

Edit: Yes, both was explicitly using the same dxvk