I have a very reproducible crash when recompiling my blueprints or playing in editor (4.1.1 source build, Windows 8.1).
I believe it may be related to BP inheritance. Please see the attached a minidump (.dmp), in a zip file.
I am usually able to avoid this crash when I make changes by force recompiling my blueprints starting from the most-derived classes up to the base classes. (Like from the leaves to the root of the inheritance tree).
Here is the stack:
UE4Editor-Core-Win64-Debug.dll!FDebug::AssertFailed(const char * Expr, const char * File, int Line, const wchar_t * Format, ...) Line 160 C++
> UE4Editor-UnrealEd-Win64-Debug.dll!FBlueprintCompileReinstancer::ReparentChild(UClass * ChildClass) Line 508 C++
UE4Editor-UnrealEd-Win64-Debug.dll!FBlueprintCompileReinstancer::ReparentChild(UBlueprint * ChildBP) Line 497 C++
UE4Editor-UnrealEd-Win64-Debug.dll!FBlueprintCompileReinstancer::FBlueprintCompileReinstancer(UClass * InClassToReinstance, bool bIsBytecodeOnly, bool bSkipGC) Line 78 C++
UE4Editor-UnrealEd-Win64-Debug.dll!FKismetEditorUtilities::CompileBlueprint(UBlueprint * BlueprintObj, bool bIsRegeneratingOnLoad, bool bSkipGarbageCollection, bool bSaveIntermediateProducts, FCompilerResultsLog * pResults) Line 321 C++
UE4Editor-UnrealEd-Win64-Debug.dll!UEditorEngine::PlayInEditor(UWorld * InWorld, bool bInSimulateInEditor) Line 1608 C++
UE4Editor-UnrealEd-Win64-Debug.dll!UEditorEngine::StartQueuedPlayMapRequest() Line 772 C++
UE4Editor-UnrealEd-Win64-Debug.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 1076 C++
UE4Editor-UnrealEd-Win64-Debug.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 213 C++
UE4Editor-Win64-Debug.exe!FEngineLoop::Tick() Line 1985 C++
UE4Editor-Win64-Debug.exe!EngineTick() Line 53 C++
UE4Editor-Win64-Debug.exe!GuardedMain(const wchar_t * CmdLine, HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, int nCmdShow) Line 135 C++
UE4Editor-Win64-Debug.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow) Line 196 C++
The VS minidump file
In desperation I have commented out the assert in KismetReinstanceUtilities.cpp which is causing the crash. It has stopped crashing, but I am very afraid that the assert is actually valid and might be there to prevent corruption:
void FBlueprintCompileReinstancer::ReparentChild(UClass* ChildClass)
{
check(ChildClass);
++ //check(ChildClass->GetSuperClass() == ClassToReinstance || ChildClass->GetSuperClass() == DuplicatedClass);
Hi Clapfoot,
Would you be able to provide a copy of your dxdiag and the log for your project immediately after the crash (you can find this in …\Saved\Logs)? Also, would you be able to provide a set of steps that would help us be able to reproduce the issue you have been experiencing?
Hi Clapfoot,
I am very sorry for the delay in getting back to you. Thank you very much for the information you have provided so far. Have you noticed this problem occurring in a large number of Blueprints?
No not a large number, but it was always happening with a small group of BP classes.
We ended up creating a Blueprint Interface and using that in combination with Actor references instead of references typed as the BP base class. That seems to avoid the assert.
I am glad to hear that things seem to be working fine for you now. I am still a little bit concerned about what may have been causing the assert to trigger initially. If the Blueprints have not changed considerably since the problem was occurring, would you mind zipping one or two and uploading them so I can take a look and see if I can find anything?
If you can do that, it would also help if you could tell me how you had those Blueprints set up in relation to your base class. What I was doing to test this was to create a string of Blueprints that derived from the one above them, then making small changes to one of the Blueprints and compiling it. That did not cause any problems, so I imagine your setup is a little more complex.
, is there an email address that I can mail the project to? That would be easier than trying to tease out the parts that are necessary to reproduce the assert.
Hi Clapfoot,
Unfortunately we would not be able to look through the entire project. If you start running into this issue again, try to isolate one or two Blueprints that are experiencing the problem and we can look at those to see if we can determine what is going on.
Hi Clapfoot,
We have not heard back from you in a few days, so we are marking this post as Resolved for tracking purposes. If you are still experiencing the issue you reported, please respond to this message with additional information and we will offer further assistance.
Thank you.