UE4 editor crashes when recompiling Actors after making an interface change

UE 4.11 and 4.12 never crashed on me with this exception so I suspect it was introduced with 4.13.

This crash has been happening when I recompile my Actor after making a change to one of the interfaces implemented by the Actor. This crash happens often, but not every time I recompile changes made to an Actor. However, when it does crash the editor I can reproduce it over and over until I short circuit the process (more on this later).

NOTE: I have my Compile setting setup so any time I click Compile it is supposed to save the blueprint. It appears the save process is after a successful Compilation, but that doesn’t really matter. So keep that in mind when you see the steps where I compile.

The procedure I took this last time when the crash happened is as follows:

  1. Add a function to my interface ICivilizationCertificateBearer, manually trigger Compile + Save.
  2. Update my PlayerController which implements ICivilizationCertificateBearer and add the implementation for the interface function. Manually trigger Compile + Save.
  3. Open up another Actor that implements ICivilizationCertificateBearer and add the implementation for the interface function. Manually trigger Compile + Save.
  4. UE4 editor crashes.
  5. Send and Restart the editor through the crash reporter window.
  6. Open up the interface ICivilizationCertificateBearer, verified it still has the new function which means it Compiled and Saved correctly.
  7. Open up PlayerController and verify that the new interface function has its implementation which means it Compiled and Saved correctly.
  8. Open up the Actor from step #3 that crashed the editor last time. Open the new interface function and see that the implementation is empty (obviously because editor crashed before saving).
  9. Re-add the new function’s implementation to the Actor from step #3. Manually trigger Compile + Save.
  10. UE4 editor crashes.
  11. (I can repeat the above process and at this point – after the first crash – I can reproduce it every time)
  12. Send and Restart UE4 through the crasher reporter.
  13. Reopen the offending Actor from step #3 and add it’s new interface function implementation. DON’T compile, only SAVE.
  14. Close the editor.
  15. Reopen the project.
  16. Open the Actor from step #3 and verify the new interface function implementation has been saved.
  17. See that the Compile button has a green check mark. Click Compile and it crashes the editor.
  18. Close Actor from step #3 and reopen PlayerController.
  19. Click Compile in PlayerController and there’s no crash. Reopen Actor from step #3, click Compile and UE4 editor crashes again.

The crash report is below.

Assertion failed: NewActor != nullptr [File:D:\Build\++UE4+Release-4.13+Compile\Sync\Engine\Source\Editor\UnrealEd\Private\Kismet2\KismetReinstanceUtilities.cpp] [Line: 1481] 



UE4Editor_Core!FDebug::AssertFailed() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\private\misc\outputdevice.cpp:421]
UE4Editor_UnrealEd!FBlueprintCompileReinstancer::ReplaceInstancesOfClass_Inner() [d:\build\++ue4+release-4.13+compile\sync\engine\source\editor\unrealed\private\kismet2\kismetreinstanceutilities.cpp:1482]
UE4Editor_UnrealEd!FBlueprintCompileReinstancer::ReplaceInstancesOfClass() [d:\build\++ue4+release-4.13+compile\sync\engine\source\editor\unrealed\private\kismet2\kismetreinstanceutilities.cpp:1314]
UE4Editor_UnrealEd!FBlueprintCompileReinstancer::ReinstanceInner() [d:\build\++ue4+release-4.13+compile\sync\engine\source\editor\unrealed\private\kismet2\kismetreinstanceutilities.cpp:608]
UE4Editor_UnrealEd!FBlueprintCompileReinstancer::ReinstanceObjects() [d:\build\++ue4+release-4.13+compile\sync\engine\source\editor\unrealed\private\kismet2\kismetreinstanceutilities.cpp:770]
UE4Editor_UnrealEd!FKismetEditorUtilities::CompileBlueprint() [d:\build\++ue4+release-4.13+compile\sync\engine\source\editor\unrealed\private\kismet2\kismet2.cpp:795]
UE4Editor_Kismet!FBlueprintEditor::Compile() [d:\build\++ue4+release-4.13+compile\sync\engine\source\editor\kismet\private\blueprinteditor.cpp:3213]
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,TTypeWrapper<void> __cdecl(void)>::Execute() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:317]
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,void __cdecl(void)>::ExecuteIfSafe() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:423]
UE4Editor_Slate!FUICommandList::ExecuteAction() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\slate\private\framework\commands\uicommandlist.cpp:92]
UE4Editor_Slate!SToolBarButtonBlock::OnClicked() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\slate\private\framework\multibox\stoolbarbuttonblock.cpp:300]
UE4Editor_Slate!TMemberFunctionCaller<SToolBarButtonBlock,FReply (__cdecl SToolBarButtonBlock::*)(void) __ptr64>::operator()<>() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\public\delegates\delegateinstanceinterface.h:161]
UE4Editor_Slate!TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter<TMemberFunctionCaller<SToolBarButtonBlock,FReply (__cdecl SToolBarButtonBlock::*)(void) __ptr64> >() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\public\delegates\tuple.h:115]
UE4Editor_Slate!TBaseSPMethodDelegateInstance<0,SToolBarButtonBlock,0,FReply __cdecl(void)>::Execute() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:317]
UE4Editor_Slate!TBaseDelegate<FReply>::Execute() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:521]
UE4Editor_Slate!SButton::OnMouseButtonUp() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\slate\private\widgets\input\sbutton.cpp:278]
UE4Editor_Slate!<lambda_8d0e9a1da76abd0a756a3a9d775f5ed1>::operator()() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4901]
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,<lambda_8d0e9a1da76abd0a756a3a9d775f5ed1> >() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:215]
UE4Editor_Slate!FSlateApplication::RoutePointerUpEvent() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4890]
UE4Editor_Slate!FSlateApplication::ProcessMouseButtonUpEvent() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5348]
UE4Editor_Slate!FSlateApplication::OnMouseUp() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5328]
UE4Editor_Core!FWindowsApplication::ProcessDeferredMessage() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:1584]
UE4Editor_Core!FWindowsApplication::DeferMessage() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:1930]
UE4Editor_Core!FWindowsApplication::ProcessMessage() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:747]
UE4Editor_Core!FWindowsApplication::AppWndProc() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:669]
user32
user32
UE4Editor_Core!FWindowsPlatformMisc::PumpMessages() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\private\windows\windowsplatformmisc.cpp:905]
UE4Editor!FEngineLoop::Tick() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:2788]
UE4Editor!GuardedMain() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\launch\private\launch.cpp:156]
UE4Editor!GuardedMainWrapper() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor!WinMain() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:202]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264]
kernel32
ntdll

