App crashes inconsistently on access violation

I have an application built with Unity3D which inconsistently crashes after some time it is running. This duration can be 5 seconds after start, or 2 hours, and sometimes it runs a full day without issues.

Device: Intel RealSense D435I
Nuitrack: v0.37.18
Unity: 2023.2.20f1
Unity Package: v0.37.16 (latest at 2024/07/05)
Windows 11

I see the following stack trace in the Unity log every time the app crashes:

  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 0000000061982B45)
0x0000000061982B45 (NuitrackModule) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 0000000061983924)
0x0000000061983924 (NuitrackModule) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 0000000061855E10)
0x0000000061855E10 (NuitrackModule) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 000000006185689F)
0x000000006185689F (NuitrackModule) (function-name not available)
0x0000000062274B50 (NuitrackModule) ZNK5boost7archive6detail19pointer_oserializerINS0_13text_oarchiveEN3tdv19gesture_recognition19AnalogousRecognizerEE15save_object_ptrERNS1_14basic_oarchiveEPKv
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 000000006189BF6C)
0x000000006189BF6C (NuitrackModule) (function-name not available)
0x00007FFA5862E634 (msvcrt) beginthreadex
0x00007FFA5862E70C (msvcrt) endthreadex
0x00007FFA5839257D (KERNEL32) BaseThreadInitThunk
0x00007FFA58E2AA48 (ntdll) RtlUserThreadStart

A few times I have seen this mid play (no other app running), but this is rare:

Perhaps the sensor is already being used in other program. Or some unexpected error.
Does this example work? C:\Program Files\Nuitrack\nuitrack\nuitrack\bin\bin\nuitrack_sample.exe.
It is recommended to test on AllModulesScene
nuitrack.Exception
  at nuitrack.NativeImporter.throwException (nuitrack.NativeImporter+ExceptionType type) [0x00096] in <0dba52d8ba4c458ab12d583e381918b5>:0 
  at nuitrack.NativeNuitrack.Update () [0x00006] in <0dba52d8ba4c458ab12d583e381918b5>:0 
  at nuitrack.Nuitrack.Update () [0x0000a] in <0dba52d8ba4c458ab12d583e381918b5>:0 
  at NuitrackManager.Update () [0x00043] in <8f69c53e96e04105bbd211b2d0c9c7d7>:0

On NuitrackManager I have turned off the ‘Gestures Recognizer’ and ‘Hands Tracker’ modules and 'Use ‘Face Tracking’ is disabled. ‘Use Nuitrack Ai’ is enabled.

What could be causing this?

Another crash from yesterday shows the following stacktrace:

0x0000000061E03161 (NuitrackModule) tdv_ProcessingBlock_wrap
0x00000000621B409E (NuitrackModule) ZNK5boost7archive6detail19pointer_oserializerINS0_13text_oarchiveEN3tdv19gesture_recognition19AnalogousRecognizerEE15save_object_ptrERNS1_14basic_oarchiveEPKv
0x000000006CB600EA (libnuitrack) nuitrack_DestroyUserTrackerData
0x00000258A166DDDB (Mono JIT Code) (wrapper managed-to-native) nuitrack.NativeImporter:nuitrack_DestroyUserTrackerData (intptr)
0x00000258A166A263 (Mono JIT Code) nuitrack.NativeResources.DeleterHandler:Dispose (bool)
0x00000258A166A1F3 (Mono JIT Code) nuitrack.NativeResources.DeleterHandler:Dispose ()
0x00000258A166A133 (Mono JIT Code) nuitrack.NativeResources.UnmanagedResource:Dispose (bool)
0x00000258A166A06B (Mono JIT Code) nuitrack.NativeResources.PooledUnmanagedResource:Dispose (bool)
0x00000258A1669FEA (Mono JIT Code) nuitrack.NativeResources.UnmanagedResource:Dispose ()
0x00000258A166C8D3 (Mono JIT Code) SensorData:HandleOnUserTrackerUpdateEvent (nuitrack.UserFrame)
0x00000258A166C836 (Mono JIT Code) nuitrack.UserTracker:SignalOnUpdate (nuitrack.UserFrame)
0x00000258A166B683 (Mono JIT Code) nuitrack.NativeUserTracker:OnUserTrackerUpdateCallback (intptr)
0x000002589EB40E3B (Mono JIT Code) (wrapper native-to-managed) nuitrack.NativeUserTracker:OnUserTrackerUpdateCallback (intptr)
0x000000006CC9AC21 (libnuitrack) nuitrack_Recenter
0x000000006CC6B997 (libnuitrack) nuitrack_Recenter
0x000000006CB4CE39 (libnuitrack) ZN3tdv8nuitrack8Nuitrack14setConfigValueERKSsS3_
0x00000000641C8C63 (libmiddleware) ZN3tdv8nuitrack10middleware4Core6updateEv
0x000000006CB42064 (libnuitrack) ZN3tdv8nuitrack8Nuitrack6updateEv
0x000000006CB55C1A (libnuitrack) nuitrack_Update
0x00000258A0EF93B8 (Mono JIT Code) (wrapper managed-to-native) nuitrack.NativeImporter:nuitrack_Update ()
0x00000258A0EF92FB (Mono JIT Code) nuitrack.NativeNuitrack:Update ()
0x00000258A0EF9243 (Mono JIT Code) nuitrack.Nuitrack:Update ()
0x00000258A0EF8F23 (Mono JIT Code) NuitrackManager:Update ()
0x000002586970BBF8 (Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)
0x00007FFBCEEA697E (mono-2.0-bdwgc) mono_jit_set_domain
0x00007FFBCEDE8444 (mono-2.0-bdwgc) mono_object_get_virtual_method
0x00007FFBCEDE8530 (mono-2.0-bdwgc) mono_runtime_invoke

