Hi all,
So we’ve been struck by this issue for quite a while, and it’s looking quite consistent now.
Players are receiving the “Native Crash - KiUserExceptionDispatcher” exception and Unity Crash Diagnostics reports it to us.
We’re receiving tons of this specific error, and we’re curious about what it could be. Googling unfortunately wasn’t the solution for us.
We do have some clues regarding this issue:
The issue almost always has to do with RuntimeIPCServiceClient_64 . I saw that this could be an OpenXR thing, but what exactly?
It’s always an error.
The operating systems are different for this error. Sometimes it’s a Windows 11 computer, and sometimes a Windows 10 computer.
Does anyone here know what I could do to investigate this issue more so we’ll get fewer messages from Unity’s Cloud Diagnostics?
Thank you!
A part of the log
From what I could find in a quick search, RuntimeIPCServiceClient_64 seems to be part of the Oculus runtime (which implements the OpenXR API), so I assume you’re talking about a VR game.
Do you have data if this crash also happens with different headsets? Or maybe different versions of the Oculus runtime, etc.
CarePackage17:
From what I could find in a quick search, RuntimeIPCServiceClient_64 seems to be part of the Oculus runtime (which implements the OpenXR API), so I assume you’re talking about a VR game.
Do you have data if this crash also happens with different headsets? Or maybe different versions of the Oculus runtime, etc.
Hey CarePackage17,
Thank you for the swift reply! Unfortunately, we do not have data if it’s occurring on different headsets. But you’re giving a great idea here. We should register the headset in our Crash Analytics!
Will do that and I’ll keep you posted.
CarePackage17:
From what I could find in a quick search, RuntimeIPCServiceClient_64 seems to be part of the Oculus runtime (which implements the OpenXR API), so I assume you’re talking about a VR game.
Do you have data if this crash also happens with different headsets? Or maybe different versions of the Oculus runtime, etc.
I’ve got some more data!
It seems that it’s affecting users with only a Quest 2. No other VR devices are being affected by it at the moment.
Does OpenXR have a validation layer?
Maybe enabling that can help you spot issues.
Also, if you have crash dumps or anything of that sort, you could probably report a bug to Oculus.
What kind of validation layer are we talking about exactly? As in “is the VR headset the player is using OK to use”?
Regarding the crash dumps, I do have some information, but only which thread crashed and which symbols are missing during the crash. Here is an example:
Thread 0 (crashed)
0 ntdll 0x00007ff9bc28f7a4 ZwWaitForMultipleObjects
1 KERNELBASE 0x00007ff9b9ba5119 WaitForMultipleObjectsEx
2 KERNELBASE 0x00007ff9b9ba501e WaitForMultipleObjects
3 UnityPlayer 0x00007ff925915ac2 winutils::ExternalCrashHandler::HandleCrash (C:\buildslave\unity\build\PlatformDependent\Win\ExternalCrashHandler.cpp:354)
4 UnityPlayer 0x00007ff925915b52 winutils::ExternalCrashHandler::HandleCrash (C:\buildslave\unity\build\PlatformDependent\Win\ExternalCrashHandler.cpp:426)
5 UnityPlayer 0x00007ff925926b58 winutils::ProcessInternalCrash (C:\buildslave\unity\build\PlatformDependent\Win\WinUtils.cpp:595)
6 KERNELBASE 0x00007ff9b9c95f0c UnhandledExceptionFilter
7 ntdll 0x00007ff9bc29837d RtlUserThreadStart$filt$0
8 ntdll 0x00007ff9bc27efa7 _C_specific_handler
9 ntdll 0x00007ff9bc293cff RtlpExecuteHandlerForException
10 ntdll 0x00007ff9bc20e456 RtlDispatchException
11 ntdll 0x00007ff9bc292cee KiUserExceptionDispatcher
12 ntdll 0x00007ff9bc24a79c RtlDeleteCriticalSection
13 LibOVRRT64_1 0x00007ff928b994d3 <symbols missing for uuid: 79CD9C711C9AA4034C4C44205044422E1>
14 LibOVRRT64_1 0x00007ff928bd4d62 <symbols missing for uuid: 79CD9C711C9AA4034C4C44205044422E1>
15 LibOVRRT64_1 0x00007ff928be3ab4 <symbols missing for uuid: 79CD9C711C9AA4034C4C44205044422E1>
16 LibOVRRT64_1 0x00007ff928b499a1 <symbols missing for uuid: 79CD9C711C9AA4034C4C44205044422E1>
17 LibOVRRT64_1 0x00007ff928ac6150 <symbols missing for uuid: 79CD9C711C9AA4034C4C44205044422E1>
18 LibOVRRT64_1 0x00007ff928aeac28 <symbols missing for uuid: 79CD9C711C9AA4034C4C44205044422E1>
19 LibOVRRT64_1 0x00007ff928aaeff8 <symbols missing for uuid: 79CD9C711C9AA4034C4C44205044422E1>
20 UnityOpenXR 0x00007ff949b2b303 <symbols missing for uuid: 76360E8B65C14F8D89EE0AB49D9609EA1>
21 UnityOpenXR 0x00007ff949b2b943 <symbols missing for uuid: 76360E8B65C14F8D89EE0AB49D9609EA1>
22 GameAssembly 0x00007ff912491af3 <symbols missing for uuid: 73F630A407564848A28A4DA317A840F756>
23 GameAssembly 0x00007ff91247f5da <symbols missing for uuid: 73F630A407564848A28A4DA317A840F756>
24 GameAssembly 0x00007ff9124984ac <symbols missing for uuid: 73F630A407564848A28A4DA317A840F756>
25 GameAssembly 0x00007ff9124e6f71 <symbols missing for uuid: 73F630A407564848A28A4DA317A840F756>
26 GameAssembly 0x00007ff9106a1446 <symbols missing for uuid: 73F630A407564848A28A4DA317A840F756>
27 GameAssembly 0x00007ff9106a0ef9 <symbols missing for uuid: 73F630A407564848A28A4DA317A840F756>
28 UnityPlayer 0x00007ff925725e78 scripting_method_invoke (C:\buildslave\unity\build\Runtime\ScriptingBackend\Il2Cpp\ScriptingApi_Il2Cpp.cpp:291)
29 UnityPlayer 0x0000000000679442 scripting_gc_wbarrier_set_field (C:\buildslave\unity\build\Runtime\ScriptingBackend\Il2Cpp\ScriptingNativeApi_Il2Cpp.inline.h:120)
30 UnityPlayer 0x0000000000679442 (C:\buildslave\unity\build\Runtime\ScriptingBackend\ScriptingNativeTypes.h:33)
31 UnityPlayer 0x00007ff925729442 ScriptingInvocation::Invoke (C:\buildslave\unity\build\Runtime\Scripting\ScriptingInvocation.cpp:298)
32 UnityPlayer 0x0000000000694ee5 (C:\buildslave\unity\build\Runtime\Mono\Coroutine.cpp:247)
33 UnityPlayer 0x00007ff925744ee5 Coroutine::Run (C:\buildslave\unity\build\Runtime\Mono\Coroutine.cpp:271)
34 UnityPlayer 0x00007ff92544fa14 DelayedCallManager::Update (C:\buildslave\unity\build\Runtime\GameCode\CallDelayed.cpp:187)
35 UnityPlayer 0x00007ff9255a160a ExecutePlayerLoop (C:\buildslave\unity\build\Runtime\Misc\PlayerLoop.cpp:384)
36 UnityPlayer 0x00007ff9255a16b0 ExecutePlayerLoop (C:\buildslave\unity\build\Runtime\Misc\PlayerLoop.cpp:408)
37 UnityPlayer 0x00007ff9255a408b PlayerLoop (C:\buildslave\unity\build\Runtime\Misc\PlayerLoop.cpp:514)
38 UnityPlayer 0x00007ff9257a18ea PerformMainLoop (C:\buildslave\unity\build\PlatformDependent\WinPlayer\WinMain.cpp:311)
39 UnityPlayer 0x00007ff9257a05db MainMessageLoop (C:\buildslave\unity\build\PlatformDependent\WinPlayer\WinMain.cpp:1229)
40 UnityPlayer 0x00007ff9257a4d77 UnityMainImpl (C:\buildslave\unity\build\PlatformDependent\WinPlayer\WinMain.cpp:1746)
41 UnityPlayer 0x00007ff9257a690b UnityMain (C:\buildslave\unity\build\PlatformDependent\WinPlayer\WinMain.cpp:1786)
42 RUMBLE 0x00000000000011d1 invoke_main (d:\agent\_work\63\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:118)
43 RUMBLE 0x00007ff7ef9c11f2 _scrt_common_main_seh (d:\agent\_work\63\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
44 KERNEL32 0x00007ff9bb5826bd BaseThreadInitThunk
45 ntdll 0x00007ff9bc24a9f8 RtlUserThreadStart
46 ntdll 0x00007ff9bc24a9f8 RtlUserThreadStart
MaartenB:
What kind of validation layer are we talking about exactly? As in “is the VR headset the player is using OK to use”?
Regarding the crash dumps, I do have some information, but only which thread crashed and which symbols are missing during the crash. Here is an example:
Thread 0 (crashed)
0 ntdll 0x00007ff9bc28f7a4 ZwWaitForMultipleObjects
1 KERNELBASE 0x00007ff9b9ba5119 WaitForMultipleObjectsEx
2 KERNELBASE 0x00007ff9b9ba501e WaitForMultipleObjects
3 UnityPlayer 0x00007ff925915ac2 winutils::ExternalCrashHandler::HandleCrash (C:\buildslave\unity\build\PlatformDependent\Win\ExternalCrashHandler.cpp:354)
4 UnityPlayer 0x00007ff925915b52 winutils::ExternalCrashHandler::HandleCrash (C:\buildslave\unity\build\PlatformDependent\Win\ExternalCrashHandler.cpp:426)
5 UnityPlayer 0x00007ff925926b58 winutils::ProcessInternalCrash (C:\buildslave\unity\build\PlatformDependent\Win\WinUtils.cpp:595)
6 KERNELBASE 0x00007ff9b9c95f0c UnhandledExceptionFilter
7 ntdll 0x00007ff9bc29837d RtlUserThreadStart$filt$0
8 ntdll 0x00007ff9bc27efa7 _C_specific_handler
9 ntdll 0x00007ff9bc293cff RtlpExecuteHandlerForException
10 ntdll 0x00007ff9bc20e456 RtlDispatchException
11 ntdll 0x00007ff9bc292cee KiUserExceptionDispatcher
12 ntdll 0x00007ff9bc24a79c RtlDeleteCriticalSection
13 LibOVRRT64_1 0x00007ff928b994d3 <symbols missing for uuid: 79CD9C711C9AA4034C4C44205044422E1>
14 LibOVRRT64_1 0x00007ff928bd4d62 <symbols missing for uuid: 79CD9C711C9AA4034C4C44205044422E1>
15 LibOVRRT64_1 0x00007ff928be3ab4 <symbols missing for uuid: 79CD9C711C9AA4034C4C44205044422E1>
16 LibOVRRT64_1 0x00007ff928b499a1 <symbols missing for uuid: 79CD9C711C9AA4034C4C44205044422E1>
17 LibOVRRT64_1 0x00007ff928ac6150 <symbols missing for uuid: 79CD9C711C9AA4034C4C44205044422E1>
18 LibOVRRT64_1 0x00007ff928aeac28 <symbols missing for uuid: 79CD9C711C9AA4034C4C44205044422E1>
19 LibOVRRT64_1 0x00007ff928aaeff8 <symbols missing for uuid: 79CD9C711C9AA4034C4C44205044422E1>
20 UnityOpenXR 0x00007ff949b2b303 <symbols missing for uuid: 76360E8B65C14F8D89EE0AB49D9609EA1>
21 UnityOpenXR 0x00007ff949b2b943 <symbols missing for uuid: 76360E8B65C14F8D89EE0AB49D9609EA1>
22 GameAssembly 0x00007ff912491af3 <symbols missing for uuid: 73F630A407564848A28A4DA317A840F756>
23 GameAssembly 0x00007ff91247f5da <symbols missing for uuid: 73F630A407564848A28A4DA317A840F756>
24 GameAssembly 0x00007ff9124984ac <symbols missing for uuid: 73F630A407564848A28A4DA317A840F756>
25 GameAssembly 0x00007ff9124e6f71 <symbols missing for uuid: 73F630A407564848A28A4DA317A840F756>
26 GameAssembly 0x00007ff9106a1446 <symbols missing for uuid: 73F630A407564848A28A4DA317A840F756>
27 GameAssembly 0x00007ff9106a0ef9 <symbols missing for uuid: 73F630A407564848A28A4DA317A840F756>
28 UnityPlayer 0x00007ff925725e78 scripting_method_invoke (C:\buildslave\unity\build\Runtime\ScriptingBackend\Il2Cpp\ScriptingApi_Il2Cpp.cpp:291)
29 UnityPlayer 0x0000000000679442 scripting_gc_wbarrier_set_field (C:\buildslave\unity\build\Runtime\ScriptingBackend\Il2Cpp\ScriptingNativeApi_Il2Cpp.inline.h:120)
30 UnityPlayer 0x0000000000679442 (C:\buildslave\unity\build\Runtime\ScriptingBackend\ScriptingNativeTypes.h:33)
31 UnityPlayer 0x00007ff925729442 ScriptingInvocation::Invoke (C:\buildslave\unity\build\Runtime\Scripting\ScriptingInvocation.cpp:298)
32 UnityPlayer 0x0000000000694ee5 (C:\buildslave\unity\build\Runtime\Mono\Coroutine.cpp:247)
33 UnityPlayer 0x00007ff925744ee5 Coroutine::Run (C:\buildslave\unity\build\Runtime\Mono\Coroutine.cpp:271)
34 UnityPlayer 0x00007ff92544fa14 DelayedCallManager::Update (C:\buildslave\unity\build\Runtime\GameCode\CallDelayed.cpp:187)
35 UnityPlayer 0x00007ff9255a160a ExecutePlayerLoop (C:\buildslave\unity\build\Runtime\Misc\PlayerLoop.cpp:384)
36 UnityPlayer 0x00007ff9255a16b0 ExecutePlayerLoop (C:\buildslave\unity\build\Runtime\Misc\PlayerLoop.cpp:408)
37 UnityPlayer 0x00007ff9255a408b PlayerLoop (C:\buildslave\unity\build\Runtime\Misc\PlayerLoop.cpp:514)
38 UnityPlayer 0x00007ff9257a18ea PerformMainLoop (C:\buildslave\unity\build\PlatformDependent\WinPlayer\WinMain.cpp:311)
39 UnityPlayer 0x00007ff9257a05db MainMessageLoop (C:\buildslave\unity\build\PlatformDependent\WinPlayer\WinMain.cpp:1229)
40 UnityPlayer 0x00007ff9257a4d77 UnityMainImpl (C:\buildslave\unity\build\PlatformDependent\WinPlayer\WinMain.cpp:1746)
41 UnityPlayer 0x00007ff9257a690b UnityMain (C:\buildslave\unity\build\PlatformDependent\WinPlayer\WinMain.cpp:1786)
42 RUMBLE 0x00000000000011d1 invoke_main (d:\agent\_work\63\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:118)
43 RUMBLE 0x00007ff7ef9c11f2 _scrt_common_main_seh (d:\agent\_work\63\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
44 KERNEL32 0x00007ff9bb5826bd BaseThreadInitThunk
45 ntdll 0x00007ff9bc24a9f8 RtlUserThreadStart
46 ntdll 0x00007ff9bc24a9f8 RtlUserThreadStart
Validation layer as in “is the app using OpenXR correctly”, because if not, it might trigger crashes in e.g. the Oculus implementation while SteamVR is fine or something like that.
I believe the game is using OpenXR correctly. There are no issues reported by Oculus users whatsoever. This error only happens when a player closes the game.
I’ll try to reproduce the issue and then will check more details with the OculusLogGatherer they’re recommending in their documentation.