Hi,
I’m currently exploring the making of plugins and I found a annoying crash when trying to change my plugin runtime.
Reproduction steps:
Create a new c++ project from scratch
Open Edit > Plugins
Press New Plugin and select "Toolbar Button"
Exit editor and recompile
Open editor
Change implementation of PluginButtonClicked, by adding a log or anything
Open Window > Developer > Modules
Click recompile of your toolbar button
After recompile, press your toolbar button, notice that your added logic doesn't happen
Open Window and the editor crashes with callstack
Unknown exception - code 00000001 (first/second chance not available)
"Assertion failed: IsValid() [File:C:\Program Files\Epic Games\4.10\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h] [Line: 728]
"
UE4Editor_Core!FDebug::AssertFailed() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\misc\outputdevice.cpp:374]
UE4Editor_MyToolbarButton_4667!TCommands<FMyToolbarButtonCommands>::Get() [c:\program files\epic games\4.10\engine\source\runtime\slate\public\framework\commands\commands.h:61]
UE4Editor_MyToolbarButton_4667!FMyToolbarButtonModule::AddMenuExtension() [c:\users\rannarem\documents\unreal projects\coolgameee\plugins\mytoolbarbutton\source\mytoolbarbutton\private\mytoolbarbutton.cpp:75]
UE4Editor_MyToolbarButton_4667!TBaseRawMethodDelegateInstance<0,FMyToolbarButtonModule,void __cdecl(FMenuBuilder & __ptr64)>::ExecuteIfSafe() [c:\program files\epic games\4.10\engine\source\runtime\core\public\delegates\delegateinstancesimpl_variadics.inl:582]
UE4Editor_Slate!FExtender::Apply() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\framework\multibox\multiboxextender.cpp:191]
UE4Editor_Slate!FMenuBuilder::ApplyHook() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\framework\multibox\multiboxbuilder.cpp:289]
UE4Editor_Slate!FMenuBuilder::EndSection() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\framework\multibox\multiboxbuilder.cpp:195]
UE4Editor_MainFrame!FMainMenu::FillWindowMenu() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\editor\mainframe\private\menus\mainmenu.cpp:284]
UE4Editor_MainFrame!TBaseStaticDelegateInstance<TTypeWrapper<void> __cdecl(FMenuBuilder & __ptr64),TSharedRef<FExtender,0>,TSharedPtr<FTabManager,0> >::Execute() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\delegates\delegateinstancesimpl_variadics.inl:854]
UE4Editor_Slate!SMenuEntryBlock::MakeNewMenuWidget() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\framework\multibox\smenuentryblock.cpp:1294]
UE4Editor_Slate!TMemberFunctionCaller<SMenuEntryBlock,TSharedRef<SWidget,0> (__cdecl SMenuEntryBlock::*)(void)const __ptr64>::operator()<>() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\delegates\delegateinstanceinterface_variadics.h:161]
UE4Editor_Slate!TTupleImpl<TIntegerSequence<> >::ApplyAfter_ExplicitReturnType<TSharedRef<SWidget,0>,TMemberFunctionCaller<SMenuEntryBlock,TSharedRef<SWidget,0> (__cdecl SMenuEntryBlock::*)(void)const __ptr64> >() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\delegates\tuple.h:113]
UE4Editor_Slate!TBaseSPMethodDelegateInstance<1,SMenuEntryBlock,0,TSharedRef<SWidget,0> __cdecl(void)>::Execute() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\delegates\delegateinstancesimpl_variadics.inl:282]
UE4Editor_Slate!TBaseDelegate<TSharedRef<SWidget,0> >::Execute() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\delegates\delegatesignatureimpl_variadics.inl:440]
UE4Editor_Slate!SMenuAnchor::SetIsOpen() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\widgets\input\smenuanchor.cpp:294]
UE4Editor_Slate!SMenuEntryBlock::OnClicked() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\framework\multibox\smenuentryblock.cpp:996]
UE4Editor_Slate!SMenuEntryBlock::OnMenuItemButtonClicked() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\framework\multibox\smenuentryblock.cpp:927]
UE4Editor_Slate!TMemberFunctionCaller<SMenuEntryBlock,FReply (__cdecl SMenuEntryBlock::*)(void) __ptr64>::operator()<>() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\delegates\delegateinstanceinterface_variadics.h:161]
UE4Editor_Slate!TTupleImpl<TIntegerSequence<> >::ApplyAfter_ExplicitReturnType<FReply,TMemberFunctionCaller<SMenuEntryBlock,FReply (__cdecl SMenuEntryBlock::*)(void) __ptr64> >() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\delegates\tuple.h:113]
UE4Editor_Slate!TBaseSPMethodDelegateInstance<0,SMenuEntryBlock,0,FReply __cdecl(void)>::Execute() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\delegates\delegateinstancesimpl_variadics.inl:282]
UE4Editor_Slate!TBaseDelegate<FReply>::Execute() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\public\delegates\delegatesignatureimpl_variadics.inl:440]
UE4Editor_Slate!SButton::OnMouseButtonDown() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\widgets\input\sbutton.cpp:180]
UE4Editor_Slate!<lambda_fe59d5648f2f8779b5db8a4c6c6e3cfd>::operator()() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4196]
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FPointerEvent,<lambda_fe59d5648f2f8779b5db8a4c6c6e3cfd> >() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:214]
UE4Editor_Slate!FSlateApplication::RoutePointerDownEvent() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4185]
UE4Editor_Slate!FSlateApplication::ProcessMouseButtonDownEvent() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4143]
UE4Editor_Slate!FSlateApplication::OnMouseDown() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4079]
UE4Editor_Core!FWindowsApplication::ProcessDeferredMessage() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\windows\windowsapplication.cpp:1354]
UE4Editor_Core!FWindowsApplication::DeferMessage() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\windows\windowsapplication.cpp:1721]
UE4Editor_Core!FWindowsApplication::ProcessMessage() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\windows\windowsapplication.cpp:719]
UE4Editor_Core!FWindowsApplication::AppWndProc() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\windows\windowsapplication.cpp:641]
user32
user32
UE4Editor_Core!FWindowsPlatformMisc::PumpMessages() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\core\private\windows\windowsplatformmisc.cpp:884]
UE4Editor!FEngineLoop::Tick() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\launchengineloop.cpp:2391]
UE4Editor!GuardedMain() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\launch.cpp:142]
UE4Editor!GuardedMainWrapper() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor!WinMain() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\windows\launchwindows.cpp:200]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264]
kernel32
ntdll
This is tested in 4.10.2 and 4.11.0 preview 3
Cheers,