Yep, I’ve ran into this as well after migrating from 5.5 to 5.7 and it effectively bricked my game.
Refactoring is really not an option here because it’s just a ticking timebomb that will make it blow up somewhere else down the road. Some random refactors fix it but clearly don’t solve the underlying issue so it’s only a matter of time whether it appears again.
I narrowed it down to what causes it in one of my blueprints:
Using the casted game mode….
The problem is that I use this pattern on hundred of places in my game, yet the ensure only fires on a single blueprint. If this was truly a cyclic reference pattern issue, then half of my 100+ blueprints would blow up ![]()
The funny thing here is that what actually causes this problem is a BlueprintFunctionLibrary this GetRTSGameMode function is in. Since the Function Library contains other functions and some of those reference the component I call the GetRTSGameMode from, this is what causes the cycle. But this should not be illegal in any way.
So I agree this is an engine bug most likely.
EDIT:
At this point I am 90%+ sure this is a bug. I’ve removed all cyclic references from the problematic class, and the ensure still fails when packaging the project, BUT when I downloaded the symbols and tried to catch the ensure with debugger attached, the packaging completes absolutely fine. So whether that ensure condition triggers is dependent on such non deterministic factors like if the debugger is attached to the engine or not.

