The callstack - pretty much the only thing I manage to extract - looks like this;
> mono.dll!calloc(unsigned int num, unsigned int size) Line 46 C
mono.dll!g_list_alloc(...) Line 35 C
mono.dll!new_node(_GList * prev, void * data, _GList * next) Line 42 C
mono.dll!g_list_prepend(_GList * list, void * data) Line 65 C
mono.dll!mono_custom_attrs_from_index(_MonoImage * image, unsigned int idx) Line 8279 C
mono.dll!mono_custom_attrs_from_field(_MonoClass * klass, _MonoClassField * field) Line 8451 C
Unity.exe!TransferScriptData<SafeBinaryRead>(TransferScriptInstance info, SafeBinaryRead transfer) Line 444 C++
Unity.exe!SafeBinaryRead::TransferWithTypeString<TransferScriptInstance>(TransferScriptInstance data, const char * name, const char * typeName, TransferMetaFlags __formal) Line 246 C++
Unity.exe!TransferScriptData<SafeBinaryRead>(TransferScriptInstance info, SafeBinaryRead transfer) Line 636 C++
Unity.exe!SafeBinaryRead::TransferSTLStyleArray<TransferArrayScriptInstance>(TransferArrayScriptInstance data, TransferMetaFlags __formal) Line 204 C++
Unity.exe!SafeBinaryRead::TransferWithTypeString<TransferArrayScriptInstance>(TransferArrayScriptInstance data, const char * name, const char * typeName, TransferMetaFlags __formal) Line 264 C++
Unity.exe!TransferFieldOfTypeArray<SafeBinaryRead>(MonoObject * instance, MonoClass * klass, MonoClassField * field, const char * name, TransferScriptInstance info, SafeBinaryRead transfer, MonoType * monoType, int type, TransferMetaFlags metaFlags) Line 580 C++
Unity.exe!TransferScriptData<SafeBinaryRead>(TransferScriptInstance info, SafeBinaryRead transfer) Line 641 C++
Unity.exe!SafeBinaryRead::TransferWithTypeString<TransferScriptInstance>(TransferScriptInstance data, const char * name, const char * typeName, TransferMetaFlags __formal) Line 246 C++
Unity.exe!TransferScriptData<SafeBinaryRead>(TransferScriptInstance info, SafeBinaryRead transfer) Line 636 C++
Unity.exe!SafeBinaryRead::TransferWithTypeString<TransferScriptInstance>(TransferScriptInstance data, const char * name, const char * typeName, TransferMetaFlags __formal) Line 246 C++
Unity.exe!TransferScriptData<SafeBinaryRead>(TransferScriptInstance info, SafeBinaryRead transfer) Line 636 C++
Unity.exe!SafeBinaryRead::TransferSTLStyleArray<TransferArrayScriptInstance>(TransferArrayScriptInstance data, TransferMetaFlags __formal) Line 204 C++
Unity.exe!SafeBinaryRead::TransferWithTypeString<TransferArrayScriptInstance>(TransferArrayScriptInstance data, const char * name, const char * typeName, TransferMetaFlags __formal) Line 264 C++
Unity.exe!TransferFieldOfTypeArray<SafeBinaryRead>(MonoObject * instance, MonoClass * klass, MonoClassField * field, const char * name, TransferScriptInstance info, SafeBinaryRead transfer, MonoType * monoType, int type, TransferMetaFlags metaFlags) Line 580 C++
Unity.exe!TransferScriptData<SafeBinaryRead>(TransferScriptInstance info, SafeBinaryRead transfer) Line 641 C++
Unity.exe!SafeBinaryRead::TransferWithTypeString<TransferScriptInstance>(TransferScriptInstance data, const char * name, const char * typeName, TransferMetaFlags __formal) Line 246 C++
Unity.exe!TransferScriptData<SafeBinaryRead>(TransferScriptInstance info, SafeBinaryRead transfer) Line 636 C++
Unity.exe!SafeBinaryRead::TransferSTLStyleArray<TransferArrayScriptInstance>(TransferArrayScriptInstance data, TransferMetaFlags __formal) Line 204 C++
Unity.exe!SafeBinaryRead::TransferWithTypeString<TransferArrayScriptInstance>(TransferArrayScriptInstance data, const char * name, const char * typeName, TransferMetaFlags __formal) Line 264 C++
Unity.exe!TransferFieldOfTypeArray<SafeBinaryRead>(MonoObject * instance, MonoClass * klass, MonoClassField * field, const char * name, TransferScriptInstance info, SafeBinaryRead transfer, MonoType * monoType, int type, TransferMetaFlags metaFlags) Line 580 C++
Unity.exe!TransferScriptData<SafeBinaryRead>(TransferScriptInstance info, SafeBinaryRead transfer) Line 641 C++
Unity.exe!MonoBehaviour::TransferWithInstance<SafeBinaryRead>(SafeBinaryRead transfer, MonoObject * instance, MonoClass * klass) Line 720 C++
Unity.exe!MonoBehaviour::TransferSafeBinaryInstanceOnly(dynamic_array<unsigned char,1,53> data, const TypeTree typeTree, int options) Line 1150 C++
Unity.exe!MonoBehaviour::RestoreInstanceStateFromBackup(BackupState backup, int flags) Line 1139 C++
Unity.exe!MonoManager::EndReloadAssembly(const DomainReloadingData savedData, dynamic_bitset allAssembliesMask) Line 1348 C++
Unity.exe!MonoManager::ReloadAssembly(dynamic_bitset allAssembliesMask) Line 1115 C++
Unity.exe!ReloadAllUsedAssemblies() Line 976 C++
Unity.exe!Application::SetIsPlaying(bool isPlaying) Line 2435 C++
Unity.exe!Application::TickTimer() Line 1363 C++
Unity.exe!MainMessageLoop() Line 336 C++
Unity.exe!WinMain(HINSTANCE__ * hInst, HINSTANCE__ * hPrev, char * szCmdLine, int nCmdShow) Line 848 C++
Unity.exe!__tmainCRTStartup() Line 275 C
kernel32.dll!74e7336a() Unknown
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
ntdll.dll!77099f72() Unknown
ntdll.dll!77099f45() Unknown
It stays in that kind of recursive methods the whole time, often calling allocation method. The memory goes from 200Mb to about 1Gb over a minute of process. Really wonder why 34kb of data can make Unity loses its shit like that.
Frankly, I have no idea why Unity is doing any of that when I press play. I think it’s trying to transfer all the loaded data into C++ while it’s reloading the assemblies… But why is it taking so long and why is the memory bloating like that?
Screenshot of our editor; Imgur: The magic of the Internet