How to analyze crash.dmp

Hi everyone,

I am trying to analyze the crash folder a user has sent to me but I have to admit, I don’t know how to do it.
I have learned so far that dbg files can be analyzed by WinDbg or Visual Studio (I am using the latter).
So I opened the crash.dbg in Visual Studio and hit “Debug with Native only”. From what I gathered you can only Debug .NET runtimes prior to .NET 4 in Native mode.

But now I am at a loss. The callstack I am getting is this:

 	FarmForYourLife.exe!CollectAndProduceGameObjectHierarchy(Unity::GameObject  go, Transform * transform, vector_map<long,long,std::less<long>,stl_allocator<std::pair<long,long>,97,4> > * remappedPtrs)  Line 54	C++
 	FarmForYourLife.exe!CollectAndProduceGameObjectHierarchy(Unity::GameObject  go, Transform * transform, vector_map<long,long,std::less<long>,stl_allocator<std::pair<long,long>,97,4> > * remappedPtrs)  Line 79	C++
 	FarmForYourLife.exe!CollectAndProduceClonedIsland(Object  o, vector_map<long,long,std::less<long>,stl_allocator<std::pair<long,long>,97,4> > * remappedPtrs)  Line 116 + 0x11 bytes	C++
 	FarmForYourLife.exe!CloneObjectImpl(Object * object, vector_map<long,long,std::less<long>,stl_allocator<std::pair<long,long>,97,4> >  ptrs)  Line 182	C++
 	FarmForYourLife.exe!InstantiateObject(Object  inObject, const Vector3f  worldPos, const Quaternionf  worldRot, vector_map<long,long,std::less<long>,stl_allocator<std::pair<long,long>,97,4> >  ptrs)  Line 262 + 0xa bytes	C++
 	FarmForYourLife.exe!InstantiateObject(Object  inObject, const Vector3f  worldPos, const Quaternionf  worldRot)  Line 295	C++
 	FarmForYourLife.exe!Object_CUSTOM_INTERNAL_CALL_Internal_InstantiateSingle(ScriptingObjectOfType<Object> data, const Vector3f  pos, const Quaternionf  rot)  Line 38	C++
 	081f59d0()	
 	FarmForYourLife.exe!_strnicoll_l(const char * _string1, const char * _string2, unsigned int count, localeinfo_struct * plocinfo)  Line 68 + 0x10 bytes	C++
 	03a20000()	
 	FarmForYourLife.exe!x_ismbbtype_l(localeinfo_struct * plocinfo, unsigned int tst, int cmask, int kmask)  Line 219	C++
 	FarmForYourLife.exe!WinMain(HINSTANCE__ * hInst, HINSTANCE__ * hPrev, char * szCmdLine, int nCmdShow)  Line 6 + 0x15 bytes	C++
 	FarmForYourLife.exe!__tmainCRTStartup()  Line 275 + 0x1c bytes	C
 	kernel32.dll!@BaseThreadInitThunk@12()  + 0x12 bytes	
 	ntdll.dll!___RtlUserThreadStart@8()  + 0x27 bytes	
 	ntdll.dll!__RtlUserThreadStart@8()  + 0x1b bytes

And while this tells me that it crashed on an Instantiate call, is there any way I can dig further to see what exactly went wrong? I have built my Game as Development Build and also selected Script Debugging, so I have the UnityPlayer_Symbols.pdb file, but tbh I have no idea what to do with this file. Or if it is needed at all.

I assume the 081f59d0() and 03a20000() adresses somehow point to my code. But I could be completely off there. But if I’m not, is there a way to see what line of my C# code triggered this error? Do I have to link the Symbols somehow or am I completely wrong with my assumptions and this is as much information I can get from these files?

As a next step I will be throwing Debug calls around all Instantiate functions, but I wanted to ask if there is a better way to get more information out of the crash.dmp?

Cheers
Oliver

Hey everyone,

so I am a bit further into this issue. By putting a Debug.Log call before every Instantiate I was able to figure out which Instantiate call was throwing the error. However this is happening very weirdly and randomly throughout. Luckily I was able to find a short Repro which triggers the crash, but the same crash also happens in other situations throughout the game

  • Start Game
  • Load new Storymode
  • Immediately Exit to Menu
  • Load new Story mode again
  • CRASH!!!

I investigated the Prefab that was Instantiated and somehow… It’s exactly the same Prefab when loading the story mode for the first and for the second time.

Now, I am aware that you wont be able to help me with the details, since it seems so specific to my project. But where would you go from here? How can a prefab, thats fine during one load, crash Unity when loaded another time? Is there any way to find out what unity is doing at line 54 of runtime\gamecode\cloneobject.cpp to figure out why my prefab is breaking it?