Description

There is an arrow with a menu that opens when clicked.
That menu binds member functions to the widget.
The widget is being deleted when the user clicks on the action in the menu, before the action is called.

Steps to Reproduce

[Link Removed]

Click 'Search For References' on GE_Athena_CandyCorn in FortniteGame

Steps without FortniteGame

  1. Create project.
  2. Enable plugins: GameplayTagsEditor and AssetManagerEditor
  3. Create new blueprint class
  4. In blueprint editor add new property to the class using Variable Type: 'Gameplay Tag'
  5. Compile the blueprint
  6. In Class Defaults, find the new variable, click the Edit on the variable
  7. Add new gameplay tag if none exist in the project yet
  8. Click the arrow next to one of the gameplay tags "More Actions" tooltip and choose "Search for References"
Callstack

Added destructor and the callstack that deletes the widget incorrectly is:

UE4Editor-GameplayTagsEditor.dll!SGameplayTagWidget::~SGameplayTagWidget() Line 42	C++
[Inline Frame] UE4Editor-SlateCore.dll!SharedPointerInternals::FReferenceControllerOps<0>::ReleaseSharedReference(SharedPointerInternals::FReferenceControllerBase * ReferenceController) Line 351	C++
[Inline Frame] UE4Editor-SlateCore.dll!SharedPointerInternals::FSharedReferencer<0>::{dtor}() Line 469	C++
UE4Editor-SlateCore.dll!FSlotBase::~FSlotBase() Line 76	C++
[External Code]	
[Inline Frame] UE4Editor-SlateCore.dll!SharedPointerInternals::FReferenceControllerOps<0>::ReleaseSharedReference(SharedPointerInternals::FReferenceControllerBase * ReferenceController) Line 351	C++
[Inline Frame] UE4Editor-SlateCore.dll!SharedPointerInternals::FSharedReferencer<0>::{dtor}() Line 469	C++
UE4Editor-SlateCore.dll!FSlotBase::~FSlotBase() Line 76	C++
[External Code]	
[Inline Frame] UE4Editor-SlateCore.dll!SharedPointerInternals::FReferenceControllerOps<0>::ReleaseSharedReference(SharedPointerInternals::FReferenceControllerBase * ReferenceController) Line 351	C++
[Inline Frame] UE4Editor-SlateCore.dll!SharedPointerInternals::FSharedReferencer<0>::{dtor}() Line 469	C++
UE4Editor-SlateCore.dll!FSlotBase::~FSlotBase() Line 76	C++
[External Code]	
[Inline Frame] UE4Editor-SlateCore.dll!SharedPointerInternals::FReferenceControllerOps<0>::ReleaseSharedReference(SharedPointerInternals::FReferenceControllerBase * ReferenceController) Line 351	C++
[Inline Frame] UE4Editor-SlateCore.dll!SharedPointerInternals::FSharedReferencer<0>::{dtor}() Line 469	C++
UE4Editor-SlateCore.dll!FSlotBase::~FSlotBase() Line 76	C++
[External Code]	
[Inline Frame] UE4Editor-SlateCore.dll!SharedPointerInternals::FReferenceControllerOps<0>::ReleaseSharedReference(SharedPointerInternals::FReferenceControllerBase * ReferenceController) Line 351	C++
[Inline Frame] UE4Editor-SlateCore.dll!SharedPointerInternals::FSharedReferencer<0>::{dtor}() Line 469	C++
UE4Editor-SlateCore.dll!FSlotBase::~FSlotBase() Line 76	C++
[External Code]	
[Inline Frame] UE4Editor-SlateCore.dll!SharedPointerInternals::FReferenceControllerOps<0>::ReleaseSharedReference(SharedPointerInternals::FReferenceControllerBase * ReferenceController) Line 351	C++
[Inline Frame] UE4Editor-SlateCore.dll!SharedPointerInternals::FSharedReferencer<0>::{dtor}() Line 469	C++
UE4Editor-SlateCore.dll!FSlotBase::~FSlotBase() Line 76	C++
[External Code]	
[Inline Frame] UE4Editor-Slate.dll!SharedPointerInternals::FReferenceControllerOps<0>::ReleaseSharedReference(SharedPointerInternals::FReferenceControllerBase *) Line 351	C++
[Inline Frame] UE4Editor-Slate.dll!SharedPointerInternals::FSharedReferencer<0>::{dtor}() Line 469	C++
UE4Editor-Slate.dll!FMenuInWindow::Dismiss() Line 41	C++
UE4Editor-Slate.dll!FMenuStack::DismissInternal(int FirstStackIndexToRemove) Line 595	C++
UE4Editor-Slate.dll!SMenuEntryBlock::OnClicked(bool bCheckBoxClicked) Line 1057	C++
UE4Editor-Slate.dll!SMenuEntryBlock::OnMenuItemButtonClicked() Line 1019	C++
[Inline Frame] UE4Editor-Slate.dll!TMemberFunctionCaller<SMenuEntryBlock,FReply (__cdecl SMenuEntryBlock::*)(void)>::operator()() Line 156	C++
[Inline Frame] UE4Editor-Slate.dll!UE4Tuple_Private::TTupleImpl<TIntegerSequence<unsigned int>>::ApplyAfter(TMemberFunctionCaller<SMenuEntryBlock,FReply (__cdecl SMenuEntryBlock::*)(void)> &&) Line 272	C++
UE4Editor-Slate.dll!TBaseSPMethodDelegateInstance<0,SMenuEntryBlock,0,FReply __cdecl(void)>::Execute() Line 298	C++
[Inline Frame] UE4Editor-Slate.dll!TBaseDelegate<FReply>::Execute() Line 586	C++
UE4Editor-Slate.dll!SButton::ExecuteOnClick() Line 385	C++
UE4Editor-Slate.dll!SButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 304	C++
UE4Editor-Slate.dll!SMenuEntryButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 386	C++
[Inline Frame] UE4Editor-Slate.dll!FSlateApplication::RoutePointerUpEvent::__l8::<lambda_cc5aea9e7377b04ce85c30c65ec3889b>::operator()(const FArrangedWidget &) Line 4843	C++
UE4Editor-Slate.dll!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,<lambda_cc5aea9e7377b04ce85c30c65ec3889b>>(FSlateApplication * ThisApplication, FEventRouter::FToLeafmostPolicy RoutingPolicy, FPointerEvent EventCopy, const FSlateApplication::RoutePointerUpEvent::__l8::<lambda_cc5aea9e7377b04ce85c30c65ec3889b> & Lambda, ESlateDebuggingInputEvent DebuggingInputEvent) Line 385	C++
UE4Editor-Slate.dll!FSlateApplication::RoutePointerUpEvent(const FWidgetPath & WidgetsUnderPointer, const FPointerEvent & PointerEvent) Line 4829	C++
UE4Editor-Slate.dll!FSlateApplication::ProcessMouseButtonUpEvent(const FPointerEvent & MouseEvent) Line 5370	C++
UE4Editor-Slate.dll!FSlateApplication::OnMouseUp(const EMouseButtons::Type Button, const FVector2D CursorPos) Line 5335	C++
UE4Editor-ApplicationCore.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 2136	C++
UE4Editor-ApplicationCore.dll!FWindowsApplication::DeferMessage(TSharedPtr<FWindowsWindow,0> & NativeWindow, HWND__ * InHWnd, unsigned int InMessage, unsigned __int64 InWParam, __int64 InLParam, int MouseX, int MouseY, unsigned int RawInputFlags) Line 2588	C++
UE4Editor-ApplicationCore.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 1812	C++
UE4Editor-ApplicationCore.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 855	C++
[External Code]	
[Inline Frame] UE4Editor-ApplicationCore.dll!WinPumpMessages() Line 108	C++
UE4Editor-ApplicationCore.dll!FWindowsPlatformApplicationMisc::PumpMessages(bool bFromMainLoop) Line 130	C++
UE4Editor.exe!FEngineLoop::Tick() Line 4752	C++
[Inline Frame] UE4Editor.exe!EngineTick() Line 62	C++
UE4Editor.exe!GuardedMain(const wchar_t * CmdLine) Line 169	C++
UE4Editor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow) Line 257	C++
[External Code]	

Have Comments or More Details?

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

0
Login to Vote

Fixed
ComponentTools
Affects Versions4.26
Target Fix4.27
Fix Commit14367153
CreatedSep 22, 2020
ResolvedSep 22, 2020
UpdatedApr 28, 2021