---> Removed loaded symbols

  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FFBCFAE4D6F)
0x00007FFBCFAE4D6F (UnityPlayer) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FFBCFD2774A)
0x00007FFBCFD2774A (UnityPlayer) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FFBCFD277F7)
0x00007FFBCFD277F7 (UnityPlayer) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FFBCF9DB000)
0x00007FFBCF9DB000 (UnityPlayer) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FFBCFB5C8C5)
0x00007FFBCFB5C8C5 (UnityPlayer) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FFBCFB5CA78)
0x00007FFBCFB5CA78 (UnityPlayer) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FFBCFB5D1AE)
0x00007FFBCFB5D1AE (UnityPlayer) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FFBCFDB8B6C)
0x00007FFBCFDB8B6C (UnityPlayer) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FFBCFDBB55B)
0x00007FFBCFDBB55B (UnityPlayer) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FFBCFDBE636)
0x00007FFBCFDBE636 (UnityPlayer) (function-name not available)
0x00007FFBCFDBE87B (UnityPlayer) UnityMain
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FF6D6C911F2)
0x00007FF6D6C911F2 (SMA-Introductie) (function-name not available)
0x00007FFC1900257D (KERNEL32) BaseThreadInitThunk
0x00007FFC1B04AA48 (ntdll) RtlUserThreadStart

And another one shows this:

0x00007FFA58E0BE8D (ntdll) RtlGetCurrentServiceSessionId
0x00007FFA58E0AB11 (ntdll) RtlFreeHeap
0x00007FFA5860CADC (msvcrt) free
0x00000000622149AD (NuitrackModule) ZNK5boost7archive6detail19pointer_oserializerINS0_13text_oarchiveEN3tdv19gesture_recognition19AnalogousRecognizerEE15save_object_ptrERNS1_14basic_oarchiveEPKv

---> Removed loaded symbols

  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 000000006183EC13)
0x000000006183EC13 (NuitrackModule) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 000000006183FB68)
0x000000006183FB68 (NuitrackModule) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 000000006184029C)
0x000000006184029C (NuitrackModule) (function-name not available)
0x0000000062274B50 (NuitrackModule) ZNK5boost7archive6detail19pointer_oserializerINS0_13text_oarchiveEN3tdv19gesture_recognition19AnalogousRecognizerEE15save_object_ptrERNS1_14basic_oarchiveEPKv
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 000000006189BF6C)
0x000000006189BF6C (NuitrackModule) (function-name not available)
0x00007FFA5862E634 (msvcrt) beginthreadex
0x00007FFA5862E70C (msvcrt) endthreadex
0x00007FFA5839257D (KERNEL32) BaseThreadInitThunk
0x00007FFA58E2AA48 (ntdll) RtlUserThreadStart

Hello @jorrit-ijsfontein

The most common problem with realsense is an unstable connection and most often it occurs because of the cable. Try running your application with a different cable (and preferably on a different computer)

https://community.nuitrack.com/t/ue5-plugin-crashes/3512

My first guess it that it’s the cable/extender indeed, but an access violation due to an instable connection is not the nicest ‘error’ to get. I think a connection problem can be handled more gracefully than an application crash.

@jorrit-ijsfontein Do you use the sensor with a different wire?

I’m awaiting another cable, and need to execute duration tests after that (as the error is rather erratic), so hold on…

But that doesn’t take away that a connection issue could be handled more gracefully in my opinion. Can you explain why this happens, in what seems to be in a module I have turned off in the Unity NuitrackManager (gesture recognizer)? Or is the function name (showing a boost::serialization function) misleading?

Thank you for reporting this problem, we will try to fix it in one of the next updates. An error about an unsuitable cable will probably be displayed.
For now, the only way out is to select a stable set of hardware to work with realsense. As far as I know, you have no problems with the new cable. Glad to hear that.
This is probably not directly related to gesture recognizer, it just appeared due to the call order or randomly due to hardware instability.

You’re a bit too quick :wink: I haven’t installed any new cable yet. I’ve only tested a new cable on a development machine. I’ll keep you posted, there might be news after the weekend…

1 Like