Hot reload breaks custom editor module

I have a simple custom editor module in my project. Whenever I cause a hot-reload, and then later close the editor, I cannot open it again. The error message is “The game module ‘MyCustomModule’ could not be loaded. There may be an operating system error or the module may not be properly set up.” After that, the engine crashes with an "Assertion failed: GIsHotReload [File:D:\Build\++UE4+Release-4.12+Compile\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectBase.cpp] [Line: 564] ". However, my module compiles just fine.

When this happens, simply rebuilding my game and then launching the editor fixes the problem. I think this is caused by the presence of the hot reload files in my “C:/Documents/MyProject/Binaries” folder, because simply deleting the “UE4Editor-MyProject-XXXX.dll” fixes the problem too.

My guess would be that because my module is not hot-reloaded (because it is an editor module), and that the “latest version” of the binaries is the hot-reloaded version, it doesn’t consider my module to be compatible with the version of the game module. That, or it doesn’t find it because my “MyCustomModule.dll” isn’t in the same format as the game module hot-reloaded binaries (without that “-XXXX” at the end).

These guesses are just shots in the dark. For now, I have made a script to launch the editor that deletes any hot-reload files in my binaries folder, and it works just fine.

I can also provide the full code from my plugin and from my .uproject file, if that could help.

Hey Dathanar-

Hot-reload only effects classes derived from UCLASS types. If your custom module uses classes that are not UCLASS, these classes are not being updated with the hot-reload. As you mentioned, compiling without a hot-reload will update everything at the same time and avoid the error. Though it is not a plugin module, an example of this can be found here: Unreal Engine Issues and Bug Tracker (UE-25350) .

Cheers

Doug Wilson

Hey Doug,

Thanks for the heads-up, I didn’t know if this was an issue or normal behaviour.