Failed to route PostInitProperties

Hello,

I recently moved my BP-only project to UE 4.25 and have a problem with opening the game on Android. It packages without problem but running it on my Android phone (OnePlus 3T) always ends up with a crash on start-up. This is an error that shows up in the logs:

Fatal error: [File:D:/Build/++UE4+Licensee/Sync/Engine/Source/Runtime/CoreUObject/Private/UObject/UObjectGlobals.cpp] [Line: 2803]
LogAndroid: Error: === Critical error: ===
LogAndroid: Error:
LogAndroid: Error: Fatal error: [File:D:/Build/++UE4+Licensee/Sync/Engine/Source/Runtime/CoreUObject/Private/UObject/UObjectGlobals.cpp] [Line: 2803]
LogAndroid: Error: WB_DebugSettings_C failed to route PostInitProperties. Call Super::PostInitProperties() in WB_DebugSettings_C::PostInitProperties().
LogAndroid: Error: [Callstack] 0x00000000CA712FE4 libUE4.so(0x000000000686FFE4)![Unknown]()  []
LogAndroid: Error: [Callstack] 0x00000000CA710408 libUE4.so(0x000000000686D408)!FObjectInitializer::PostConstructInit()  []
LogAndroid: Error: [Callstack] 0x00000000CA70F63C libUE4.so(0x000000000686C63C)!FObjectInitializer::~FObjectInitializer()  []
LogAndroid: Error: [Callstack] 0x00000000CA70B5DC libUE4.so(0x00000000068685DC)!StaticConstructObject_Internal(UClass const*, UObject*, FName, EObjectFlags, EInternalObjectFlags, UObject*, bool, FObjectInstancingGraph*, bool)  []
LogAndroid: Error: [Callstack] 0x00000000CA453C60 libUE4.so(0x00000000065B0C60)!FAsyncPackage::EventDrivenCreateExport(int)  []
LogAndroid: Error: [Callstack] 0x00000000CA44FA4C libUE4.so(0x00000000065ACA4C)!FAsyncPackage::ProcessImportsAndExports_Event()  []
LogAndroid: Error: [Callstack] 0x00000000CA44F320 libUE4.so(0x00000000065AC320)!FAsyncPackage::Event_ProcessImportsAndExports()  []
LogAndroid: Error: [Callstack] 0x00000000CA45CAF4 libUE4.so(0x00000000065B9AF4)!FAsyncLoadingThread::ProcessAsyncLoading(int&, bool, bool, float, FFlushTree*)  []
LogAndroid: Error: [Callstack] 0x00000000CA4662A8 libUE4.so(0x00000000065C32A8)!FAsyncLoadingThread::TickAsyncThread(bool, bool, float, bool&, FFlushTree*)  []
LogAndroid: Error: [Callstack] 0x00000000CA46807C libUE4.so(0x00000000065C507C)!FAsyncLoadingThread::Run()  []
LogAndroid: Error: [Callstack] 0x00000000C9F88A28 libUE4.so(0x00000000060E5A28)!FRunnableThreadPThread::Run()  []
LogAndroid: Error: [Callstack] 0x00000000C9E8E8F0 libUE4.so(0x0000000005FEB8F0)!FRunnableThreadPThread::_ThreadProc(void*)  []
LogAndroid: Error: [Callstack] 0x00000000F2B27DA2 libc.so(0x0000000000071DA2)![Unknown]()  []
LogAndroid: Error: [Callstack] 0x00000000F2AD3E32 libc.so(0x000000000001DE32)![Unknown]()  []
LogAndroid: Error:
LogAndroid: Error:

Default third-person project runs without problem after packaging, so it seems to be a problem on my side. These errors always originate in one of many WidgetBlueprints, which inherit from my parent WB. Once it originated in the parent itself, so it seems semi-random. For now I tried to recreate this situation in template project by just making parent and child WB, but nothing changed. Before I sink more time into it, I thought maybe someone will know what may be the cause. I don’t understand what the error log means, so don’t know where to start really.

Thank you in advance for any help, cheers!

Error: WB_DebugSettings_C failed to
route PostInitProperties. Call
Super::PostInitProperties() in
WB_DebugSettings_C::PostInitProperties().
This error occurs always when you forget to call overridden function on Super (base class) while overriding an essential UE4 function. In your scenario, error communicates that PostInitProperties on WB_DebugSettings is not calling Super. As you say, this is a BP only project, you probably didn’t have a chance to override PostInitProperties (I might be wrong). Nevertheless, try to check overridden functions on this widget, be sure you call parent functions, check the construction script if it doesn’t generate problems. Maybe start from disconnecting this widget from the build to try if that’s the only blocking issue in your project.

The real problem is that this error is pretty low level, from callstack you can see it’s not even inside any blueprint initialization/code. It occurs immediately after constructing the object from C++, after loading the object properties. Well, without fixing the actual problem of not calling the Super, we won’t be able to guess what is really causing it.

When I experiment with this crash another error shows up sometimes:

