Cogwheels of doom - constant DX12 crashes (client-caused) - UNFIXED as of 0.4
|
Same Issue here, Freeze / COG WHEEL
Ryzen 7 9800XD3 RTX 5080 32 GB RAM Running DX12. And NVIDIA DLSS Última edição por Scarface335#4801 em 27 de jan. de 2026 10:28:46
|
|
|
I tried again to look into asm and what happens.
And I saw this code: " the interesting part is : " 0AAAAAAAAAAAAAAABh -> is usually a magic value used by compilers to avoid using div instructions. Basically, multiplying by 0xAAAAAAAAAAAAAAAB and then shifting right (shr rdx, 2) is the mathematical equivalent of Dividing by 3. So that entire code is just a "Divide by 3" operation followed by getting the Reminder (the Modulo) -> 0,1 or 2 stored in r8. Probably last 3 frames? So my intuition tells me that this is a Circular buffer of size 3 and the modulo calculated gives the index to a write. Then the code should hit : " Basically if the circular buffer is full it compares the RCX register with 6. But it seems like both paths reach the " but with different values in [r9+0x48]. " So basically its something like : if RCX <= 6 and error code is not 0x887A0005 ( which is I think the code for DEVICE_REMOVED ) then al = 0 Otherwise -> al = 1. So far so good. Now we know the al values based on certain condition. But who calls this function ? Well, in windbg I've got this stack trace : " Parent: (frame 1) " Breaking it down it seems like : " So if al = 0 it calls another function: " And the loc_141013430 is : " Seems like the game is trying to crash/close/generate an exception if the second check returns an al == 0 Given the fact that the function has a "comment means that Windows begins Stack Unwinding when _CxxThrowException is called. And for me, this might lead to a deadlock since if a NVIDIA clean-up code is called, it should send a callback / message back but the main thread is busy "Unwinding" So basically my intuition is : The hang is happening because Path of Exile 2 is throwing a C++ Exception on the Main Thread when the GPU stutters. During the cleanup of that exception, the NVIDIA Streamline interposer deadlocks while waiting for a window message callback that the blocked Main Thread can't provide. The hang occurs in sub_141013380 when Present() fails. The subsequent call to _CxxThrowException triggers a synchronous stack unwind that deadlocks within the Streamline interposer's window-message handshake." I might be completely wrong, but its all I've got and I hope I give GGG some paths to investigate and maybe give them other ideas / scenarios that could get to the real root cause( Hoping they read this ). |
|























