As best I can tell this stack grabs a write lock in UNavigationObjectRepository::RegisterNavRelevantObjectInternal then later when waiting for some static mesh dependencies re-enters the same code and attempts to use this same function which seems to be all sorts of trouble.
Happens when loading a specific map of ours in the editor. Cannot provide the map, unsure what subset would provide a minimal reproduction.
This is in 5.5.4 and already has the fix from this thread:
[Content removed]
Stack:
[Inline Frame] UnrealEditor-NavigationSystem.dll!FRWAccessDetector::AcquireReadAccess() Line 73 C++ [Inline Frame] UnrealEditor-NavigationSystem.dll!TScopedReaderAccessDetector<FRWAccessDetector>::{ctor}(FRWAccessDetector &) Line 229 C++ [Inline Frame] UnrealEditor-NavigationSystem.dll!MakeScopedReaderAccessDetector(FRWAccessDetector &) Line 243 C++ UnrealEditor-NavigationSystem.dll!UNavigationObjectRepository::GetNavigationElementForUObject(const UObject * NavRelevantObject) Line 170 C++ UnrealEditor-NavigationSystem.dll!UNavigationObjectRepository::RegisterNavRelevantObjectInternal(const INavRelevantInterface & NavRelevantInterface, const UObject & NavRelevantObject, UNavigationObjectRepository::ENotifyOnSuccess NotifyOnSuccess) Line 82 C++ [Inline Frame] UnrealEditor-NavigationSystem.dll!UNavigationObjectRepository::UpdateNavigationElementForUObject(const INavRelevantInterface &) Line 191 C++ UnrealEditor-NavigationSystem.dll!UNavigationSystemV1::UpdateNavRelevantObjectInNavOctreeStatic(const INavRelevantInterface & InNavRelevantObject, const UObject & InObject, UNavigationSystemV1 * InNavigationSystem, TFunctionRef<void __cdecl(UNavigationSystemV1 &,TSharedRef<FNavigationElement const ,1> const &)> InCallback) Line 3685 C++ UnrealEditor-NavigationSystem.dll!UNavigationSystemV1::UpdateComponentInNavOctree(UActorComponent & Comp) Line 3772 C++ [Inline Frame] UnrealEditor-Engine.dll!TDelegate<void __cdecl(UActorComponent &),FDefaultDelegateUserPolicy>::Execute(UActorComponent &) Line 613 C++ UnrealEditor-Engine.dll!FNavigationSystem::UpdateComponentData(UActorComponent & Comp) Line 266 C++ UnrealEditor-Engine.dll!UActorComponent::CreatePhysicsState(bool bAllowDeferral) Line 1767 C++ UnrealEditor-Engine.dll!UStaticMeshComponent::PostStaticMeshCompilation() Line 3381 C++ UnrealEditor-Engine.dll!FStaticMeshCompilingManager::PostCompilation(UStaticMesh * StaticMesh) Line 304 C++ UnrealEditor-Engine.dll!FStaticMeshCompilingManager::FinishCompilation::__l22::<lambda_2>::operator()(AsyncCompilationHelpers::ICompilable * Object) Line 416 C++ [Inline Frame] UnrealEditor-Engine.dll!UE::Core::Private::Function::TFunctionRefBase<UE::Core::Private::Function::FFunctionRefStoragePolicy,void __cdecl(AsyncCompilationHelpers::ICompilable *)>::operator()(AsyncCompilationHelpers::ICompilable * <Params_0>) Line 470 C++ UnrealEditor-Engine.dll!AsyncCompilationHelpers::FinishCompilation(TFunctionRef<AsyncCompilationHelpers::ICompilable & __cdecl(int)> Getter, int Num, const FText & AssetType, const FLogCategoryBase & LogCategory, TFunctionRef<void __cdecl(AsyncCompilationHelpers::ICompilable *)> PostCompileSingle) Line 165 C++ UnrealEditor-Engine.dll!FStaticMeshCompilingManager::FinishCompilation(TArrayView<UStaticMesh * const,int> InStaticMeshes) Line 407 C++ UnrealEditor-Engine.dll!UStaticMesh::WaitUntilAsyncPropertyReleased(EStaticMeshAsyncProperties AsyncProperties) Line 3978 C++ [Inline Frame] UnrealEditor-Engine.dll!UStaticMesh::GetBodySetup() Line 1048 C++ UnrealEditor-Engine.dll!UStaticMeshComponent::GetBodySetup() Line 1218 C++ UnrealEditor-NavigationSystem.dll!UNavModifierComponent::CalculateBounds() Line 154 C++ UnrealEditor-NavigationSystem.dll!UNavModifierComponent::CalcAndCacheBounds() Line 221 C++ UnrealEditor-NavigationSystem.dll!UNavRelevantComponent::GetNavigationBounds() Line 78 C++ UnrealEditor-Engine.dll!FNavigationElement::InitializeFromInterface(const INavRelevantInterface * NavRelevantInterface) Line 87 C++ UnrealEditor-Engine.dll!FNavigationElement::FNavigationElement(const INavRelevantInterface & NavRelevant, unsigned __int64 SubElementId) Line 64 C++ [Inline Frame] UnrealEditor-Engine.dll!SharedPointerInternals::TIntrusiveReferenceController<FNavigationElement const ,1>::{ctor}(const INavRelevantInterface &) Line 414 C++ [Inline Frame] UnrealEditor-Engine.dll!SharedPointerInternals::NewIntrusiveReferenceController(const INavRelevantInterface &) Line 465 C++ [Inline Frame] UnrealEditor-Engine.dll!MakeShared(const INavRelevantInterface &) Line 2252 C++ UnrealEditor-Engine.dll!FNavigationElement::CreateFromNavRelevantInterface(const INavRelevantInterface & NavRelevantInterface) Line 144 C++ UnrealEditor-NavigationSystem.dll!UNavigationObjectRepository::RegisterNavRelevantObjectInternal(const INavRelevantInterface & NavRelevantInterface, const UObject & NavRelevantObject, UNavigationObjectRepository::ENotifyOnSuccess NotifyOnSuccess) Line 85 C++ [Inline Frame] UnrealEditor-NavigationSystem.dll!UNavigationObjectRepository::UpdateNavigationElementForUObject(const INavRelevantInterface &) Line 191 C++ UnrealEditor-NavigationSystem.dll!UNavigationSystemV1::UpdateNavRelevantObjectInNavOctreeStatic(const INavRelevantInterface & InNavRelevantObject, const UObject & InObject, UNavigationSystemV1 * InNavigationSystem, TFunctionRef<void __cdecl(UNavigationSystemV1 &,TSharedRef<FNavigationElement const ,1> const &)> InCallback) Line 3685 C++ UnrealEditor-NavigationSystem.dll!UNavigationSystemV1::UpdateActorAndComponentsInNavOctree::__l2::<lambda_1>::operator()(AActor & ActorToUpdate) Line 3831 C++ UnrealEditor-NavigationSystem.dll!UNavigationSystemV1::UpdateActorAndComponentsInNavOctree(AActor & Actor, bool bUpdateAttachedActors) Line 3865 C++ [Inline Frame] UnrealEditor-Engine.dll!TDelegate<void __cdecl(AActor &),FDefaultDelegateUserPolicy>::Execute(AActor &) Line 613 C++ UnrealEditor-Engine.dll!FNavigationSystem::OnActorRegistered(AActor & Actor) Line 273 C++ UnrealEditor-Engine.dll!AActor::PostRegisterAllComponents() Line 3689 C++ UnrealEditor-Engine.dll!AActor::IncrementalRegisterComponents(int NumComponentsToRegister, FRegisterComponentContext * Context) Line 5623 C++ UnrealEditor-Engine.dll!ULevel::IncrementalRegisterComponents(bool bPreRegisterComponents, int NumComponentsToUpdate, FRegisterComponentContext * Context) Line 1814 C++ UnrealEditor-Engine.dll!ULevel::IncrementalUpdateComponents(int NumComponentsToUpdate, bool bRerunConstructionScripts, FRegisterComponentContext * Context) Line 1733 C++ UnrealEditor-Engine.dll!UWorld::AddToWorld(ULevel * Level, const UE::Math::TTransform<double> & LevelTransform, bool bConsiderTimeLimit, FNetLevelVisibilityTransactionId TransactionId, ULevelStreaming * InOwningLevelStreaming) Line 3344 C++ UnrealEditor-Engine.dll!ULevelStreaming::UpdateStreamingState(bool & bOutUpdateAgain, bool & bOutRedetermineTarget) Line 1052 C++ [Inline Frame] UnrealEditor-Engine.dll!FStreamingLevelPrivateAccessor::UpdateStreamingState(ULevelStreaming *) Line 791 C++ UnrealEditor-Engine.dll!UWorld::UpdateLevelStreaming() Line 4420 C++ UnrealEditor-Engine.dll!UWorld::FlushLevelStreaming(EFlushLevelStreamingType FlushType) Line 4685 C++ UnrealEditor-UnrealEd.dll!UEditorEngine::Map_Load(const wchar_t * Str, FOutputDevice & Ar) Line 2692 C++ UnrealEditor-UnrealEd.dll!UEditorEngine::HandleMapCommand(const wchar_t * Str, FOutputDevice & Ar, UWorld * InWorld) Line 6213 C++