Event Driven Loading broken / Async Loading Thread broken

Greetings.

So far I haven’t been able to reproduce it in a new project.
In 4.16 the game would run with Event Driven Loading enabled, but eventually crash on server travel, in 4.17 it won’t even start the game.

I’ve done more testing in relation to other issues in 4.17, and it seems that it could have something to do with widgets:

Removing all widgets currently allows the game to start and load a level, even with Async Loading Thread and Event Driven Loading enabled without crashing.
But I need to do some more testing.

Or well, it starts up etc but there is something a bit strange in the log.

LogInit: FAudioDevice initialized.
LogInit: Texture streaming: Enabled
LogStats: FPlatformStackWalk::StackWalkAndDump -  0.035 s
Error: === Handled ensure: ===
Error: 
Error: Ensure condition failed: GetShadowIndex() == 0 [File:D:\Build\++UE4+Release-4.17+Compile\Sync\Engine\Source\Runtime\Core\Public\HAL/IConsoleManager.h] [Line: 828]
Error: 
Error: Stack: 
Error: Game.exe!FWindowsPlatformStackWalk::StackWalkAndDump()
Error: Game.exe!FDebug::EnsureFailed()
Error: Game.exe!FDebug::OptionallyLogFormattedEnsureMessageReturningFalse()
Error: Game.exe!TConsoleVariableData<float>::GetValueOnGameThread()
Error: Game.exe!FBodySetupShapeIterator::GetContactOffsetParams()
Error: Game.exe!UDestructibleComponent::UDestructibleComponent()
Error: Game.exe!StaticConstructObject_Internal()
Error: Game.exe!FAsyncPackage::EventDrivenCreateExport()
Error: Game.exe!FAsyncPackage::ProcessImportsAndExports_Event()
Error: Game.exe!FAsyncPackage::Event_ProcessImportsAndExports()
Error: Game.exe!FStringAssetReference::operator==()
Error: Game.exe!FAsyncLoadEventQueue::PopAndExecute()
Error: Game.exe!FAsyncLoadingThread::ProcessAsyncLoading()
Error: Game.exe!FAsyncLoadingThread::Run()
Error: Game.exe!FRunnableThreadWin::Run()
Error: Game.exe!FRunnableThreadWin::GuardedRun()
Error: kernel32.dll!0x0000000076DB652D
Error: ntdll.dll!0x0000000076FEC541

I’ve had even more problems in 4.17 so far with Event Driven Loading and enabling the Async Loading Thread.

LogThreadingWindows: Error: Runnable thread FAsyncLoadingThread crashed.
LogWindows: Error: === Critical error: ===
LogWindows: Error: 
LogWindows: Error: Assertion failed: IsInGameThread() [File:D:\Build\++UE4+Release-4.17+Compile\Sync\Engine\Source\Runtime\CoreUObject\Private\Serialization\AsyncLoading.cpp] [Line: 4652] 

203345-asyncthread.jpg

And this crash if only leaving Event Driven Loading checked:

LogWindows: Error: === Critical error: ===
LogWindows: Error: 
LogWindows: Error: Assertion failed: RecursionNotAllowed.Increment() == 1 [File:D:\Build\++UE4+Release-4.17+Compile\Sync\Engine\Source\Runtime\CoreUObject\Private\Serialization\AsyncLoading.cpp] [Line: 4235] 

203346-eventdrivenloading.jpg

These crashes do not happen if disabling both Async Loading Thread and Event Driven Loading.

Hello MADHOUSE,

Can you provide more context to this issue? Is this only occurring in your primary project or is it something that you can reproduce in a fresh project? Could you provide the full logs for the packaging process and the application itself when the crash occurs? You mention you’re having “Even more problems” with this in 4.17. Is this behavior a regression? What has changed from 4.16 to 4.17?

Thank you for that information. Is this a code project? If so, can you try running the project in Debug from Visual Studio and determine what asset is causing this ensure? When the ensure is triggered in Deubg, it will halt the process and give you a chance to check, similar to what would happen when the editor hits an assert.

After a lot of debugging this ensure fail is caused by having a BP actor with a destructible mesh component in the project if also using Async Loading Thread and Event Driven Loading.

If not using these then the destructible component will not trigger this ensure.

edit: If this is reproducable then just generate a destructible from any mesh, add it to a level, package a dev build with async thread and event driven loading enabled.

Hmm so far in the release version of 4.17, if activating Async Loading Thread and Event Driven Loading the game never starts, it just goes to a black screen and then does nothing.

I’m experiencing the same Assertion failed: RecursionNotAllowed.Increment() == 1 error in op on 4.17. I tested this on a previous 4.16 build of my project that had successfully packaged and ran in 4.16. It no longer works, and returns that error on 4.17.

I am getting a similar problem when loading one of my levels, but only with one, the rest load up fine. My game crashes and I get this.

https://puu.sh/xa5iG/056481a255.png

Hello everyone,

Do these issues only occur with projects that you have converted from 4.16? Have you tried reproducing these issues in a fresh project? I’m not able to reproduce it locally from the currently provided information.

Also, are you all getting the exact same error? The error messages provided by wisemethuselah and Selentic seem to be different and could be caused by different issues. As for you, MADHOUSE, what error are you receiving? If you’re only getting a black screen, could it be that your map is not being loaded? Please ensure that your Maps & Modes are set to start on the correct map. Please provide the log file for the packaging process and the log file for the session itself where the black screen appears. There could be warnings or errors that can explain what is happening.

Hi Matt. I’m producing the same errors as Madhouse as far as I can tell.

