Description

Performing a hot reload on a project that contains an FStringAssetReference inside a struct results in a crash. This was reported to work fine in 4.6.1, but I was unable to verify that is the case.

Steps to Reproduce
  1. Create a new basic code project. Name the project TestHotReload.
  2. Unzip the attached Source folder.
    • Inside are Source and Content folders.
  3. Place the Source and Content folders into the new project so that they overwrite any existing source or content.
  4. Build the project in Visual Studio.
  5. Open the project in the Editor.
  6. Set the Global_sing asset as a game singleton
    • Edit -> Project Settings -> Engine -> General Settings -> Default Classes -> Game Singleton Class
  7. With the Editor still open, open the TestHotReloadGameMode.h file in Visual Studio.
  8. Uncomment the last line in the file: bool td;
  9. Click the Compile button in the Editor.

RESULT:
The Editor crashes while hot reloading.

EXPECTED:
The hot reload completes successfully.

Callstack

MachineId:926CC4CD4DE75FA30341E2895D619D6E

Unknown exception - code 00000001 (first/second chance not available)

Fatal error: [Link Removed] [Line: 163]
FArchive does not support FAssetPtr serialization. Use FArchiveUObject instead.

KERNELBASE.dll

{0x000007fefcf7940d}

+ 0 bytes
UE4Editor-Core.dll!FOutputDeviceWindowsError::Serialize()

{0x000007fee73f4684}

