Description

When a class contains a FRuntimeFloatCurve variable, compiling a blueprint of the class causes the editor to crash once a key has been added to the curve and selected

Regression:
Yes, the provided repro steps did not cause a crash in 4.16.3 (CL 3561208)

Steps to Reproduce
  1. Open UE4 Editor (any project)
  2. Add code to project based on actor (MyActor)
  3. Add the following to MyActor.h:
    UPROPERTY(EditAnywhere)
    	FRuntimeFloatCurve MyCurve;
    
  4. Compile
  5. Create blueprint based on MyActor (MyActorBP)
  6. Right click in the curve and create a key
  7. Compile blueprint
  8. Select the key and press the compile button again

Result:
Editor crashes with provided callstack

Expected:
Blueprint compiles successfully

Callstack
LoginId:7156c35640f86204e61b8383f45dee17
EpicAccountId:c807849e05a0413d99e379f2802cae9c

Access violation - code c0000005 (first/second chance not available)

UE4Editor_Engine!FRichCurve::GetKeyTime() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\engine\private\curves\richcurve.cpp:373]
UE4Editor_UnrealEd!SCurveEditor::GetKeyTime() [d:\build\++ue4+release-4.18+compile\sync\engine\source\editor\unrealed\private\scurveeditor.cpp:2373]
UE4Editor_UnrealEd!SCurveEditor::OnGetTime() [d:\build\++ue4+release-4.18+compile\sync\engine\source\editor\unrealed\private\scurveeditor.cpp:2041]
UE4Editor_UnrealEd!TMemberFunctionCaller<SCurveEditor,TOptional<float> (__cdecl SCurveEditor::*)(void)const __ptr64>::operator()<>() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegateinstanceinterface.h:165]
UE4Editor_UnrealEd!UE4Tuple_Private::TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter<TMemberFunctionCaller<SCurveEditor,TOptional<float> (__cdecl SCurveEditor::*)(void)const __ptr64> >() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\templates\tuple.h:497]
UE4Editor_UnrealEd!TBaseSPMethodDelegateInstance<1,SCurveEditor,0,TOptional<float> __cdecl(void)>::Execute() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:327]
UE4Editor_UnrealEd!TBaseDelegate<TOptional<float> >::Execute() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:537]
UE4Editor_UnrealEd!TAttribute<TOptional<float> >::Get() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\misc\attribute.h:137]
UE4Editor_UnrealEd!SNumericEntryBox<float>::OnGetValueForSpinBox() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\public\widgets\input\snumericentrybox.h:348]
UE4Editor_UnrealEd!TBaseSPMethodDelegateInstance<1,SNumericEntryBox<float>,0,float __cdecl(void)>::Execute() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:327]
UE4Editor_UnrealEd!TAttribute<float>::Get() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\misc\attribute.h:137]
UE4Editor_UnrealEd!SSpinBox<float>::GetValueAsString() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\public\widgets\input\sspinbox.h:734]
UE4Editor_UnrealEd!SSpinBox<float>::GetValueAsText() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\public\widgets\input\sspinbox.h:740]
UE4Editor_UnrealEd!TMemberFunctionCaller<SSpinBox<float>,FText (__cdecl SSpinBox<float>::*)(void)const __ptr64>::operator()<>() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegateinstanceinterface.h:165]
UE4Editor_UnrealEd!UE4Tuple_Private::TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter<TMemberFunctionCaller<SSpinBox<float>,FText (__cdecl SSpinBox<float>::*)(void)const __ptr64> >() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\templates\tuple.h:497]
UE4Editor_UnrealEd!TBaseSPMethodDelegateInstance<1,SSpinBox<float>,0,FText __cdecl(void)>::Execute() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:327]
UE4Editor_Slate!TBaseDelegate<FText>::Execute() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:537]
UE4Editor_Slate!TAttribute<FText>::Get() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\misc\attribute.h:137]
UE4Editor_Slate!FTextBlockLayout::ComputeDesiredSize() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\widgets\text\textblocklayout.cpp:48]
UE4Editor_Slate!STextBlock::ComputeDesiredSize() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\widgets\text\stextblock.cpp:186]
UE4Editor_SlateCore!SWidget::CacheDesiredSize() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:519]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:502]
UE4Editor_Slate!PrepassWindowAndChildren() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1343]
UE4Editor_Slate!FSlateApplication::DrawPrepass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1391]
UE4Editor_Slate!FSlateApplication::PrivateDrawWindows() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1433]
UE4Editor_Slate!FSlateApplication::DrawWindows() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1190]
UE4Editor_Slate!FSlateApplication::TickApplication() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1777]
UE4Editor_Slate!FSlateApplication::Tick() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1595]
UE4Editor!FEngineLoop::Tick() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:3378]
UE4Editor!GuardedMain() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\launch.cpp:166]
UE4Editor!GuardedMainWrapper() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:134]
UE4Editor!WinMain() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:210]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253]
kernel32
ntdll

Have Comments or More Details?

Head over to the existing Questions & Answers thread and let us know what's up.

0
Login to Vote

Fixed
ComponentUE - Gameplay - Blueprint
Affects Versions4.17.24.18
Target Fix4.19
Fix Commit3819322
Main Commit3856245
Release Commit3819322
CreatedNov 13, 2017
ResolvedJan 2, 2018
UpdatedApr 27, 2018