This issue is happening randomly in the editor, but also on our CI when cooking, which makes the problem very annoying.
There is a public thread about it with a workaround solution, but as explained by a teamate of mine in the second message, it leads to another issue.
I uploaded some additional file (logs, dump) that may help.
Any insights or workarounds would be appreciated.
Steps to Reproduce
The “creating and packaging a repro project for UDN” leads to an error: “Oops! This is an invalid page. Please navigate back to your previous page, or use the site header to find what you’re looking for.”
I did my best to provide a light project to reproduce the issue without the guide, I hope it will be enough. The steps to reproduce the crash are easy:
- Open the project in the editor
- Open ST_Main
- Spam the compile button until the crash happens
It seems that adding linked statetrees with bound properties increases the reproduction rate but this is the simplest setup that does it.
Would you be able to send us a callstack that has the included symbols for the engine? From our backend, I believe you are using a launcher build. To add the required symbols, you can open the options for your engine version and check the box for Editor symbols for Debugging. It will download and install the symbols so we can see the full callstack that led up to the failed assertion.
We have been working on some issues that were found with StateTree compiler in the editor. There might be a couple fixes I can attempt to find, but I do not know if you build from source or have the desire to cherrypick the fixes into your project to test them.
-James
Hi James,
We do build from sources, but it was easier for me to make a minimal reproduction project from a version installed from the launcher. Here’s the callstack with the symbols:
`LoginId:10b5cb13452e09263ef9289ec7cbd8bd
EpicAccountId:759e25e1b6c5430eac5554616c060f02
Assertion failed: EditorNode.Instance.GetScriptStruct() == Instance.GetScriptStruct() [File:D:\build++UE5\Sync\Engine\Plugins\Runtime\StateTree\Source\StateTreeEditorModule\Private\StateTreeCompiler.cpp] [Line: 1241]
UnrealEditor_StateTreeEditorModule!FStateTreeCompiler::CreateBindingsForNodes() [D:\build++UE5\Sync\Engine\Plugins\Runtime\StateTree\Source\StateTreeEditorModule\Private\StateTreeCompiler.cpp:1241]
UnrealEditor_StateTreeEditorModule!FStateTreeCompiler::CreateStateTransitions() [D:\build++UE5\Sync\Engine\Plugins\Runtime\StateTree\Source\StateTreeEditorModule\Private\StateTreeCompiler.cpp:858]
UnrealEditor_StateTreeEditorModule!FStateTreeCompiler::Compile() [D:\build++UE5\Sync\Engine\Plugins\Runtime\StateTree\Source\StateTreeEditorModule\Private\StateTreeCompiler.cpp:312]
UnrealEditor_StateTreeEditorModule!UStateTreeEditingSubsystem::CompileStateTree() [D:\build++UE5\Sync\Engine\Plugins\Runtime\StateTree\Source\StateTreeEditorModule\Private\StateTreeEditingSubsystem.cpp:34]
UnrealEditor_StateTreeEditorModule!UStateTreeEditorMode::Compile() [D:\build++UE5\Sync\Engine\Plugins\Runtime\StateTree\Source\StateTreeEditorModule\Private\StateTreeEditorMode.cpp:394]
UnrealEditor_StateTreeEditorModule!V::TBaseUObjectMethodDelegateInstance::ExecuteIfSafe() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:667]
UnrealEditor_Slate!FUIAction::Execute() [D:\build++UE5\Sync\Engine\Source\Runtime\Slate\Public\Framework\Commands\UIAction.h:139]
UnrealEditor_Slate!FUICommandList::ExecuteAction() [D:\build++UE5\Sync\Engine\Source\Runtime\Slate\Private\Framework\Commands\UICommandList.cpp:117]
UnrealEditor_Slate!SToolBarButtonBlock::OnClicked() [D:\build++UE5\Sync\Engine\Source\Runtime\Slate\Private\Framework\MultiBox\SToolBarButtonBlock.cpp:496]
UnrealEditor_Slate!TBaseSPMethodDelegateInstance<0,SToolBarButtonBlock,1,FReply __cdecl(void),FDefaultDelegateUserPolicy>::Execute() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:282]
UnrealEditor_Slate!SButton::ExecuteOnClick() [D:\build++UE5\Sync\Engine\Source\Runtime\Slate\Private\Widgets\Input\SButton.cpp:467]
UnrealEditor_Slate!SButton::OnMouseButtonUp() [D:\build++UE5\Sync\Engine\Source\Runtime\Slate\Private\Widgets\Input\SButton.cpp:392]
UnrealEditor_Slate!FSlateApplication::RoutePointerUpEvent'::
8’::<lambda_2>::operator()() [D:\build++UE5\Sync\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp:5346]
UnrealEditor_Slate!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,FSlateApplication::RoutePointerUpEvent'::
8’::<lambda_2> >() [D:\build++UE5\Sync\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp:456]
UnrealEditor_Slate!FSlateApplication::RoutePointerUpEvent() [D:\build++UE5\Sync\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp:5332]
UnrealEditor_Slate!FSlateApplication::ProcessMouseButtonUpEvent() [D:\build++UE5\Sync\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp:5917]
UnrealEditor_Slate!FSlateApplication::OnMouseUp() [D:\build++UE5\Sync\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp:5873]
UnrealEditor_ApplicationCore!FWindowsApplication::ProcessDeferredMessage() [D:\build++UE5\Sync\Engine\Source\Runtime\ApplicationCore\Private\Windows\WindowsApplication.cpp:2271]
UnrealEditor_ApplicationCore!FWindowsApplication::DeferMessage() [D:\build++UE5\Sync\Engine\Source\Runtime\ApplicationCore\Private\Windows\WindowsApplication.cpp:2783]
UnrealEditor_ApplicationCore!FWindowsApplication::ProcessMessage() [D:\build++UE5\Sync\Engine\Source\Runtime\ApplicationCore\Private\Windows\WindowsApplication.cpp:1944]
UnrealEditor_ApplicationCore!FWindowsApplication::AppWndProc() [D:\build++UE5\Sync\Engine\Source\Runtime\ApplicationCore\Private\Windows\WindowsApplication.cpp:945]
user32
user32
UnrealEditor_ApplicationCore!FWindowsPlatformApplicationMisc::PumpMessages() [D:\build++UE5\Sync\Engine\Source\Runtime\ApplicationCore\Private\Windows\WindowsPlatformApplicationMisc.cpp:145]
UnrealEditor!FEngineLoop::Tick() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:5806]
UnrealEditor!GuardedMain() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:188]
UnrealEditor!GuardedMainWrapper() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:123]
UnrealEditor!LaunchWindowsStartup() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:277]
UnrealEditor!WinMain() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:317]
UnrealEditor!__scrt_common_main_seh() [D:\a_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
kernel32
ntdll`
I don’t know how cherry picking would work, we have the engine sources on a local repository and use UGS from there, so I cannot directly pick changes from your repo and apply them on my own local version. I think I would have to bring the changes manually somehow.
I have tested the minimal reproduction project on 5.6 and was not able to reproduce the crash.
As soon as we move our project to 5.6 we’ll be able to test more. I’ll keep you updated.
I believe we had a change for this particular problem added for 5.6. The GitHub commit is found here: https://github.com/EpicGames/UnrealEngine/commit/3d4499812dbfceec93a7c9eee183a63530dad4a4. It did not make it into a 5.5 hotfix as there is a header change involved. If you can move to 5.6, that would be ideal, but if your project needs to stay on 5.5 for any reason, you can add those changes without having merge conflicts for the file in future releases.