Thanks, we are actively investigating this.
Hi, thanks for the update.
I’ve received the email about CASE IN-129682 being closed as a duplicate of
I believe this is not the same issue:
- My case reproduces on Windows 10, not Windows 11
- It occurs outside of Exclusive Fullscreen mode
You should already have the latest Windows crash dumps attached to the report.
Could you please take another look, or let me know if more info is needed to help reproduction?
Thanks!
Hey, we added a speculative fix for this in 6000.0.71f1, 6000.3.11f1 and 6000.5.0a9. In addition to that, we added more diagnostic messages in case the fix didn’t work. Could you try one of those versions and see if it fixes your issue?
Hey, just checked with 6000.3.11f1. Same problem.
Full log:
Mono path[0] = 'E:/gamedev/TestAltTabUnity_6_3_New/BuildDev/TestAltTabUnity_6_3_Data/Managed'
Mono config path = 'E:/gamedev/TestAltTabUnity_6_3_New/BuildDev/MonoBleedingEdge/etc'
Found 1 interfaces on host : 0) XXX.XXX.X.X
Player connection [18348] Target information:
Player connection [18348] * "[IP] XXX.XXX.X.X [Port] 55000 [Flags] 2 [Guid] 1013325137 [EditorId] 2268951670 [Version] 1048832 [Id] WindowsPlayer(2,User-PC) [Debug] 0 [PackageName] WindowsPlayer [ProjectName] TestAltTabUnity_6_3"
Player connection [18348] Started UDP target info broadcast (1) on [225.0.0.222:54997].
Input System module state changed to: Initialized.
[Physics::Module] Initialized fallback backend.
[Physics::Module] Id: 0xdecafbad
Initialize engine version: 6000.3.11f1 (3000ef702840)
[Subsystems] Discovering subsystems at path E:/gamedev/TestAltTabUnity_6_3_New/BuildDev/TestAltTabUnity_6_3_Data/UnitySubsystems
[D3D12 Device Filter] Vendor Name: NVIDIA
[D3D12 Device Filter] Device Name: NVIDIA GeForce RTX 3080 Ti
[D3D12 Device Filter] Driver Version: 32.0.15.9571
[D3D12 Device Filter] Feature Level: 12.2
[D3D12 Device Filter] Graphics Memory: 12086 MB
[D3D12 Device Filter] Processor Count: 20
[D3D12 Device Filter] Device Type: Discrete
GfxDevice: creating device client; kGfxThreadingModeClientWorkerJobs
Direct3D:
Version: Direct3D 11.0 [level 11.1]
Renderer: NVIDIA GeForce RTX 3080 Ti (ID=0x2208)
Vendor: NVIDIA
VRAM: 12086 MB
Driver: 32.0.15.9571
Begin MonoManager ReloadAssembly
- Loaded All Assemblies, in 0.146 seconds
- Finished resetting the current domain, in 0.003 seconds
[Physics::Module] Selected backend.
[Physics::Module] Name: PhysX
[Physics::Module] Id: 0xf2b8ea05
[Physics::Module] SDK Version: 4.1.2
[Physics::Module] Integration Version: 1.0.0
[Physics::Module] Threading Mode: Multi-Threaded
<RI> Initializing input.
Using Windows.Gaming.Input
UnloadTime: 2.641700 ms
This log shows you’re running with D3D11. Is that the wrong log or did D3D11 start crashing too now?
In general, is there any difference whether the player runs with Direct3D11 or Direct3D12? The game should ideally work correctly with both APIs.
However, the main point is that, the crash occurs with both Direct3D11 and Direct3D12 on my machine.
Previously the Graphics API list contained both DX11 and DX12, so the player could start with either one depending on Unity’s selection. To avoid any ambiguity, I have now removed DX11 and left only DX12 in the Graphics API settings.
I also rebuilt the player and ran it with the -force-d3d12-debug flag as suggested.
I’m not entirely sure what additional information this will provide, but here is the full Player.log from the DX12 run:
I’m not entirely sure what additional information this will provide, but here is the **full Player.log from the DX12 run**:
Mono path[0] = 'E:/gamedev/TestAltTabUnity_6_3_New/BuildDX12/TestAltTabUnity_6_3_New_Data/Managed'
Mono config path = 'E:/gamedev/TestAltTabUnity_6_3_New/BuildDX12/MonoBleedingEdge/etc'
Found 1 interfaces on host : 0) XXX.XXX.X.X
Player connection [25452] Target information:
Player connection [25452] * "[IP] XXX.XXX.X.X [Port] 55000 [Flags] 2 [Guid] 2098255102 [EditorId] 2872793989 [Version] 1048832 [Id] WindowsPlayer(2,User-PC) [Debug] 0 [PackageName] WindowsPlayer [ProjectName] TestAltTabUnity_6_3_New"
Player connection [25452] Started UDP target info broadcast (1) on [225.0.0.222:54997].
Input System module state changed to: Initialized.
[Physics::Module] Initialized fallback backend.
[Physics::Module] Id: 0xdecafbad
Initialize engine version: 6000.3.11f1 (3000ef702840)
[Subsystems] Discovering subsystems at path E:/gamedev/TestAltTabUnity_6_3_New/BuildDX12/TestAltTabUnity_6_3_New_Data/UnitySubsystems
[D3D12 Device Filter] Vendor Name: NVIDIA
[D3D12 Device Filter] Device Name: NVIDIA GeForce RTX 3080 Ti
[D3D12 Device Filter] Driver Version: 32.0.15.9571
[D3D12 Device Filter] Feature Level: 12.2
[D3D12 Device Filter] Graphics Memory: 12086 MB
[D3D12 Device Filter] Processor Count: 20
[D3D12 Device Filter] Device Type: Discrete
GfxDevice: creating device client; kGfxThreadingModeSplitJobs
d3d12: failed to query info queue interface (0x80004002).
Direct3D:
Version: Direct3D 12 [level 12.2]
Renderer: NVIDIA GeForce RTX 3080 Ti (ID=0x2208)
Vendor: NVIDIA
VRAM: 12086 MB
App VRAM Budget: 11318 MB
Driver: 32.0.15.9571
Begin MonoManager ReloadAssembly
- Loaded All Assemblies, in 0.092 seconds
- Finished resetting the current domain, in 0.002 seconds
[Physics::Module] Selected backend.
[Physics::Module] Name: PhysX
[Physics::Module] Id: 0xf2b8ea05
[Physics::Module] SDK Version: 4.1.2
[Physics::Module] Integration Version: 1.0.0
[Physics::Module] Threading Mode: Multi-Threaded
<RI> Initializing input.
Using Windows.Gaming.Input
UnloadTime: 0.496800 ms
Hi @Nolex! A few thoughts from my side:
The fact that it is crashing both on D3D11 and D3D12 is not normal I would say. If I remember correctly, I have not seen any D3D11 crash reports with similar issues. Only the one on D3D12 described by @benjr34 which I also believe is a different problem (I can repro it and we are actively investigating it but there is no guarantee that the fix would help with your specific situtation; maybe we would get lucky…).
The fact that you are not seeing anything in the log, even with -force-d3d12-debug, is also slightly weird. In general, without the flag, users usually see some Unity’s internal messages when something goes wrong with D3D12. For example, lines like "d3d12: swapchain present failed...". However, something is either crashing even earlier/before rendering or for a reason we are not catching in the engine (unlikely).
The additional argument -force-d3d12-debug should theoretically show extra D3D12-internal validation errors (not Unity’s). However, this particular line in your log, d3d12: failed to query info queue interface (0x80004002). indicates that your system does not support such feature for extra logging. I agree that it is unfortunate and although, according to Microsoft, the feature should work on some Win 10 machines, I have yet to see it working on anything except Win 11 among users.
Since nothing really helps in your case, it is time to explore external solutions. For a starter, could you locally capture and inspect a GPU crash using NVIDIA’s Nsight Aftermath? Here is a page which explains how to do it (How To Setup and Inspect GPU Crash Dumps — Nsight Graphics). You need “Workflow #1” where you can set up the crash features (enable as much as possible). If you have difficulties analyzing it yourself, feel free to share it with us - we might help. On a side note, there are plans to have “Workflow #2” in Unity so that the GPU dumps are getting generated automatically for users but thats still in progress.
We also have a public crash guide on Unity’s documentation: Unity - Manual: Troubleshoot D3D12 GPU crashes on Windows. I am not saying it will give you extra important insights but still… Maybe doing a clean installation of a driver will help.
I am also trying to think whether there might be some edge case / unusual setup. Could you please share your setup just in case?
- Exact windows build
- Monitor setup (1 or multiple)
- Display resolution, etc.
Additionally, what happens when you force “borderless” fullscreen instead of “exclusive”? It can be triggered with -window-mode borderless argument.
Thanks!
However, the “Unrecoverable D3D12 device error” line still asked for -force-d3d12-debug arg. Don’t know if one of those messaging errors or not.
@benjr34 Agree that it was confusing. We have fixed the ambiguous message in 6000.0.71f1 , 6000.3.11f1 and 6000.5.0a9. Now it will not ask for the flag when the user is already running with it.
Hi @eafanas !
Hi! Thank you for the feedback. I have some very specific findings that should help your team narrow this down. It clearly looks like a regression in the core engine logic rather than a GPU/Driver issue.
Key Findings:
-
Regression Version: This issue does not occur in Unity 6000.2.8f1. It only started appearing in the 6.3 cycle. Comparing the changes in window management or the main loop pause logic between 6.2 and 6.3 might reveal the cause.
-
It’s not a GPU crash: NVIDIA Aftermath (Workflow #1) did not capture any dumps because the GPU never actually hangs. Windows Event Viewer also shows no “Display driver recovered” errors.
-
The Root Cause (UIAutomationCore.dll): By attaching Visual Studio, I caught the crash as an
unhandled exception(Fatal program exit requested) inucrtbase.dllon the Main Thread. -
The Conflict: The Call Stack shows that
UnityPlayer.dllprocesses a window message (likelyWM_KILLFOCUSorWM_ACTIVATE), which triggers a callback toUIAutomationCore.dll. This happens only when Discord is running because it queries the window via the Windows UI Automation API. -
The Workaround: If I enable “Run In Background” in Player Settings, the crash disappears completely, even with Discord running. This suggests that when Unity 6.3 tries to pause the Main Thread while a UI Automation query is in flight, it enters an invalid state and aborts.
My Setup:
- Unity Version: 6000.3.11f1 (Broken) vs 6000.2.8f1 (Working).
- Windows Build: Win 10 Pro 22H2 - 19045.6466
- GPU: NVIDIA RTX 3080 Ti (Driver: 32.0.15.9571)
- Monitor: Dell S3220DGF Black - 1440p.
- Note: The crash happens in both D3D11 and D3D12, and in both Fullscreen and Windowed modes.
It seems like the 6.3 update introduced a change in how the engine handles accessibility/automation queries during the transition to a paused state. Hopefully, this helps your engineers pinpoint the regression!
Hey Nolex, thank you for all these details. The unfortunate issue here is that there seems to be a few unrelated issues surrounding alt tabbing, D3D12 and discord that we are investigating at the same time. @eafanas is investigating issues specifically in D3D12 code, and given your original post and replies by other people, I mistakenly assumed that this is what was causing your issue too (I have to admit, I did not double check before responding). The other issue we’re investigating is specifically to do with UIAutomationCore.dll, and is tracked here: Unity Issue Tracker - [Windows] Application crash when setting AssistiveSupport.activeHierarchy with Narrator enabled on Windows 10. The root cause of that issue was actually a bug in Windows core, which got fixed with one of the Windows updates (that’s why we had trouble reproducing - it was fixed on our main machines running Windows 11). Just this last Wednesday we came up with a fix (or a workaround, depending on your point of view) and now it’s going through code review before we can ship it. I have somewhat reasonable suspicion that it will fix your crash too as the callstack and symptoms in your report are very very similar to this bug I just linked. Having said that, I will ask our QA to try reproducing your report on the same specially prepared machine where we reproduced the other one, and then try confirming that our fix fixes your issue too.
