Native Crash - KiUserExceptionDispatcher (RuntimeIPCServiceClient_64)

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!

  • Maarten

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.

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.

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

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.