Error: === Critical error: ===
Error:
Error: Assertion failed: !bCheckAdded || NodeRef.bAddedToGraph [File:D:/Build/++UE4+Licensee/Sync/Engine/Source/Runtime/CoreUObject/Private\Serialization/AsyncLoading.h] [Line: 249]
Error:
Error: [Callstack] 0x00000000CA58BAD4 libUE4.so(0x000000000656BAD4)!FEventLoadGraph::RemoveNode(FEventLoadNodePtr&)  []
Error: [Callstack] 0x00000000CA5A3A48 libUE4.so(0x0000000006583A48)!FAsyncPackage::MakeNextPrecacheRequestCurrent()  []
Error: [Callstack] 0x00000000CA59B0B8 libUE4.so(0x000000000657B0B8)!FAsyncPackage::ProcessImportsAndExports_Event()  []
Error: [Callstack] 0x00000000CA59A788 libUE4.so(0x000000000657A788)!FAsyncPackage::Event_ProcessImportsAndExports()  []
Error: [Callstack] 0x00000000CA5A7F5C libUE4.so(0x0000000006587F5C)!FAsyncLoadingThread::ProcessAsyncLoading(int&, bool, bool, float, FFlushTree*)  []
Error: [Callstack] 0x00000000CA5B1710 libUE4.so(0x0000000006591710)!FAsyncLoadingThread::TickAsyncThread(bool, bool, float, bool&, FFlushTree*)  []
Error: [Callstack] 0x00000000CA5B34E4 libUE4.so(0x00000000065934E4)!FAsyncLoadingThread::Run()  []
Error: [Callstack] 0x00000000CA0D3B70 libUE4.so(0x00000000060B3B70)!FRunnableThreadPThread::Run()  []
Error: [Callstack] 0x00000000C9FD9A38 libUE4.so(0x0000000005FB9A38)!FRunnableThreadPThread::_ThreadProc(void*)  []
Error: [Callstack] 0x00000000F2B27DA2 libc.so(0x0000000000071DA2)![Unknown]()  []
Error: [Callstack] 0x00000000F2AD3E32 libc.so(0x000000000001DE32)![Unknown]()  []

Hit the same error with a blueprint class. It was fixed by going to the affected class’s Construction Script (which was empty, just the single “Construction Script” entry point), right click on the node and “Add call to parent function”, and connect it to the “Construction Script” entry point, then recompiling the BP.

Thank you for the suggestion. Unfortunately, Widget Blueprints don’t have Construction Script. I’ve tried to add “call to parent” node for each event, even for inherited interfaces that was not implemented before in some of those BPs, but the error still persisted.

I’m having what appears to be the same issue with my own Android builds. It appears to be irrespective of device, given that you’re running a OnePlus, and I’m having this issue with an LG V20 and Oculus Quest.

Annoyingly enough, logcat was the only way to find these errors, I wasn’t able to find any crash logs or anything else generated by UE. However, I don’t always get far enough to see these errors, and UE will crash before it gets logged. Difficult to tell as there’s a lot of noise and nonsense to filter in logcat.

I’m attempting to re-create this issue in a fresh project with nothing so far. Will update this post/thread as I learn more.

Update: I set up a fairly elaborate UI containing most of the key features I had. No crash, nothing.

I have several options from here, that are all terrible.

  • Shove the entire project into a UE bug report.

  • Go hunting BP by BP, trial and error, removing errant BP’s one at a time, if they even show up in the log. (Sometimes the log shows nothing from UE before it crashes.)

  • Continue building the test project and see if I can stumble into the bug.

  • Learn the entire ■■■■ codebase of UE.

  • Ditch Android/Quest support.

This is probably a long shot, but did you ever manage to solve this issue?
We’re running into the exact same problem right now.

I seem to have managed to fix one of my projects by following an answer later in the thread, and calling the parent functions of Pre-Construct and Construct on the Widget BP’s. I think not necessarily all of them need to have it (but cannot find a pattern to which ones that require it), but I did that anyway.

Same workaround didn’t fix my other project, but that one may be a different UMG-related issue, not sure. I still know it’s probably UMG-related as the game runs if I go through and rip out all the UMG UI and its integration into the game - took an eternity to do that but still can’t isolate the issue since it never throws any errors into any of the logs (logcat and the logs under UE4Game directory that you can get via adb pull) before crashing.

Thus continues my misadventures. The worst part is being unable to figure out how to reproduce this bug in a new project.

You have to do this to Event Construct and/or Event Pre-Construct, probably both, not sure. (This bug is ■■■■ near impossible to reproduce in a new project anyway.)

Hello!
Reproducing it in a new project was fairly easy for us, I’ll send you a link to our example project!
Note that (at least for us), the issue only happens with Armv7 builds. The Arm64 builds do not share the same problem.

We’ve managed to work around it in our project, but our solution is not exactly ideal, so we’re currently talking directly with Epic about this over on UDN. So far we’ve received no concrete solution though, but I’ll keep you posted in case we do get something.

Can confirm - I switched my own project (a fairly simple BP-only game) to arm64 and everything seems to work great. (Minus some unrelated rendering problems.) I think for now I will have to simply drop armv7 support but obviously that’s not a real solution. But it’s good that Epic is aware of this issue and is working on something - I’d hope it gets rolled into 4.25.5 but wouldn’t be surprised if it got pushed to 4.26.

Thanks a bunch!

Hello again!

I have good news! Epic have located the issue and have indeed fixed it.
If you run a custom engine build you can easily manually integrate the changes from these two commits:
Commit 1 Commit 2.

If not, the fix will be included in 4.26 as far as I know.

Thank you for the info and working with Epic to solve the problem. That’s a wonderful news! :smiley:

This super helped me with my C++ project :slight_smile: