Crash when opening Sequencer event track properties

I’ve found a crash in the Sequencer event track. Previously in 4.16, Sequencer would crash if you had an event struct that accepted object references (or a class reference in my case, not sure if this is specific to class references or if other asset references might crash too). That was apparently fixed in the 4.17 preview, but there is now a new bug relating to it, which causes an assert (to be clear - this is a bug in the 4.17 preview).

Steps to reproduce:

  1. Create a new blank project (C++ or Blueprint, it shouldn’t matter. For my purposes, this is a C++ project).

  2. Create a new blueprint struct with a class reference as a field.

  3. Create a new level sequence with an event track

  4. Add a new key to the event track with the previously created struct as the type

  5. Change the class field to reference anything other than “None”.

  6. Let the properties area close, then reopen it (for example, click away and then open the keyframe properties again). Simply hovering over the “Properties” part of the context menu should be enough to crash the editor.

  7. This should cause a crash with the following stacktrace:

    Assertion failed: TCString::Strlen(InName)<=NAME_SIZE [File:D:\Build++UE4+Release-4.17+Compile\Sync\Engine\Source\Runtime\Core\Private\UObject\UnrealNames.cpp] [Line: 602]

    KERNELBASE.dll!0x00000000330B9E08
    UE4Editor-Core.dll!FOutputDeviceWindowsError::Serialize() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\core\private\windows\windowsplatformoutputdevices.cpp:120]
    UE4Editor-Core.dll!FOutputDevice::Logf__VA() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\core\private\misc\outputdevice.cpp:70]
    UE4Editor-Core.dll!FDebug::AssertFailed() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\core\private\misc\assertionmacros.cpp:349]
    UE4Editor-Core.dll!FName::InitInternal() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\core\private\uobject\unrealnames.cpp:605]
    UE4Editor-Core.dll!FName::InitInternal_HashSplit() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\core\private\uobject\unrealnames.cpp:597]
    UE4Editor-Core.dll!FName::Init() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\core\private\uobject\unrealnames.cpp:550]
    UE4Editor-Core.dll!FName::FName() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\core\private\uobject\unrealnames.cpp:431]
    UE4Editor-DetailCustomizations.dll!FMemoryArchive::operator<<() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\core\public\serialization\memoryarchive.h:43]
    UE4Editor-CoreUObject.dll!operator<<() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\coreuobject\private\uobject\propertytag.cpp:99]
    UE4Editor-CoreUObject.dll!UStruct::SerializeTaggedProperties() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:903]
    UE4Editor-Engine.dll!UUserDefinedStruct::SerializeTaggedProperties() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\engine\private\userdefinedstruct.cpp:231]
    UE4Editor-DetailCustomizations.dll!FMovieSceneEventParameters::GetInstance() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\moviescenetracks\public\sections\moviesceneeventsection.h:65]
    UE4Editor-DetailCustomizations.dll!FMovieSceneEventParametersCustomization::CustomizeChildren() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\detailcustomizations\private\moviesceneeventparameterscustomization.cpp:50]
    UE4Editor-PropertyEditor.dll!FDetailPropertyRow::OnItemNodeInitialized() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\propertyeditor\private\detailpropertyrow.cpp:229]
    UE4Editor-PropertyEditor.dll!FDetailItemNode::InitPropertyEditor() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\propertyeditor\private\detailitemnode.cpp:96]
    UE4Editor-PropertyEditor.dll!FDetailItemNode::Initialize() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\propertyeditor\private\detailitemnode.cpp:42]
    UE4Editor-PropertyEditor.dll!FDetailCategoryImpl::GenerateNodesFromCustomizations() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\propertyeditor\private\detailcategorybuilderimpl.cpp:628]
    UE4Editor-PropertyEditor.dll!FDetailCategoryImpl::GenerateChildrenForSingleLayout() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\propertyeditor\private\detailcategorybuilderimpl.cpp:650]
    UE4Editor-PropertyEditor.dll!FDetailCategoryImpl::GenerateChildrenForLayouts() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\propertyeditor\private\detailcategorybuilderimpl.cpp:675]
    UE4Editor-PropertyEditor.dll!FDetailCategoryImpl::GenerateLayout() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\propertyeditor\private\detailcategorybuilderimpl.cpp:834]
    UE4Editor-PropertyEditor.dll!FDetailLayoutBuilderImpl::BuildCategories() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\propertyeditor\private\detaillayoutbuilderimpl.cpp:152]
    UE4Editor-PropertyEditor.dll!FDetailLayoutBuilderImpl::GenerateDetailLayout() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\propertyeditor\private\detaillayoutbuilderimpl.cpp:196]
    UE4Editor-PropertyEditor.dll!SDetailsViewBase::UpdateSinglePropertyMap() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\propertyeditor\private\sdetailsviewbase.cpp:409]
    UE4Editor-PropertyEditor.dll!SDetailsViewBase::UpdatePropertyMaps() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\propertyeditor\private\sdetailsviewbase.cpp:374]
    UE4Editor-PropertyEditor.dll!SStructureDetailsView::SetStructureData() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\propertyeditor\private\sstructuredetailsview.cpp:222]
    UE4Editor-Sequencer.dll!SInlineDetailsView::Initialize() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\sequencer\private\sequencercontextmenus.cpp:294]
    UE4Editor-Sequencer.dll!SInlineDetailsView::Construct() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\sequencer\private\sequencercontextmenus.cpp:213]
    UE4Editor-Sequencer.dll!TDecl<SInlineDetailsView,RequiredArgs::T1RequiredArgs<TSharedRef<FSequencer,0> & __ptr64> >::operator<<=() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\public\widgets\declarativesyntaxsupport.h:1091]
    UE4Editor-Sequencer.dll!FKeyContextMenu::AddPropertiesMenu() [d:\build++ue4+release-4.17+compile\sync\engine\source\editor\sequencer\private\sequencercontextmenus.cpp:341]
    UE4Editor-Slate.dll!SMenuEntryBlock::MakeNewMenuWidget() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\framework\multibox\smenuentryblock.cpp:1370]
    UE4Editor-Slate.dll!TMemberFunctionCaller<SMenuEntryBlock,TSharedRef<SWidget,0> (__cdecl SMenuEntryBlock::)(void)const __ptr64>::operator()<>() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\core\public\delegates\delegateinstanceinterface.h:165]
    UE4Editor-Slate.dll!UE4Tuple_Private::TTupleImpl<TIntegerSequence >::ApplyAfter<TMemberFunctionCaller<SMenuEntryBlock,TSharedRef<SWidget,0> (__cdecl SMenuEntryBlock::
    )(void)const __ptr64> >() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\core\public\templates\tuple.h:497]
    UE4Editor-Slate.dll!TBaseSPMethodDelegateInstance<1,SMenuEntryBlock,0,TSharedRef<SWidget,0> __cdecl(void)>::Execute() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:327]
    UE4Editor-Slate.dll!TBaseDelegate<TSharedRef<SWidget,0> >::Execute() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:537]
    UE4Editor-Slate.dll!SMenuAnchor::SetIsOpen() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\widgets\input\smenuanchor.cpp:310]
    UE4Editor-Slate.dll!SMenuEntryBlock::UpdateSubMenuState() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\framework\multibox\smenuentryblock.cpp:1330]
    UE4Editor-Slate.dll!TBaseSPMethodDelegateInstance<0,SMenuEntryBlock,0,enum EActiveTimerReturnType __cdecl(double,float),bool>::Execute() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:327]
    UE4Editor-SlateCore.dll!FActiveTimerHandle::ExecuteIfPending() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\application\activetimerhandle.cpp:48]
    UE4Editor-SlateCore.dll!SWidget::ExecuteActiveTimers() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:978]
    UE4Editor-SlateCore.dll!SWidget::Paint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:855]
    UE4Editor-SlateCore.dll!SOverlay::OnPaint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\soverlay.cpp:97]
    UE4Editor-SlateCore.dll!SWidget::Paint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:885]
    UE4Editor-SlateCore.dll!SPanel::PaintArrangedChildren() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\spanel.cpp:31]
    UE4Editor-SlateCore.dll!SPanel::OnPaint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\spanel.cpp:12]
    UE4Editor-SlateCore.dll!SWidget::Paint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:885]
    UE4Editor-SlateCore.dll!SPanel::PaintArrangedChildren() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\spanel.cpp:31]
    UE4Editor-SlateCore.dll!SPanel::OnPaint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\spanel.cpp:12]
    UE4Editor-SlateCore.dll!SWidget::Paint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:885]
    UE4Editor-SlateCore.dll!SPanel::PaintArrangedChildren() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\spanel.cpp:31]
    UE4Editor-SlateCore.dll!SPanel::OnPaint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\spanel.cpp:12]
    UE4Editor-SlateCore.dll!SWidget::Paint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:885]
    UE4Editor-SlateCore.dll!SOverlay::OnPaint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\soverlay.cpp:97]
    UE4Editor-SlateCore.dll!SWidget::Paint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:885]
    UE4Editor-SlateCore.dll!SPanel::PaintArrangedChildren() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\spanel.cpp:31]
    UE4Editor-SlateCore.dll!SPanel::OnPaint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\spanel.cpp:12]
    UE4Editor-SlateCore.dll!SWidget::Paint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:885]
    UE4Editor-SlateCore.dll!SCompoundWidget::OnPaint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\scompoundwidget.cpp:35]
    UE4Editor-Slate.dll!SScrollBox::OnPaint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\widgets\layout\sscrollbox.cpp:980]
    UE4Editor-SlateCore.dll!SWidget::Paint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:885]
    UE4Editor-SlateCore.dll!SCompoundWidget::OnPaint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\scompoundwidget.cpp:35]
    UE4Editor-Slate.dll!SBorder::OnPaint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\widgets\layout\sborder.cpp:85]
    UE4Editor-SlateCore.dll!SWidget::Paint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:885]
    UE4Editor-SlateCore.dll!SCompoundWidget::OnPaint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\scompoundwidget.cpp:35]
    UE4Editor-SlateCore.dll!SWidget::Paint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:885]
    UE4Editor-SlateCore.dll!FSlateWindowElementList::FDeferredPaint::ExecutePaint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\rendering\drawelements.cpp:811]
    UE4Editor-SlateCore.dll!FSlateWindowElementList::PaintDeferred() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\rendering\drawelements.cpp:836]
    UE4Editor-SlateCore.dll!SWidget::Paint() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:944]
    UE4Editor-Slate.dll!FSlateApplication::DrawWindowAndChildren() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1231]
    UE4Editor-Slate.dll!FSlateApplication::DrawWindowAndChildren() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1320]
    UE4Editor-Slate.dll!FSlateApplication::PrivateDrawWindows() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1471]
    UE4Editor-Slate.dll!FSlateApplication::DrawWindows() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1188]
    UE4Editor-Slate.dll!FSlateApplication::TickApplication() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1773]
    UE4Editor-Slate.dll!FSlateApplication::Tick() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1591]
    UE4Editor.exe!FEngineLoop::Tick() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:3278]
    UE4Editor.exe!GuardedMain() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\launch\private\launch.cpp:166]
    UE4Editor.exe!GuardedMainWrapper() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:134]
    UE4Editor.exe!WinMain() [d:\build++ue4+release-4.17+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:210]
    UE4Editor.exe!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253]
    KERNEL32.DLL!0x0000000035972774
    ntdll.dll!0x0000000036AF0D51
    ntdll.dll!0x0000000036AF0D51

I’m able to provide a minimal example project that exhibits this behavior if needed.