Monocluar / GASAttachEditor

UE4的技能系统(GameplayAbility)查看工具
GNU General Public License v3.0
70 stars 21 forks source link

SGASAttachEditorImpl Crash #2

Closed Stals closed 1 year ago

Stals commented 2 years ago

Hi, I get a crash when closing the UE 5 (when it is run from Rider) with the following stack trace

SWidget::~SWidget() Address = 0x1131980a4 (filename not found) [in UnrealEditor-SlateCore.dylib]
SGASAttachEditorImpl::~SGASAttachEditorImpl() Address = 0x1f7c33fd3 [/Users/banzai/Perforce/skorotaev_spine/Plugins/GASAttachEditor/Source/GASAttachEditor/Private/SGASAttachEditor.cpp, line 683] [in UnrealEditor-GASAttachEditor.dylib]
SGASAttachEditorImpl::~SGASAttachEditorImpl() Address = 0x1f7c34a8e [/Users/banzai/Perforce/skorotaev_spine/Plugins/GASAttachEditor/Source/GASAttachEditor/Private/SGASAttachEditor.cpp, line 678] [in UnrealEditor-GASAttachEditor.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SBorder, (ESPMode)1>::DestroyObject() Address = 0x1f7c94fc1 [/Users/Shared/Epic Games/UE_5.0/Engine/Source/Runtime/Core/Public/Templates/SharedPointerInternals.h, line 372] [in UnrealEditor-GASAttachEditor.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SBorder, (ESPMode)1>::DestroyObject() Address = 0x1116d0dce (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SOverlay::FOverlaySlot::~FOverlaySlot() Address = 0x1131c968e (filename not found) [in UnrealEditor-SlateCore.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SOverlay, (ESPMode)1>::DestroyObject() Address = 0x1116d7047 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SVerticalBox::FSlot::~FSlot() Address = 0x1116cf63e (filename not found) [in UnrealEditor-Slate.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SVerticalBox, (ESPMode)1>::DestroyObject() Address = 0x11170f6a7 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SDockingTabStack::~SDockingTabStack() Address = 0x1117a7681 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SSplitter::FSlot::~FSlot() Address = 0x111a059c8 (filename not found) [in UnrealEditor-Slate.dylib]
SSplitter::~SSplitter() Address = 0x1117b2d57 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SHorizontalBox::FSlot::~FSlot() Address = 0x1116eeeee (filename not found) [in UnrealEditor-Slate.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SHorizontalBox, (ESPMode)1>::DestroyObject() Address = 0x1116ef347 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SOverlay::FOverlaySlot::~FOverlaySlot() Address = 0x1131c968e (filename not found) [in UnrealEditor-SlateCore.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SOverlay, (ESPMode)1>::DestroyObject() Address = 0x1116d7047 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SDockingSplitter::~SDockingSplitter() Address = 0x1117a73e2 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SBorder, (ESPMode)1>::DestroyObject() Address = 0x1f7c94fc1 [/Users/Shared/Epic Games/UE_5.0/Engine/Source/Runtime/Core/Public/Templates/SharedPointerInternals.h, line 372] [in UnrealEditor-GASAttachEditor.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SBorder, (ESPMode)1>::DestroyObject() Address = 0x1116d0dce (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SOverlay::FOverlaySlot::~FOverlaySlot() Address = 0x1131c968e (filename not found) [in UnrealEditor-SlateCore.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SOverlay, (ESPMode)1>::DestroyObject() Address = 0x1116d7047 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SVerticalBox::FSlot::~FSlot() Address = 0x1116cf63e (filename not found) [in UnrealEditor-Slate.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SVerticalBox, (ESPMode)1>::DestroyObject() Address = 0x11170f6a7 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SDockingTabStack::~SDockingTabStack() Address = 0x1117a7681 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SSplitter::FSlot::~FSlot() Address = 0x111a059c8 (filename not found) [in UnrealEditor-Slate.dylib]
SSplitter::~SSplitter() Address = 0x1117b2d57 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SDockingSplitter::~SDockingSplitter() Address = 0x1117a73e2 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SSplitter::FSlot::~FSlot() Address = 0x111a059c8 (filename not found) [in UnrealEditor-Slate.dylib]
SSplitter::~SSplitter() Address = 0x1117b2d57 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SHorizontalBox::FSlot::~FSlot() Address = 0x1116eeeee (filename not found) [in UnrealEditor-Slate.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SHorizontalBox, (ESPMode)1>::DestroyObject() Address = 0x1116ef347 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SOverlay::FOverlaySlot::~FOverlaySlot() Address = 0x1131c968e (filename not found) [in UnrealEditor-SlateCore.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SOverlay, (ESPMode)1>::DestroyObject() Address = 0x1116d7047 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SDockingSplitter::~SDockingSplitter() Address = 0x1117a73e2 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SVerticalBox::FSlot::~FSlot() Address = 0x15375744e (filename not found) [in UnrealEditor-LevelEditor.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SVerticalBox, (ESPMode)1>::DestroyObject() Address = 0x15378e797 (filename not found) [in UnrealEditor-LevelEditor.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SLevelEditor::~SLevelEditor() Address = 0x1538790c7 (filename not found) [in UnrealEditor-LevelEditor.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SBorder, (ESPMode)1>::DestroyObject() Address = 0x1116d0dce (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SOverlay::FOverlaySlot::~FOverlaySlot() Address = 0x1131c968e (filename not found) [in UnrealEditor-SlateCore.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SOverlay, (ESPMode)1>::DestroyObject() Address = 0x1116d7047 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SVerticalBox::FSlot::~FSlot() Address = 0x1116cf63e (filename not found) [in UnrealEditor-Slate.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SVerticalBox, (ESPMode)1>::DestroyObject() Address = 0x11170f6a7 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SDockingTabStack::~SDockingTabStack() Address = 0x1117a7681 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SSplitter::FSlot::~FSlot() Address = 0x111a059c8 (filename not found) [in UnrealEditor-Slate.dylib]
SSplitter::~SSplitter() Address = 0x1117b2d57 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SHorizontalBox::FSlot::~FSlot() Address = 0x1116eeeee (filename not found) [in UnrealEditor-Slate.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SHorizontalBox, (ESPMode)1>::DestroyObject() Address = 0x1116ef347 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SOverlay::FOverlaySlot::~FOverlaySlot() Address = 0x1131c968e (filename not found) [in UnrealEditor-SlateCore.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SOverlay, (ESPMode)1>::DestroyObject() Address = 0x1116d7047 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SDockingSplitter::~SDockingSplitter() Address = 0x1117a73e2 (filename not found) [in UnrealEditor-Slate.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SVerticalBox::FSlot::~FSlot() Address = 0x1131b599e (filename not found) [in UnrealEditor-SlateCore.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SVerticalBox, (ESPMode)1>::DestroyObject() Address = 0x1131c0507 (filename not found) [in UnrealEditor-SlateCore.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SVerticalBox::FSlot::~FSlot() Address = 0x1131b599e (filename not found) [in UnrealEditor-SlateCore.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SVerticalBox, (ESPMode)1>::DestroyObject() Address = 0x1131c0507 (filename not found) [in UnrealEditor-SlateCore.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SOverlay::FOverlaySlot::~FOverlaySlot() Address = 0x1131c968e (filename not found) [in UnrealEditor-SlateCore.dylib]
SharedPointerInternals::TIntrusiveReferenceController<SOverlay, (ESPMode)1>::DestroyObject() Address = 0x1131cdb17 (filename not found) [in UnrealEditor-SlateCore.dylib]
FSlotBase::~FSlotBase() Address = 0x11307e1e1 (filename not found) [in UnrealEditor-SlateCore.dylib]
SWindow::~SWindow() Address = 0x1131b2a53 (filename not found) [in UnrealEditor-SlateCore.dylib]
FSlateApplication::OnWindowClose(TSharedRef<FGenericWindow, (ESPMode)1> const&) Address = 0x1116a5ba7 (filename not found) [in UnrealEditor-Slate.dylib]
FMacApplication::CloseQueuedWindows() Address = 0x109a640a9 (filename not found) [in UnrealEditor-ApplicationCore.dylib]
FMacApplication::ProcessDeferredEvents(float) Address = 0x109a62119 (filename not found) [in UnrealEditor-ApplicationCore.dylib]
FSlateApplication::TickPlatform(float) Address = 0x111668cb7 (filename not found) [in UnrealEditor-Slate.dylib]
FSlateApplication::Tick(ESlateTickType) Address = 0x111668205 (filename not found) [in UnrealEditor-Slate.dylib]
FEngineLoop::Tick() Address = 0x1001a5bba (filename not found) [in UnrealEditor]
GuardedMain(char16_t const*) Address = 0x1001b2992 (filename not found) [in UnrealEditor]
-[UEAppDelegate runGameThread:] Address = 0x1001ce033 (filename not found) [in UnrealEditor]
-[FCocoaGameThread main] Address = 0x10a9fb7e1 (filename not found) [in UnrealEditor-Core.dylib]
Unknown() Address = 0x7ff803add9f4 (filename not found) [in Foundation]
_pthread_start Address = 0x7ff802c954e1 (filename not found) [in libsystem_pthread.dylib]
thread_start Address = 0x7ff802c90f6b (filename not found) [in libsystem_pthread.dylib]

And I was wondering if it is even necessary to call SWidget::~SWidget(); by hand if the destructors are virtual, so it will be probably called twice which can cause problems (which potentially leads to the crash).

BenVlodgi commented 1 year ago

I get a crash report that looks like this whenever I close the editor in 5.2.

Stals commented 1 year ago

This was on 5.0 or 5.1, but the issue is still not fixed, I think it is caused by this line: https://github.com/Monocluar/GASAttachEditor/blob/main/Source/GASAttachEditor/Private/SGASAttachEditor.cpp#L682 Which maybe can just be removed

BenVlodgi commented 1 year ago

Removing that line does stop the crash when closing the editor.

I don't think its necessary. IIRC ~destructors are automatically called for parent class even when overridden.