https://bugs.winehq.org/show_bug.cgi?id=57999
Bug ID: 57999 Summary: "Tower Wars" game crash when start playing Product: Wine Version: 10.3 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: galdralag@bk.ru Distribution: ---
Created attachment 78260 --> https://bugs.winehq.org/attachment.cgi?id=78260 Crashing log
Wine starts game, shows game menu, but after selecting "play" wine crashes. Crashing log attached.
https://bugs.winehq.org/show_bug.cgi?id=57999
--- Comment #1 from Nikolay Sivov bunglehead@gmail.com --- Is this the same game https://store.steampowered.com/app/214360/Tower_Wars/ ?
https://bugs.winehq.org/show_bug.cgi?id=57999
--- Comment #2 from Vjacheslav galdralag@bk.ru --- (In reply to Nikolay Sivov from comment #1)
Is this the same game https://store.steampowered.com/app/214360/Tower_Wars/ ?
Yes
https://bugs.winehq.org/show_bug.cgi?id=57999
Francisco Casas fcasas@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |fcasas@codeweavers.com
--- Comment #3 from Francisco Casas fcasas@codeweavers.com --- This error looks like a NULL pointer dereference on vkd3d-shader's HLSL compiler copy-propagation. This happens during loop-unrolling, which was introduced on vkd3d 1.15, is the version currently shipped with wine.
There has been some work an a couple of fixes on copy-propagation after 1.15, but I am not sure any of these fixes a null dereference, so this is worth looking into, it would be nice to have the shaders that caused this issue.
I realized that the game files contain several shaders, apparently provided by the Torque game engine, I tried compiling them, using valgrind, with several vkd3d versions, and it detected no problem.
I also ran the game using current proton-experimental and the VKD3D_SHADER_DUMP_PATH environment variable to dump the (pixel and vertex) shaders the application wants to compile, but none of them showed any issue.
It is worth noting that the game doesn't close for me with proton-experimental, but gets stuck on loading instead. The game runs properly on the older Proton 9.0.
So I ran the game using the Windows Steam client through wine and to my surprise it generated compute shaders this time, but none of them showed any issue. The game also gets stuck on loading though.
I suspect that the Torque engine procedurally generates the shaders and they might vary depending on the platform.
So can you run the game again with the VKD3D_SHADER_DUMP_PATH env set so that the shaders are dumped on a local folder and then send these as a .zip?
https://bugs.winehq.org/show_bug.cgi?id=57999
--- Comment #4 from Vjacheslav galdralag@bk.ru --- Created attachment 78285 --> https://bugs.winehq.org/attachment.cgi?id=78285 Shaders for https://bugs.winehq.org/show_bug.cgi?id=57999#c3
https://bugs.winehq.org/show_bug.cgi?id=57999
--- Comment #5 from Francisco Casas fcasas@codeweavers.com --- Thanks. I can reproduce the bug on
vkd3d-shader-2315262f9851cbd0910371161aa18b76-ps_3_0-source.hlsl
adding
#define TORQUE_SHADERGEN
and placing the corresponding Torque Engine "lighting.hlsl" and "torque.hlsl" shaders close so they can be included.
Besides an invalid read, it also seems to result in a memory leak.
I will investigate further.
https://bugs.winehq.org/show_bug.cgi?id=57999
--- Comment #6 from Francisco Casas fcasas@codeweavers.com --- I ran a bisect between vkd3d-1.15 and current master and seems this bug was fixed on https://gitlab.winehq.org/wine/vkd3d/-/commit/a87b1efbd2c691b574f35a7ae0a1df...