The project was converted from 4.16. I can not reproduce this in a fresh project. What I’ve figured out so far is that it doesn’t seem to even get to the point to actually start my project. I went as far as to remove every execution pin that runs when the game starts, and swap the default map to a completely blank map. The error still occurs.

Also, this is specific to 4.17. 4.16 runs without issue.

My full logs are linked below.

With Async loading thread, and Event Driven loading I receive:

[2017.08.17-16.30.25:548][ 0]LogThreadingWindows: Error: Runnable thread FAsyncLoadingThread crashed.
[2017.08.17-16.30.25:548][ 0]LogWindows: Error: === Critical error: ===
[2017.08.17-16.30.25:548][ 0]LogWindows: Error:
[2017.08.17-16.30.25:548][ 0]LogWindows: Error: Assertion failed: IsInGameThread() [File:D:\Build++UE4+Release-4.17+Compile\Sync\Engine\Source\Runtime\CoreUObject\Private\Serialization\AsyncLoading.cpp] [Line: 4658]

With just event Driven loader:

[2017.08.17-15.26.46:349][ 0]LogWindows: Error: === Critical error: ===
[2017.08.17-15.26.46:349][ 0]LogWindows: Error:
[2017.08.17-15.26.46:349][ 0]LogWindows: Error: Assertion failed: RecursionNotAllowed.Increment() == 1 [File:D:\Build++UE4+Release-4.17+Compile\Sync\Engine\Source\Runtime\CoreUObject\Private\Serialization\AsyncLoading.cpp] [Line: 4235]

Additionally, I receive this error if packaging as shipping, if this means anything.

LowLevelFatalError [File:D:\Build++UE4+Release-4.17+Compile\Sync\Engine\Source\Runtime\CoreUObject\Private\Serialization\AsyncLoading.cpp] [Line: 1381]
No outstanding IO, no nodes in the queue, yet we still have ‘PackagesWithNodes’ in the graph.

I spent some time testing what I had to consistently recreate the issue. Yes this is a project I converted from 4.16. First of all it’s only happened in builds that I have uploaded to steam. I have tried running the build directly and it doesn’t crash. The crash happens when I try to load in a streamed level. 3/5 of the levels always load with no problem, sometimes the remaining 2 will load ok, but one of them always crashes it. It is usually the message I posted above but I have seen this one as well.

https://puu.sh/xcxIQ/81a95dff83.png

The real kicker is why it consistently works with most of the levels. And how it’s only broken through steam.

Greetings.

The two pictures I posted first are of the crash messages when starting a packaged game using Async Thread or Async Thread + Event Driven Loading, in 4.17 release however it just goes to a black screen and hangs.

Game modes and starting maps etc are setup properly, I am currently installing the 4.17.1 hotfix and will test first if there is any change in behaviour there. I’ll return with results in a while.

210244-crashy2.jpg

I’ve tested the project with 4.17.1 now and I can get some more crash details from the shipping build, and a crash stack from a development build:

"
Error: Ensure condition failed: GetShadowIndex() == 0 [File:H:\UnrealEngine-release\Engine\Source\Runtime\Core\Public\HAL/IConsoleManager.h] [Line: 828]
"

"
Error: Assertion failed: IsInGameThread() [File:H:\UnrealEngine-release\Engine\Source\Runtime\CoreUObject\Private\Serialization\AsyncLoading.cpp] [Line: 4658]
"

"
Error: Crash in runnable thread FAsyncLoadingThread
"

Full crash log from the dev build here: https:///J2fPt5gX

I’ve gotten a bit further debugging this, and the crashes are caused by using nativized assets with Async Thread and Event Driven Loading. The crash is avoided when building without nativization,
which is not very desirable at the moment… Nativization is having other issues aswell in 4.17 that is a regression from 4.16 such as losing mesh/actor positions or/and other inherit actor and/or child actor data, but in this instance the nativized assets work without crashing the game when NOT using async loading and event driven loading.

The development build still has the ensure fail in the log tho:

"
Error: Ensure condition failed: GetShadowIndex() == 0 [File:H:\UnrealEngine-release\Engine\Source\Runtime\Core\Public\HAL/IConsoleManager.h] [Line: 828]
"
But it dosen’t crash the game.

Im still looking into this so I’ll post more when I have more.

I experienced the same crash message with servertravel issues in 4.16:

No one managed to figure out too much from it tho, and those servertravel issues seems to be resolved for me atleast in 4.17… annoying to still see this happen.

Disabling nativization rectifies the issue for me as well.

I’ve noticed another wierd issue, every second build I create from the project launcher will crash when trying to start the game with a generic “FATAL ERROR” message.
The only way to fix it is to either compile the exe from VS and overwrite the one that was created in the packaged build, or delete all intermediate and saved files and run project launcher again. However if running it a second time, again it will create an exe file that will fail to start the game…

Im looking into this atm. I’ve never experienced this kind of issue before in UE4.

I made a (kind of) small test project in 4.17 that I think repro’s the issue with a minimum of steps. You can see it here.

https://uploadfiles.io/6ljqp

I originally missed this thread and posted my info here.

I am experiencing the same issue with a fresh project created in 4.17.1. Disabling blueprint nativization compile fixes it. I do have some custom c++ code with it, but I am not referencing GEngine in any of the constructors.

So, I tried something different and put the blueprint nativize mode into exclusive. I was adding stuff one by one and compiling, when all of a sudden I got a different error on one blueprint when running the exe: https:///6F3zEZbx

The only blueprint that was added to cause this was BPWeapon. Yet, it seems it is creating a circular reference when nativized. However, when non nativized, or run in PIE / Standalone it works fine.

Hello blobdole,

Whenever I attempt to download from that site, the download fails part way through. Could you upload the project to another site such as Google Drive or Dropbox?