Mono.dll caused an Access Violation CRASH

The players using my game have encountered a rare error that skips over code and changes the parameters of the game. Usually when this happens with other crash dumps the game just crashes. But in this specific case it keeps the game going incorrectly.

I uploaded the crash.dmp and error.log.

I am using the 2017 Unity personal version with the most recent update in Jan of 2020.

5403258–548436–crash.txt (242 KB)
5403258–548439–error.txt (19.6 KB)

Update. My player was using 2018 v.27 update not the latest.
Hopefully the latest version will clear this up.

Here’s the full callstack of the crash:

mono.dll!mono_traverse_object_internal(MonoObject * object, int isStruct, _MonoClass * klass, _LivenessState * state)
mono.dll!mono_traverse_objects(_LivenessState * state)
mono.dll!mono_traverse_array(MonoArray * array, _LivenessState * state)
mono.dll!mono_traverse_objects(_LivenessState * state)
mono.dll!mono_traverse_array(MonoArray * array, _LivenessState * state)
mono.dll!mono_traverse_objects(_LivenessState * state)
mono.dll!mono_traverse_array(MonoArray * array, _LivenessState * state)
mono.dll!mono_traverse_objects(_LivenessState * state)
mono.dll!mono_unity_liveness_calculation_from_statics(_LivenessState * liveness_state)
UnityPlayer.dll!MarkManagedStaticVariableRoots(GarbageCollectorThreadState &)
UnityPlayer.dll!GarbageCollectSharedAssets(bool monoReferences)
UnityPlayer.dll!UnloadUnusedAssetsOperation::IntegrateMainThread()
UnityPlayer.dll!PreloadManager::UpdatePreloadingSingleStep(PreloadManager::UpdatePreloadingFlags flags, int timeSliceMs)
UnityPlayer.dll!PreloadManager::WaitForAllAsyncOperationsToComplete()
UnityPlayer.dll!PreloadManager::UpdatePreloading()
UnityPlayer.dll!PlayerLoop()
UnityPlayer.dll!PerformMainLoop()
UnityPlayer.dll!MainMessageLoop()
UnityPlayer.dll!UnityMainImpl(HINSTANCE__ * hInst, HINSTANCE__ * hPrev, wchar_t * szCmdLine, int nCmdShow)
UnityPlayer.dll!UnityMain(HINSTANCE__ * hInst, HINSTANCE__ * hPrev, wchar_t * szCmdLine, int nCmdShow)

This indicates a corrupted heap, but I can’t really tell you which object is causing the crash without having a full crash dump (which can be captured using full dump type with this technique: Collecting User-Mode Dumps - Win32 apps | Microsoft Learn).

Thanks. At least it gives me an idea of where to look since I assume it is one of my objects that I created.