Using bFasterWithoutUnity and MinFilesUsingPrecompiledHeaderOverride, on ShooterGame.Build.Cs results in Engine crash.
1) Create a C++ ShooterGame project in 4.21.
2) Navigate to your Visual Studio Solution's ShooterGame.Build.CS File, and Add the following to the constructor underneath PrivatePCHHeaderFile = "Public/ShooterGame.h";
bFasterWithoutUnity = true;
MinFilesUsingPrecompiledHeaderOverride = 1;
3) Modify ShooterWeapon.h by adding at the end of the class
public:
FORCEINLINE static bool Test()
4) Modify ShooterPickup_Ammo.cpp by adding inside the constructor
check(AShooterWeapon::Test());
5) Press F5 in VS to start debugging, which will build everything. When the engine loads, it will fail on the check() as expected
6) Modify JUST ShooterWeapon.h so that now Test returns true
public: FORCEINLINE static bool Test()
7) Press F5. To build
Result: Crash: Please see Call Stack
Expected: Files that use a header being rebuilt when such header is modified.
Assertion failed: AShooterWeapon::Test() [Link Removed] [Line: 10]
UE4Editor_Core!FDebug::AssertFailed() [d:\build\++ue4\sync\engine\source\runtime\core\private\misc\assertionmacros.cpp:417]
UE4Editor_ShooterGame_5667!AShooterPickup_Ammo::AShooterPickup_Ammo() [e:\projects\shootergame\source\shootergame\private\pickups\shooterpickup_ammo.cpp:10]
UE4Editor_HotReload!FHotReloadClassReinstancer::RecreateCDOAndSetupOldClassReinstancing() [d:\build\++ue4\sync\engine\source\developer\hotreload\private\hotreloadclassreinstancer.cpp:247]
UE4Editor_HotReload!FHotReloadClassReinstancer::FHotReloadClassReinstancer() [d:\build\++ue4\sync\engine\source\developer\hotreload\private\hotreloadclassreinstancer.cpp:322]
UE4Editor_HotReload!FHotReloadClassReinstancer::Create() [d:\build\++ue4\sync\engine\source\developer\hotreload\private\hotreloadclassreinstancer.h:120]
UE4Editor_HotReload!FHotReloadModule::ReinstanceClass() [d:\build\++ue4\sync\engine\source\developer\hotreload\private\hotreload.cpp:1255]
UE4Editor_HotReload!FHotReloadModule::ReinstanceClasses() [d:\build\++ue4\sync\engine\source\developer\hotreload\private\hotreload.cpp:1242]
UE4Editor_HotReload!TBaseRawMethodDelegateInstance<0,FHotReloadModule,void __cdecl(void)>::ExecuteIfSafe() [d:\build\++ue4\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:518]
UE4Editor_CoreUObject!UClassReplaceHotReloadClasses() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\uobjectbase.cpp:746]
UE4Editor_CoreUObject!ProcessNewlyLoadedUObjects() [d:\build\++ue4\sync\engine\source\runtime\coreuobject\private\uobject\uobjectbase.cpp:872]
UE4Editor_CoreUObject!TBaseStaticDelegateInstance<void __cdecl(void)>::ExecuteIfSafe() [d:\build\++ue4\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:813]
UE4Editor_Core!TBaseMulticastDelegate<void>::Broadcast() [d:\build\++ue4\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:974]
UE4Editor_Core!FModuleManager::LoadModuleWithFailureReason() [d:\build\++ue4\sync\engine\source\runtime\core\private\modules\modulemanager.cpp:510]
UE4Editor_Core!FModuleManager::LoadModule() [d:\build\++ue4\sync\engine\source\runtime\core\private\modules\modulemanager.cpp:356]
UE4Editor_HotReload!FHotReloadModule::DoHotReloadInternal() [d:\build\++ue4\sync\engine\source\developer\hotreload\private\hotreload.cpp:784]
UE4Editor_HotReload!FHotReloadModule::DoHotReloadFromIDE() [d:\build\++ue4\sync\engine\source\developer\hotreload\private\hotreload.cpp:1515]
UE4Editor_HotReload!FHotReloadModule::Tick() [d:\build\++ue4\sync\engine\source\developer\hotreload\private\hotreload.cpp:1459]
UE4Editor_Core!FTicker::Tick() [d:\build\++ue4\sync\engine\source\runtime\core\private\containers\ticker.cpp:95]
UE4Editor!FEngineLoop::Tick() [d:\build\++ue4\sync\engine\source\runtime\launch\private\launchengineloop.cpp:3894]
UE4Editor!GuardedMain() [d:\build\++ue4\sync\engine\source\runtime\launch\private\launch.cpp:174]
UE4Editor!GuardedMainWrapper() [d:\build\++ue4\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:145]
UE4Editor!WinMain() [d:\build\++ue4\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:276]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283]
kernel32
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-68351 in the post.
1 |
Component | UE - Foundation - Core |
---|---|
Affects Versions | 4.20, 4.21 |
Created | Jan 11, 2019 |
---|---|
Resolved | Aug 27, 2021 |
Updated | Aug 27, 2021 |