+ 0 bytes [d:\main-builds\ue4\engine\source\runtime\core\private\windows
UE4Editor-Core.dll!FMsg::Logf__VA()

{0x000007fee725e4af}

+ 0 bytes [d:\main-builds\ue4\engine\source\runtime\core\private\misc\ou
UE4Editor-Core.dll!FArchive::operator<<()

{0x000007fee72a67d2}

+ 0 bytes [d:\main-builds\ue4\engine\source\runtime\core\private\seriali
UE4Editor-CoreUObject.dll!FStringAssetReference::Serialize()

{0x000007fee7ae5f74}

+ 0 bytes [d:\main-builds\ue4\engine\source\runtime\coreuobject\private\
UE4Editor-CoreUObject.dll!UStructProperty::SerializeItem()

{0x000007fee7bd70c5}

+ 15 bytes [d:\main-builds\ue4\engine\source\runtime\coreuobject\private\
UE4Editor-CoreUObject.dll!FPropertyTag::SerializeTaggedProperty()

{0x000007fee7aed7bf}

+ 0 bytes [d:\main-builds\ue4\engine\source\runtime\coreuobject\public\u
UE4Editor-CoreUObject.dll!UStruct::SerializeTaggedProperties()

{0x000007fee7aed5f3}

+ 0 bytes [d:\main-builds\ue4\engine\source\runtime\coreuobject\private\
UE4Editor-CoreUObject.dll!UStructProperty::SerializeItem()

{0x000007fee7bd7143}

+ 0 bytes [d:\main-builds\ue4\engine\source\runtime\coreuobject\private\
UE4Editor-HotReload.dll!FHotReloadClassReinstancer::UpdateDefaultProperties()

{0x000007fed40b4c8b}

+ 0 bytes [d:\main-builds\ue4\engine\source\developer\hotreload\private\
UE4Editor-HotReload.dll!FHotReloadModule::ReinstanceClass()

{0x000007fed40b125f}

+ 78 bytes [d:\main-builds\ue4\engine\source\developer\hotreload\private\
UE4Editor-CoreUObject.dll!UClassReplaceHotReloadClasses()

{0x000007fee7c19213}

+ 0 bytes [d:\main-builds\ue4\engine\source\runtime\coreuobject\private\
UE4Editor-CoreUObject.dll!ProcessNewlyLoadedUObjects()

{0x000007fee7c0a819}

+ 5 bytes [d:\main-builds\ue4\engine\source\runtime\coreuobject\private\
UE4Editor-CoreUObject.dll!TBaseStaticDelegateInstance<void __cdecl(void)>::ExecuteIfSafe()

{0x000007fee7b3a327}

+ 0 bytes [d:\main-builds\ue4\engine\source\runtime\core\public\delegate
UE4Editor-Core.dll!TBaseMulticastDelegate<void>::Broadcast()

{0x000007fee71338b5}

+ 11 bytes [d:\main-builds\ue4\engine\source\runtime\core\public\delegate
UE4Editor-Core.dll!FModuleManager::LoadModuleWithFailureReason()

{0x000007fee72e7c90}

+ 0 bytes [d:\main-builds\ue4\engine\source\runtime\core\private\modules
UE4Editor-Core.dll!FModuleManager::LoadModule()

{0x000007fee72e7278}

+ 50 bytes [d:\main-builds\ue4\engine\source\runtime\core\private\modules
UE4Editor-HotReload.dll!FHotReloadModule::DoHotReloadInternal()

{0x000007fed40a7888}

+ 44 bytes [d:\main-builds\ue4\engine\source\developer\hotreload\private\
UE4Editor-HotReload.dll!FHotReloadModule::DoHotReloadCallback()

{0x000007fed40a6b2d}

+ 77 bytes [d:\main-builds\ue4\engine\source\developer\hotreload\private\
UE4Editor-HotReload.dll!TBaseRawMethodDelegateInstance<0,FHotReloadModule,TTypeWrapper<void> __cdecl(bool,enum ECompilationResult::Type),TArray<UPackage * __ptr64,FDefaultAllocator>,TArray<FName,FDefaultAllocator>,FOutputDevice & __ptr64>::Execute()

{0x000007fed40a9297}

+ 0 bytes [d:\main-builds\ue4\engine\source\runtime\core\public\delegate
UE4Editor-HotReload.dll!TBaseRawMethodDelegateInstance<0,FHotReloadModule,void __cdecl(bool,enum ECompilationResult::Type),TArray<UPackage * __ptr64,FDefaultAllocator>,TArray<FName,FDefaultAllocator>,FOutputDevice & __ptr64>::ExecuteIfSafe()

{0x000007fed40a9409}

+ 0 bytes [d:\main-builds\ue4\engine\source\runtime\core\public\delegate
UE4Editor-HotReload.dll!FHotReloadModule::CheckForFinishedModuleDLLCompile()

{0x000007fed40a5601}

+ 0 bytes [d:\main-builds\ue4\engine\source\developer\hotreload\private\
UE4Editor-HotReload.dll!FHotReloadModule::Tick()

{0x000007fed40b3f1b}

+ 35 bytes [d:\main-builds\ue4\engine\source\developer\hotreload\private\
UE4Editor-UnrealEd.dll!UEditorEngine::Tick()

{0x000007fed55048ff}

+ 0 bytes [d:\main-builds\ue4\engine\source\editor\unrealed\private\edit
UE4Editor-UnrealEd.dll!UUnrealEdEngine::Tick()

{0x000007fed5a22946}

+ 0 bytes [d:\main-builds\ue4\engine\source\editor\unrealed\private\unre
UE4Editor.exe!FEngineLoop::Tick()

{0x000000013f8b4911}

+ 0 bytes [d:\main-builds\ue4\engine\source\runtime\launch\private\launc
UE4Editor.exe!GuardedMain()

{0x000000013f8a5c3c}

+ 0 bytes [d:\main-builds\ue4\engine\source\runtime\launch\private\launc
UE4Editor.exe!GuardedMainWrapper()

{0x000000013f8a5caa}

+ 5 bytes [d:\main-builds\ue4\engine\source\runtime\launch\private\windo
UE4Editor.exe!WinMain()

{0x000000013f8b7aa9}

+ 17 bytes [d:\main-builds\ue4\engine\source\runtime\launch\private\windo
UE4Editor.exe!__tmainCRTStartup()

{0x000000013f8b8aa9}

+ 21 bytes [f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c:618]
kernel32.dll

{0x0000000076ed59ed}

+ 0 bytes
ntdll.dll

{0x000000007700c541} + 0 bytes
ntdll.dll {0x000000007700c541}

+ 0 bytes

Have Comments or More Details?

Head over to the existingAnswerHub thread and let us know what's up.

0
Login to Vote

Fixed
ComponentCore
Affects Versions4.7.24.8
Target Fix4.7.3
Fix Commit2476721
CreatedMar 10, 2015
ResolvedMar 12, 2015
UpdatedFeb 5, 2017