A deadlock is created by the fact that a render thread object FSkinningSceneExtension permanently waits to lock the TickableObjectsCritical through FTickableObjectBase::FTickableStatics::SetTickTypeForTickableObject on destruction while we are executing a Tick on our FTickableGameObject on the gamethread.
I see that 5.6 might have fixed this by moving to the thread safe ticker -> https://github.com/EpicGames/UnrealEngine/blob/5.6/Engine/Source/Runtime/Renderer/Private/Nanite/NaniteSkinningSceneExtension.h
It’s not viable for us to migrate to 5.6 now, luckily we don’t use the Nanite Skinned Meshes so they way we are working around this is to add the following to DefaultEngine.ini, we’re leaving this post here for any other 5.5 users that might encounter this.
[ConsoleVariables]
r.Nanite.AllowSkinnedMeshes=0