[4.20] Engine Crash on GC cleanup after stopped PIE

Hey there,

After upgrading to 4.20 i’ve discovered a crash that happens everytime.

Replication steps:

  • Create a new blueprint First Person Template project
  • Create a new Default level and save it
  • Add the FirstPersonExample map as a sub level and set the option Initially Loaded as true but leave the Initally Visible as false (if you set it to true it doesn’t crash)
  • Run the game and as soon as you press ESC to stop it will crash when trying to clear the GC on UEditorEngine::EndPlayMap from the PlayLevel.cpp.

The overall crash is: Everytime you have a sub level with Initially Loaded set to true and Initially Visible set to false it will always crash on stop PIE.

Crashdump:

LoginId:ffb8a20c48f1d79df4976cb3193ef28f
EpicAccountId:aec39bec4f81450ea55941698b4d8e4f

Fatal error: [File:D:\Build++UE4\Sync\Engine\Source\Developer\MessageLog\Private\Model\MessageLogListingModel.cpp] [Line: 81] MetaData /Game/FirstPersonBP/Maps/UEDPIE_0_FirstPersonExampleMap.PackageMetaData Object from PIE level still referenced. Shortest path from root: MetaData /Game/FirstPersonBP/Maps/UEDPIE_0_FirstPersonExampleMap.PackageMetaData [target] (standalone)

UE4Editor_Core!FDebug::AssertFailed() [d:\build++ue4\sync\engine\source\runtime\core\private\misc\assertionmacros.cpp:425]
UE4Editor_Core!FMsg::LogfImpl() [d:\build++ue4\sync\engine\source\runtime\core\private\logging\logmacros.cpp:64]
UE4Editor_MessageLog!FMessageLogListingModel::AddMessageInternal() [d:\build++ue4\sync\engine\source\developer\messagelog\private\model\messageloglistingmodel.cpp:81]
UE4Editor_MessageLog!FMessageLogListingViewModel::AddMessages() [d:\build++ue4\sync\engine\source\developer\messagelog\private\presentation\messageloglistingviewmodel.cpp:156]
UE4Editor_Core!FMessageLog::Flush() [d:\build++ue4\sync\engine\source\runtime\core\private\logging\messagelog.cpp:198]
UE4Editor_Core!FMessageLog::~FMessageLog() [d:\build++ue4\sync\engine\source\runtime\core\private\logging\messagelog.cpp:95]
UE4Editor_UnrealEd!UEditorEngine::EndPlayMap() [d:\build++ue4\sync\engine\source\editor\unrealed\private\playlevel.cpp:490]
UE4Editor_UnrealEd!UEditorEngine::Tick() [d:\build++ue4\sync\engine\source\editor\unrealed\private\editorengine.cpp:1957]
UE4Editor_UnrealEd!UUnrealEdEngine::Tick() [d:\build++ue4\sync\engine\source\editor\unrealed\private\unrealedengine.cpp:403]
UE4Editor!FEngineLoop::Tick() [d:\build++ue4\sync\engine\source\runtime\launch\private\launchengineloop.cpp:3495]
UE4Editor!GuardedMain() [d:\build++ue4\sync\engine\source\runtime\launch\private\launch.cpp:166]
UE4Editor!GuardedMainWrapper() [d:\build++ue4\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:144]
UE4Editor!WinMain() [d:\build++ue4\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:223]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283]
kernel32
ntdll

Hello,

We’ve recently made a switch to a new bug reporting method using a more structured form. Please visit the link below for more details and report the issue using the new Bug Submission Form. Feel free to continue to use this thread for community discussion around the issue.

https://epicsupport.force.com/unrealengine/s/

Thanks

I have submitted it, thanks :slight_smile:

We are now seeing this as well after upgrading to 4.20.3

Any information on this? Or should I file a duplicate bug at the link above?

It was fixed for me, the only difference i noticed is that it takes longer to actually do the stop PIE.

How did they fix it? Thats kind of the point of forums…

Ending PIE takes significantly longer because it is now screwing around with the PIE levels rather than just flushing them… I get told PIE ended, then 3-4 minutes later I get the crash you have, on levels that should have been unloaded and thrown away already.

this is the forth post I’ve found on the crash, none of them have any solutions.

I was notified by email that the fix was on the next hot fix a while ago (maybe 4.20.1) and at least on my side it started working, i have to wait around 3 seconds for the stop PIE, other than that it seems fine to me.

Thanks.

For us this turned out to be a the wrong world passed to an engine API:

WorldBrowserModeul->SharedWorldModel(UWorld * InWorld)

Passing the PIE world in causes weird cross references between the editor world and the PIE world.