Plugins left on the "Developer" default crash running games

What it says on the tin, really.

If you leave an editor plugin set to “Type”: “Developer” (instead of changing it to Editor or EditorNoCommandlet), once you hit a key in a running game, you get something along these lines:

Assertion failed: IsValid() [File:D:\Build\++UE4+Release-4.14+Compile\Sync\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h] [Line: 794] 



UE4Editor_Core!FDebug::AssertFailed() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\private\misc\assertionmacros.cpp:332]
UE4Editor_MainFrame!FMainFrameActionCallbacks::OnUnhandledKeyDownEvent() [d:\build\++ue4+release-4.14+compile\sync\engine\source\editor\mainframe\private\frame\mainframeactions.cpp:179]
UE4Editor_MainFrame!TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter<FReply (__cdecl*const & __ptr64)(FKeyEvent const & __ptr64),FKeyEvent const & __ptr64>() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\public\delegates\tuple.h:116]
UE4Editor_MainFrame!TBaseStaticDelegateInstance<FReply __cdecl(FKeyEvent const & __ptr64)>::Execute() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:949]
UE4Editor_Slate!TBaseDelegate<FReply,FKeyEvent const & __ptr64>::Execute() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:522]
UE4Editor_Slate!FSlateApplication::ProcessKeyDownEvent() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4636]
UE4Editor_Slate!FSlateApplication::OnKeyDown() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4538]
UE4Editor_Core!FWindowsApplication::ProcessDeferredMessage() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:1487]
UE4Editor_Core!FWindowsApplication::DeferMessage() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:2071]
UE4Editor_Core!FWindowsApplication::ProcessMessage() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:814]
UE4Editor_Core!FWindowsApplication::AppWndProc() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:678]
user32
user32
UE4Editor_Core!FWindowsPlatformMisc::PumpMessages() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\private\windows\windowsplatformmisc.cpp:951]
UE4Editor!FEngineLoop::Tick() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:2811]
UE4Editor!GuardedMain() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\launch.cpp:152]
UE4Editor!GuardedMainWrapper() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor!WinMain() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:202]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264]
kernel32
ntdll

This didn’t happen quite this dramatically in previous versions.

Steps to reproduce:

  1. Start C++ project (third person example, for ex)
  2. add new standalone window plugin
  3. restart
  4. play as “standalone game”
  5. press any key on the keyboard

Hey ,

Thanks for the detailed report. I was able to reproduce the issue you are describing and have entered a issue ticket for it. You can follow it here:

https://issues.unrealengine.com/issue/UE-37645

In the link it is written that it is fixed, however it is not. And I wasn’t able to find a commit with hash “3185126”

Notice the version number it’s fixed for.

This is a real hardship for us and 4.15 is a long way away. Is there any way to get a patch for the changes in this diff? It sounds like a couple lines in just the right place.

   Change 3185126 on 2016/11/03 by Shaun.Kime

Some of the plugin templates define Editor specific plugins. If created and a Standalone build is run, the application will attempt to link in editor libraries in game mode and will run into issues when you hit any key. The fix is to specify an Editor module description for these plugins.
Additionally, there appears to be a mismatch in pathing types when dealing with plugin path and GameDir. Plugin path is absolute and GameDir is relative by default. We check to see if the gameDir is a subset of the plugin path, but this fails due to the mismatch. The fix is to force both to be absolute (enforcing normalization of both paths as well).

#jira UE-38065
#jira UE-37645

Hi ColdIronPoz,

The two files that were changed to correct this are SNewPluginWizard.cpp and SNewPluginWizard.h. If you built the Engine from source code, you can make the changes to these files that were made in the commit that you found and rebuild the Engine. It is unlikely that we will be including this fix in any potential update prior to 4.15 being released.

Many thanks for that post. I was close to smashing my keyboard through my monitor, because I had constant crashes on random key bindings and couldn’t find the issue. Turns out the editor plugin I wrote some time ago to quickly delete all savegames, had type developer. Changed it to Editor and all keys works fine now.