Hi elitereloaded,

  • What specific changes are you making to your interface?
  • Does this occur in a clean, blank project with no additional content or is it limited to one project?
  • Can you show me a screenshot of the interface before and after?
  • Do you have a sample project this is occurring in I can take a look at?

Added a new function with a single return value of type GUID.

I have not tried in a clean project, I’ll experiment with that today after my work day.

Interface before

Interface after

My project is not that big so I can dropbox it to you.

This might not be related to changing an interface and recompiling an Actor, but it might be related to recompiling an Actor marked as Abstract.

I have the following Actor inheritance tree.

– Constructable : Actor
---- Building : Constructable
---- Vehicle : Constructable
---- Human : Constructable

Constructable is set as an Abstract Actor “Generate Abstract Class” is checked in the Class Settings. All my other Actors that compile fine are not Abstract.

Throughout the day every time I try to recompile my Constructable actor blueprint the editor crashed, no matter what interfaces I removed. That made me realize that it wasn’t linked to changing an Interface and recompiling.

While looking through my project’s log file (earlier I was looking at the crash dumps) I saw these lines.

[2016.09.14-04.49.55:585][683]LogSpawn:Warning: SpawnActor failed because class Constructable_C is abstract
[2016.09.14-04.49.55:585][683]LogWindows: Windows GetLastError: The operation completed successfully. (0)
[2016.09.14-04.49.56:330][683]LogCrashTracker: 


[2016.09.14-04.49.56:330][683]LogCrashTracker: 


[2016.09.14-04.49.56:330][683]LogWindows:Error: === Critical error: ===
[2016.09.14-04.49.56:330][683]LogWindows:Error: 
[2016.09.14-04.49.56:330][683]LogWindows:Error: Assertion failed: NewActor != nullptr [File:D:\Build\++UE4+Release-4.13+Compile\Sync\Engine\Source\Editor\UnrealEd\Private\Kismet2\KismetReinstanceUtilities.cpp] 

<same log output as stated in my original post>

I changed my Constructable Actor so it was no longer abstract, saved the blueprint before compiling, then compiled and the editor crashed. However, when I relaunched the editor I can now recompile my Constructable class without the editor crashing.

Let me work with my project for a few days while my Constructable actor is not marked as abstract and I will report back if that seems to have solved the issue.

I just set my Constructable actor as abstract again and on compile the editor crashed. It appears I have it reproducible. I have yet to copy my project to another machine to confirm its reproducible on another machine. I’ll do that tonight.

I will wait to hear back on this. In th emeantime, do you have any specific steps I can take to recreate this on my end? I saw the steps you have listed above, but I do not know what specific changes you made that would allow me to recreate the error. Any additional information would be helpful in determining the root cause of your crash. Additionally, can you post your crash logs? They can be found at \Unreal Projects\PROJECTNAME\saved\logs\

I can dropbox you my project.

If you send me the link I’ll be happy to take a look. You can private message the link to me on the forums if privacy is a concern.

Hi elitereloaded,

We have not heard from you in several days. I am marking this as answered for tracking purposes. If you are still experiencing this error, please comment with the requested information.

I sent a PM with a dropbox link, did you get it? Were you able to reproduce the same crash?

Hi elitereloaded,

Ah, I see this update on the forums. I am downloading the asset now and will reply here when I have more information available.

Hello,

I have the same problem in 13.
Good to know what is causing the crash, so now i can save before eache comile :slight_smile:

Easy to reproduce.
start a new blanc project with starter content
create a blueprint type actor : name it “abstractTest”
open ‘class settings’ and under “class options” set the option ‘generate abstract class’ true

hit compile → the editor will crash

TestMachineId:D7A2CF334D8F1C3E62F44F86971E094B
EpicAccountId:b0b3a194934847c6a9165a17bf3037bf

You do not have any debugging symbols required to display the callstack for this crash.

MachineId:D7A2CF334D8F1C3E62F44F86971E094B
EpicAccountId:b0b3a194934847c6a9165a17bf3037bf

is there a bug report for this?

I was able to reproduce this on my end using Anansi’s steps and have entered a bug report .[link text][1]. You can track the report’s status as the issue is reviewed by our development staff.

[1]: