Licensees have reported failed multi-thread access code for NavElementAccessDetector in complex levels that have not finished compilation of their static meshes. The eventual failed check is inside of UNavigationObjectRepository::GetNavigationElementForUObject which attempts to get read access to NavElementAccessDetector but the detector has already been claimed in UNavigationObjectRepository::RegisterNavRelevantObjectInternal.
The user found that changing NavElementAccessDetector to be fully recursive fixed the issue in their project. The issue did not come up while they were working in 5.4, but they have had it happen repeatedly since upgrading to 5.5.
Steps to Reproduce
1. Fresh sync without DDC or Zen store
2. Start the editor
3. Open a suitably complicated level
4. Observe crash during navmesh generation
This is difficult to repro as it needs a level with a non-trivial amount of meshes and Actors inside of it. One user reported with 10k.
[Inline Frame] UnrealEditor-NavigationSystem.dll!FRWAccessDetector::AcquireReadAccess() Line 73 C++
[Inline Frame] UnrealEditor-NavigationSystem.dll!TScopedReaderAccessDetector<FRWAccessDetector>::
(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 3604 C++
UnrealEditor-NavigationSystem.dll!UNavigationSystemV1::UpdateComponentInNavOctree(UActorComponent & Comp) Line 3686 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++
[Inline Frame] UnrealEditor-NavigationSystem.dll!Invoke(void(UNavModifierComponent::*)(USceneComponent *, EUpdateTransformFlags, ETeleportType)) Line 66 C++
[Inline Frame] UnrealEditor-NavigationSystem.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(UNavModifierComponent::*)(USceneComponent *, EUpdateTransformFlags, ETeleportType) &) Line 317 C++
UnrealEditor-NavigationSystem.dll!TBaseUObjectMethodDelegateInstance<0,UNavModifierComponent,void __cdecl(USceneComponent *,enum EUpdateTransformFlags,enum ETeleportType),FDefaultDelegateUserPolicy>::ExecuteIfSafe(USceneComponent * <Params_0>, EUpdateTransformFlags <Params_1>, ETeleportType <Params_2>) Line 667 C++
[Inline Frame] UnrealEditor-Engine.dll!TMulticastDelegateBase<FDefaultDelegateUserPolicy>::Broadcast(USceneComponent *) Line 257 C++
UnrealEditor-Engine.dll!TMulticastDelegate<void __cdecl(USceneComponent *,enum EUpdateTransformFlags,enum ETeleportType),FDefaultDelegateUserPolicy>::Broadcast(USceneComponent * <Params_0>, EUpdateTransformFlags <Params_1>, ETeleportType <Params_2>) Line 1079 C++
UnrealEditor-Engine.dll!USceneComponent::PropagateTransformUpdate(bool bTransformChanged, EUpdateTransformFlags UpdateTransformFlags, ETeleportType Teleport) Line 915 C++
UnrealEditor-Engine.dll!USceneComponent::UpdateComponentToWorldWithParent(USceneComponent * Parent, FName SocketName, EUpdateTransformFlags UpdateTransformFlags, const UE::Math::TQuat<double> & RelativeRotationQuat, ETeleportType Teleport) Line 764 C++
UnrealEditor-Engine.dll!USceneComponent::UpdateComponentToWorld(EUpdateTransformFlags UpdateTransformFlags, ETeleportType Teleport) Line 896 C++
UnrealEditor-Engine.dll!USceneComponent::AttachToComponent(USceneComponent * Parent, const FAttachmentTransformRules & AttachmentRules, FName SocketName) Line 2317 C++
UnrealEditor-Engine.dll!UChildActorComponent::CreateChildActor(TFunction<void __cdecl(AActor *)> CustomizerFunc) Line 856 C++
UnrealEditor-Engine.dll!UChildActorComponent::OnRegister() Line 88 C++
UnrealEditor-Engine.dll!UActorComponent::ExecuteRegisterEvents(FRegisterComponentContext * Context) Line 1810 C++
UnrealEditor-Engine.dll!UActorComponent::RegisterComponentWithWorld(UWorld * InWorld, FRegisterComponentContext * Context) Line 1481 C++
UnrealEditor-Engine.dll!AActor::IncrementalRegisterComponents(int NumComponentsToRegister, FRegisterComponentContext * Context) Line 5604 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 3352 C++
UnrealEditor-Engine.dll!ULevelStreaming::UpdateStreamingState(bool & bOutUpdateAgain, bool & bOutRedetermineTarget) Line 1048 C++
[Inline Frame] UnrealEditor-Engine.dll!FStreamingLevelPrivateAccessor::UpdateStreamingState(ULevelStreaming *) Line 791 C++
UnrealEditor-Engine.dll!UWorld::UpdateLevelStreaming() Line 4428 C++
UnrealEditor-Engine.dll!UWorld::FlushLevelStreaming(EFlushLevelStreamingType FlushType) Line 4693 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++
UnrealEditor-UnrealEd.dll!UEditorEngine::Exec_Editor(UWorld * InWorld, const wchar_t * Stream, FOutputDevice & Ar) Line 5674 C++
UnrealEditor-Core.dll!FExec::Exec(UWorld * InWorld, const wchar_t * Cmd, FOutputDevice & Ar) Line 18 C++
UnrealEditor-Engine.dll!UEngine::Exec(UWorld * InWorld, const wchar_t * Cmd, FOutputDevice & Ar) Line 5047 C++
UnrealEditor-UnrealEd.dll!UUnrealEdEngine::Exec(UWorld * InWorld, const wchar_t * Stream, FOutputDevice & Ar) Line 662 C++
UnrealEditor-UnrealEd.dll!FEditorFileUtils::LoadMap(const FString & InFilename, bool LoadAsTemplate, const bool bShowProgress) Line 2952 C++
UnrealEditor-EngineAssetDefinitions.dll!UAssetDefinition_World::OpenAssets(const FAssetOpenArgs & OpenArgs) Line 66 C++
UnrealEditor-AssetTools.dll!FAssetDefinitionProxy::OpenAssetEditor(const TArray<UObject *,TSizedDefaultAllocator<32>> & InObjects, const EAssetTypeActivationOpenedMethod OpenedMethod, TSharedPtr<IToolkitHost,1> EditWithinLevelEditor) Line 257 C++
UnrealEditor-UnrealEd.dll!UAssetEditorSubsystem::OpenEditorForAsset(UObject * Asset, const EToolkitMode::Type ToolkitMode, TSharedPtr<IToolkitHost,1> OpenedFromLevelEditor, const bool bShowProgressWindow, EAssetTypeActivationOpenedMethod OpenedMethod) Line 577 C++
UnrealEditor-UnrealEd.dll!UAssetEditorSubsystem::OpenEditorForAssets_Advanced(const TArray<UObject *,TSizedDefaultAllocator<32>> & InAssets, const EToolkitMode::Type ToolkitMode, TSharedPtr<IToolkitHost,1> OpenedFromLevelEditor, const EAssetTypeActivationOpenedMethod OpenedMethod) Line 646 C++
UnrealEditor-UnrealEd.dll!UAssetEditorSubsystem::OpenEditorForAssets(const TArray<UObject *,TSizedDefaultAllocator<32>> & Assets, const EAssetTypeActivationOpenedMethod OpenedMethod) Line 771 C++
UnrealEditor-ContentBrowserAssetDataSource.dll!ContentBrowserAssetData::EditOrPreviewAssetFileItems(TArrayView<TSharedRef<FContentBrowserAssetFileItemDataPayload const ,1> const ,int> InAssetPayloads, EAssetTypeActivationMethod::Type ActivationMethod, const EAssetTypeActivationOpenedMethod OpenedMethod) Line 411 C++
UnrealEditor-ContentBrowserAssetDataSource.dll!ContentBrowserAssetData::EditOrPreviewItems(IAssetTools * InAssetTools, const UContentBrowserDataSource * InOwnerDataSource, TArrayView<FContentBrowserItemData const ,int> InItems, EAssetTypeActivationMethod::Type ActivationMethod, EAssetTypeActivationOpenedMethod OpenedMethod) Line 456 C++
[Inline Frame] UnrealEditor-ContentBrowserAssetDataSource.dll!ContentBrowserAssetData::EditItems(IAssetTools *) Line 463 C++
UnrealEditor-ContentBrowserAssetDataSource.dll!UContentBrowserAssetDataSource::BulkEditItems(TArrayView<FContentBrowserItemData const ,int> InItems) Line 2637 C++
UnrealEditor-ContentBrowser.dll!SContentBrowser::OnItemsActivated(TArrayView<FContentBrowserItem const ,int> ActivatedItems, EAssetTypeActivationMethod::Type ActivationMethod) Line 3572 C++
[Inline Frame] UnrealEditor-ContentBrowser.dll!Invoke(void(SContentBrowser::*)(TArrayView<FContentBrowserItem const ,int>, EAssetTypeActivationMethod::Type)) Line 66 C++
[Inline Frame] UnrealEditor-ContentBrowser.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(SContentBrowser::*)(TArrayView<FContentBrowserItem const ,int>, EAssetTypeActivationMethod::Type) &) Line 317 C++
UnrealEditor-ContentBrowser.dll!TBaseSPMethodDelegateInstance<0,SContentBrowser,1,void __cdecl(TArrayView<FContentBrowserItem const ,int>,enum EAssetTypeActivationMethod::Type),FDefaultDelegateUserPolicy>::Execute(TArrayView<FContentBrowserItem const ,int> <Params_0>, EAssetTypeActivationMethod::Type <Params_1>) Line 282 C++
[Inline Frame] UnrealEditor-ContentBrowser.dll!TDelegate<void __cdecl(TArrayView<FContentBrowserItem const ,int>,enum EAssetTypeActivationMethod::Type),FDefaultDelegateUserPolicy>::Execute(TArrayView<FContentBrowserItem const ,int>) Line 613 C++
UnrealEditor-ContentBrowser.dll!SAssetView::OnListMouseButtonDoubleClick(TSharedPtr<FAssetViewItem,1> AssetItem) Line 5411 C++
[Inline Frame] UnrealEditor-ContentBrowser.dll!Invoke(void(SAssetView::*)(TSharedPtr<FAssetViewItem,1>)) Line 66 C++
[Inline Frame] UnrealEditor-ContentBrowser.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(SAssetView::*)(TSharedPtr<FAssetViewItem,1>) &) Line 317 C++
UnrealEditor-ContentBrowser.dll!TBaseSPMethodDelegateInstance<0,SAssetView,1,void __cdecl(TSharedPtr<FAssetViewItem,1>),FDefaultDelegateUserPolicy>::ExecuteIfSafe(TSharedPtr<FAssetViewItem,1> <Params_0>) Line 299 C++
UnrealEditor-ContentBrowser.dll!TDelegate<void __cdecl(TSharedPtr<FAssetViewItem,1>),FDefaultDelegateUserPolicy>::ExecuteIfBound<void,0>(TSharedPtr<FAssetViewItem,1> <Params_0>) Line 634 C++
UnrealEditor-ContentBrowser.dll!SListView<TSharedPtr<FAssetViewItem,1>>::Private_OnItemDoubleClicked(TSharedPtr<FAssetViewItem,1> TheItem) Line 1134 C++
UnrealEditor-ContentBrowser.dll!STableRow<TSharedPtr<FAssetViewItem,1>>::OnMouseButtonDoubleClick(const FGeometry & InMyGeometry, const FPointerEvent & InMouseEvent) Line 438 C++
[Inline Frame] UnrealEditor-Slate.dll!FSlateApplication::RoutePointerDoubleClickEvent::__l2::<lambda_1>::operator()(const FArrangedWidget &) Line 5835 C++
UnrealEditor-Slate.dll!FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FPointerEvent,`FSlateApplication::RoutePointerDoubleClickEvent'::`2'::<lambda_1>>(FSlateApplication * ThisApplication, FEventRouter::FBubblePolicy RoutingPolicy, FPointerEvent EventCopy, const FSlateApplication::RoutePointerDoubleClickEvent::__l2::<lambda_1> & Lambda, ESlateDebuggingInputEvent DebuggingInputEvent) Line 456 C++
UnrealEditor-Slate.dll!FSlateApplication::RoutePointerDoubleClickEvent(const FWidgetPath & WidgetsUnderPointer, const FPointerEvent & PointerEvent) Line 5833 C++
UnrealEditor-Slate.dll!FSlateApplication::ProcessMouseButtonDoubleClickEvent(const TSharedPtr<FGenericWindow,1> & PlatformWindow, const FPointerEvent & InMouseEvent) Line 5818 C++
UnrealEditor-Slate.dll!FSlateApplication::OnMouseDoubleClick(const TSharedPtr<FGenericWindow,1> & PlatformWindow, const EMouseButtons::Type Button, const UE::Math::TVector2<double> CursorPos) Line 5781 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 2280 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::DeferMessage(TSharedPtr<FWindowsWindow,1> & NativeWindow, HWND__ * InHWnd, unsigned int InMessage, unsigned __int64 InWParam, __int64 InLParam, int MouseX, int MouseY, unsigned int RawInputFlags) Line 2788 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 1949 C++
[Inline Frame] UnrealEditor-ApplicationCore.dll!WindowsApplication_WndProc(HWND__ *) Line 944 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 950 C++
user32.dll!UserCallWinProcCheckWow() Unknown
user32.dll!DispatchMessageWorker() Unknown
[Inline Frame] UnrealEditor-ApplicationCore.dll!WinPumpMessages() Line 116 C++
UnrealEditor-ApplicationCore.dll!FWindowsPlatformApplicationMisc::PumpMessages(bool bFromMainLoop) Line 145 C++
UnrealEditor.exe!FEngineLoop::Tick() Line 5818 C++
[Inline Frame] UnrealEditor.exe!EngineTick() Line 69 C++
UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) Line 188 C++
UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 266 C++
UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 317 C++
[Inline Frame] UnrealEditor.exe!invoke_main() Line 102 C++
UnrealEditor.exe!__scrt_common_main_seh() Line 288 C++
kernel32.dll!BaseThreadInitThunk() Unknown
ntdll.dll!RtlUserThreadStart() Unknown
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-240424 in the post.
1 |
Component | UE - AI - Navigation |
---|---|
Affects Versions | 5.5 |
Target Fix | 5.5.4 |
Fix Commit | 39186234 |
---|
Created | Jan 27, 2025 |
---|---|
Resolved | Jan 30, 2025 |
Updated | Feb 13, 2025 |