Description

When migrating from the version before 4.20 to the version after 4.20, opening the level sequencer will crash. I think that there is a problem with conversion from SnapTimeInterval (FixedFrameInterval_DEPRECATED) to FFrameRate. If it convert old frame of 10s(or 100s), Numerator will be 0, possibly causing "divide 0".

The below code is one of the workaround.

 

・UMovieScene::Serialize

 

else if (FixedFrameInterval_DEPRECATED != 0.f)
{
// Avoid 0 with RoundToInt
//	uint32 Numerator = FMath::RoundToInt(1.f / FixedFrameInterval_DEPRECATED);
uint32 Numerator = FMath::Max( FMath::RoundToInt(1.f / FixedFrameInterval_DEPRECATED) , 1);
DisplayRate = FFrameRate(Numerator, 1);
}

 

 

If SnapTimeInterval is less than 1.0(1s, 60fps, etc) it will not crash.

 

Steps to Reproduce

1. Create LevelSequencer in Editor with 4.19.

2. Setting Time Snapping Interval is 10s (or 100s).

3. Close the editor and switching project to 4.20.

4. Opening the Editor and LevelSequencer.

 

Result:

Crash the editor.

Expect:

Open the level sequencer.

 

Callstack

LoginId:8dca4f5549cb748e57781681ebf4da5e
EpicAccountId:fb567da00f03436dabdb32db92746435

Integer divide-by-zero - code c0000094 (first/second chance not available)

UE4Editor_Sequencer!SSequencerPlayRateCombo::GetFrameRateErrorVisibility() [d:\build\++ue4\sync\engine\source\editor\sequencer\private\ssequencerplayratecombo.cpp:94]
UE4Editor_Sequencer!TBaseSPMethodDelegateInstance<1,SSequencerPlayRateCombo,0,EVisibility __cdecl(void)>::Execute() [d:\build\++ue4\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:269]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:532]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_SlateCore!SWidget::SlatePrepass() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:536]
UE4Editor_Slate!PrepassWindowAndChildren() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1437]
UE4Editor_Slate!FSlateApplication::DrawPrepass() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1485]
UE4Editor_Slate!FSlateApplication::PrivateDrawWindows() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1526]
UE4Editor_Slate!FSlateApplication::DrawWindows() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1285]
UE4Editor_Slate!FSlateApplication::TickApplication() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1860]
UE4Editor_Slate!FSlateApplication::Tick() [d:\build\++ue4\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1687]
UE4Editor!FEngineLoop::Tick() [d:\build\++ue4\sync\engine\source\runtime\launch\private\launchengineloop.cpp:3574]
UE4Editor!GuardedMain() [d:\build\++ue4\sync\engine\source\runtime\launch\private\launch.cpp:166]
UE4Editor!GuardedMainWrapper() [d:\build\++ue4\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:144]
UE4Editor!WinMain() [d:\build\++ue4\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:223]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283]
kernel32
ntdll

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-68109 in the post.

2
Login to Vote

Fixed
ComponentSequencer
Affects Versions4.204.21
Target Fix4.21.2
Fix Commit4690687
CreatedJan 8, 2019
ResolvedJan 8, 2019
UpdatedJan 9, 2019