Description

Unreal Editor can get in an infinite while loop when the action Asset->Source Control->History is used in a Blueprint Asset. Reportedly, this issue is only encountered when using the Branches feature with Perforce as the Source Control.

This bug is inside FSourceControlWindows::DisplayRevisionHistory. Inside this function, the while loop checks that the RevisionName.Num() is not 0. For some reason, this condition is never met under some scenarios when Branches and Perforce are being used.

The user that reported the case also reverted an operation just in the CL that is giving the problem. The engine is not being able to get the History past the undo action.

Steps to Reproduce

Unclear. Licensee provided some context and a callstack has been included of the while-loop that the editor gets stuck in.

Callstack

Non-fatal, stick in this while loop:

UnrealEditor-SourceControlWindows.dll!FSourceControlWindows::DisplayRevisionHistory(const TArray<FString, TSizedDefaultAllocator<32>> & InPackageNames) Line 1710 C++
UnrealEditor-AssetManagerEditor.dll!FAssetSourceControlContextMenuState::ExecuteSCCHistory() Line 779 C++
UnrealEditor-AssetManagerEditor.dll!Invoke(void (const FAssetSourceControlContextMenuState::*)() PtrMemFun, FAssetSourceControlContextMenuState * &) Line 66 C++
UnrealEditor-AssetManagerEditor.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void (const FAssetSourceControlContextMenuState::*)() &) Line 309 C++
UnrealEditor-AssetManagerEditor.dll!TBaseSPMethodDelegateInstance<1, FAssetSourceControlContextMenuState const, 1, void __cdecl(void), FDefaultDelegateUserPolicy>::ExecuteIfSafe() Line 298 C++
UnrealEditor-Slate.dll!TDelegate<void __cdecl(void), FDefaultDelegateUserPolicy>::ExecuteIfBound() Line 570 C++
UnrealEditor-Slate.dll!FUIAction::Execute() Line 139 C++
UnrealEditor-Slate.dll!SMenuEntryBlock::OnClicked(bool bCheckBoxClicked) Line 1167 C++
UnrealEditor-Slate.dll!SMenuEntryBlock::OnMenuItemButtonClicked() Line 1118 C++
UnrealEditor-Slate.dll!Invoke(FReply(SMenuEntryBlock::*)()) Line 66 C++
UnrealEditor-Slate.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(FReply(SMenuEntryBlock::*)() &) Line 309 C++
UnrealEditor-Slate.dll!TBaseSPMethodDelegateInstance<0, SMenuEntryBlock, 1, FReply __cdecl(void), FDefaultDelegateUserPolicy>::Execute() Line 281 C++
UnrealEditor-Slate.dll!TDelegate<FReply __cdecl(void), FDefaultDelegateUserPolicy>::Execute() Line 549 C++
UnrealEditor-Slate.dll!SButton::ExecuteOnClick() Line 465 C++
UnrealEditor-Slate.dll!SButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 390 C++
UnrealEditor-Slate.dll!SMenuEntryButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 434 C++
UnrealEditor-Slate.dll!FSlateApplication::RoutePointerUpEvent::__l8::<lambda_2>::operator()(const FArrangedWidget &) Line 5293 C++
UnrealEditor-Slate.dll!FEventRouter::Route<FReply, FEventRouter::FToLeafmostPolicy, FPointerEvent, `FSlateApplication::RoutePointerUpEvent'::`8'::<lambda_2>>(FSlateApplication * ThisApplication, FEventRouter::FToLeafmostPolicy RoutingPolicy, FPointerEvent EventCopy, const FSlateApplication::RoutePointerUpEvent::__l8::<lambda_2> & Lambda, ESlateDebuggingInputEvent DebuggingInputEvent) Line 442 C++
UnrealEditor-Slate.dll!FSlateApplication::RoutePointerUpEvent(const FWidgetPath & WidgetsUnderPointer, const FPointerEvent & PointerEvent) Line 5279 C++
UnrealEditor-Slate.dll!FSlateApplication::ProcessMouseButtonUpEvent(const FPointerEvent & MouseEvent) Line 5857 C++
UnrealEditor-Slate.dll!FSlateApplication::OnMouseUp(const EMouseButtons::Type Button, const UE::Math::TVector2<double> CursorPos) Line 5813 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 2243 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::DeferMessage(TSharedPtr<FWindowsWindow, 1> & NativeWindow, HWND__ * InHWnd, unsigned int InMessage, unsigned __int64 InWParam, __int64 InLParam, int MouseX, int MouseY, unsigned int RawInputFlags) Line 2750 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 1919 C++
UnrealEditor-ApplicationCore.dll!WindowsApplication_WndProc(HWND__ *) Line 923 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 929 C++
user32.dll!00007ffaff7e83f1() Unknown
user32.dll!00007ffaff7e7eb1() Unknown
UnrealEditor-ApplicationCore.dll!WinPumpMessages() Line 116 C++
UnrealEditor-ApplicationCore.dll!FWindowsPlatformApplicationMisc::PumpMessages(bool bFromMainLoop) Line 145 C++
UnrealEditor-Win64-DebugGame.exe!FEngineLoop::Tick() Line 5855 C++
UnrealEditor-Win64-DebugGame.exe!EngineTick() Line 61 C++
UnrealEditor-Win64-DebugGame.exe!GuardedMain(const wchar_t * CmdLine) Line 180 C++
UnrealEditor-Win64-DebugGame.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 247 C++
UnrealEditor-Win64-DebugGame.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 298 C++
UnrealEditor-Win64-DebugGame.exe!invoke_main() Line 102 C++
UnrealEditor-Win64-DebugGame.exe!__scrt_common_main_seh() Line 288 C++
kernel32.dll!00007ffafeef257d() Unknown
ntdll.dll!00007ffaffdaaf08() Unknown

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-228377 in the post.

0
Login to Vote

Backlogged
ComponentUE - Editor - Workflow Systems
Affects Versions5.4
CreatedOct 21, 2024
UpdatedOct 22, 2024
View Jira Issue