Level Streaming Issues

Hi,

We are having issues with the level streaming, in one map we decided to break it into smaller sections and stream in and out the levels we no longer need. Unfortunately we seem to be getting a inconsistent crash in standalone/pc/ps4 builds.

The crash on the standalone occurs after a level has been unloaded and a assertion fails with the UObjectLinker and we are using UE4.7

[2015.05.01-15.14.58:455][323]LogLevel: ActivateLevel /Temp/Autosaves/Game/Maps/Chapter_01/UEDPCChapter_01_Ground_Floor_01 0 0 0
[2015.05.01-15.14.58:495][324]LogWindows:Error: Windows GetLastError: The operation completed successfully. (0)
[2015.05.01-15.15.00:918][324]LogWindows: === Critical error: ===
Assertion failed: !HasAnyFlags(RF_NeedLoad|RF_NeedPostLoad) [File:D:\Programs\UE4_QA_4.7.4\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectLinker.cpp] [Line: 96] 
Detaching from existing linker for ../../../../../Projects/The Assembly V2/trunk/TheAssembly/Content/Props/Materials/M_Periodic_Table.uasset while object SceneThumbnailInfoWithPrimitive /Game/Props/Materials/M_Periodic_Table.M_Periodic_Table:None needs loaded


KERNELBASE.dll!UnknownFunction (0x00007ffe2cfa8b9c) + 0 bytes [UnknownFile:0]
UE4Editor-Core.dll!FOutputDeviceWindowsError::Serialize() (0x00007ffe0ce85914) + 0 bytes [d:\programs\ue4_qa_4.7.4\engine\source\runtime\core\private\windows\windowsplatformoutputdevices.cpp:95]
UE4Editor-Core.dll!FOutputDevice::Logf__VA() (0x00007ffe0cd070b8) + 159 bytes [d:\programs\ue4_qa_4.7.4\engine\source\runtime\core\private\misc\outputdevice.cpp:144]
UE4Editor-Core.dll!FDebug::AssertFailed() (0x00007ffe0cce8357) + 62 bytes [d:\programs\ue4_qa_4.7.4\engine\source\runtime\core\private\misc\outputdevice.cpp:224]
UE4Editor-CoreUObject.dll!UObject::SetLinker() (0x00007ffe1ff41948) + 148 bytes [d:\programs\ue4_qa_4.7.4\engine\source\runtime\coreuobject\private\uobject\uobjectlinker.cpp:96]
UE4Editor-CoreUObject.dll!UObject::BeginDestroy() (0x00007ffe1fe5bac7) + 0 bytes [d:\programs\ue4_qa_4.7.4\engine\source\runtime\coreuobject\private\uobject\obj.cpp:456]
UE4Editor-CoreUObject.dll!UObject::ConditionalBeginDestroy() (0x00007ffe1fe5edcf) + 0 bytes [d:\programs\ue4_qa_4.7.4\engine\source\runtime\coreuobject\private\uobject\obj.cpp:567]
UE4Editor-CoreUObject.dll!CollectGarbage() (0x00007ffe1fe5e87e) + 5 bytes [d:\programs\ue4_qa_4.7.4\engine\source\runtime\coreuobject\private\uobject\garbagecollection.cpp:1152]
UE4Editor-Engine.dll!UWorld::Tick() (0x00007ffe0a3c87ba) + 0 bytes [d:\programs\ue4_qa_4.7.4\engine\source\runtime\engine\private\leveltick.cpp:1285]``
UE4Editor-Engine.dll!UGameEngine::Tick() (0x00007ffe0a1bf80d) + 0 bytes [d:\programs\ue4_qa_4.7.4\engine\source\runtime\engine\private\gameengine.cpp:830]
UE4Editor.exe!FEngineLoop::Tick() (0x00007ff79cd3d783) + 0 bytes [d:\programs\ue4_qa_4.7.4\engine\source\runtime\launch\private\launchengineloop.cpp:2257]
UE4Editor.exe!GuardedMain() (0x00007ff79cd3089c) + 0 bytes [d:\programs\ue4_qa_4.7.4\engine\source\runtime\launch\private\launch.cpp:142]
UE4Editor.exe!GuardedMainWrapper() (0x00007ff79cd3090a) + 5 bytes [d:\programs\ue4_qa_4.7.4\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor.exe!WinMain() (0x00007ff79cd3ee49) + 17 bytes [d:\programs\ue4_qa_4.7.4\engine\source\runtime\launch\private\windows\launchwindows.cpp:202]
UE4Editor.exe!__tmainCRTStartup() (0x00007ff79cd3fe09) + 21 bytes [f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c:618]
KERNEL32.DLL!UnknownFunction (0x00007ffe2d5513d2) + 0 bytes [UnknownFile:0]
ntdll.dll!UnknownFunction (0x00007ffe30e503c4) + 0 bytes [UnknownFile:0]
ntdll.dll!UnknownFunction (0x00007ffe30e503c4) + 0 bytes [UnknownFile:0]

Unfortunately the reproducibility of this bug seems dependent on which machine runs it in standalone mode but it does seem to occur to only materials that are used in one prop which is unloaded. But the problem goes away if we delete a directional light from the scene, this directional light is in a level that is unloaded earlier!

Any idea what could be occurring here?

Is the directional light keeping references? or clearing?

I also was wondering if their was a way of seeing how many objects/components being loaded when a level is being streamed? it would be useful in working out which levels need to be broken up further.

Hi Steven -

A few things to start digging into your issue: If you can go into your saved folder in your project folder and pull out your logs and zip them up with the Crash logs, should be 3 files in a subfolder created at the time of your crash; a *.dmp, a *.log, and a *.txt which can be found in the following location:

C:\Users[UserName]\AppData\Local\Microsoft\Windows\WER\ReportQueue\

I also need to understand how you are using Level Streaming, particularly if you are using what I call the traditional BP controlled method or if you are using the newer World Composition setup.

In the meantime, it sounds like you are attempting to unload and load the same resource in two different levels. If you go into your World Outliner in the Editor and add a Level dropdown:

41262-outliner.jpg

And check to see if all your actors are in the level you intend them to be in, also check in the Reference Viewer for the Material that seems to be causing you the issue and insure that it is not referenced by an unintended asset:

I will begin testing under this assumption and see if I cannot get a reproduction of your issue.

Finally if you have not already please make sure that you submit (send) the crash reporter log when it pops up. This is the easiest way for use to track down an issue.

Thank You and Let me know -

Ketchum

Hi ,

I have attached a zip of the app crash in the [ReportQueue][1] and hopefully the corresponding [logs][2] as well as the [original log and dump][3] file that was past to me that started me investigating this.

Were using a traditional BP streaming method, the player is on a matinee going through the level and goes through trigger volumes that either unload or loads a level and is controlled in a sub-level blueprint which is always loaded and the trigger volumes are the same level.

The asset in question is indeed being used in two different levels and hits a trigger volume which unloads the level but enters another volume about 5 seconds afterwards that loads another level that also reuses the asset. I also double checked the references and they only like to the model that is being unloaded and then reloaded again.

Hi Steven -

I’ve been trying to replicate the crash you are experiencing and so far have not been successful, I feel I am missing something in the methodology you are using in either a spawned asset or the process in which you are level streaming. To that end, I have attached a small test level with a setup I feel is close to what you are describing. If you could look at it and make adjustments as necessary to get it close to your project, and once complete upload it back here for us to continue testing on.

Thank You

Ketchum

Test Project (4.7.6)