Modifying UVs on imported USD meshes causes Editor crash (Array index out of bounds) unless Normals are manually recomputed

Summary

Modifying and applying UV changes to an imported/reimported USD mesh via either the UV-Editor or Modeling Mode causes an Editor crash (Array index out of bounds in DynamicMeshToMeshDescription::UpdateAttributes).

What Type of Bug are you experiencing?

Editor

Steps to Reproduce

  1. Import USD
  2. Enter “Modelling” with USD Mesh selected.
  3. Auto-Unwrap / Modify UV.
  4. Accept/Apply the changes → Crash

Expected Result

No Crash, but Changes applied.

Observed Result

Workaround: Go to Modeling Mode > Attributes > Recompute Normals on the asset before committing any UV changes. This cleans the corrupt attribute buffers that cause out-of-bounds indexing during save.

Feature Request / Fix: Automatically recompute/sanitize mesh normals upon USD import/reimport, or add bounds-checking in MeshDescription during attribute updates to prevent fatal editor crashes.

Affects Versions

5.8

Platform(s)

Windows

Upload an image

Video

For crash reports, include your callstack

LoginId:869cab6f4934eb73679c768a8a7d8166
EpicAccountId:3c1ac135235948a899bdcdd9a0825724

Assertion failed: (Index >= 0) & (Index < ArrayNum) [File:D:\build++UE5\Sync\Engine\Source\Runtime\Core\Public\Containers\Array.h] [Line: 1339]
Array index out of bounds: 1009335915 into an array of size 25

UnrealEditor_Core!FDebug::CheckVerifyFailedImpl2() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\Misc\AssertionMacros.cpp:797]
UnrealEditor_MeshConversion!FDynamicMeshToMeshDescription::UpdateAttributes() [D:\build++UE5\Sync\Engine\Source\Runtime\MeshConversion\Private\DynamicMeshToMeshDescription.cpp:272]
UnrealEditor_MeshConversion!FDynamicMeshToMeshDescription::UpdateUsingConversionOptions() [D:\build++UE5\Sync\Engine\Source\Runtime\MeshConversion\Private\DynamicMeshToMeshDescription.cpp:540]
UnrealEditor_ModelingComponents!UE::Geometry::CommitDynamicMeshViaMeshDescription() [D:\build++UE5\Sync\Engine\Plugins\Runtime\MeshModelingToolset\Source\ModelingComponents\Private\ConversionUtils\DynamicMeshViaMeshDescriptionUtil.cpp:59]
UnrealEditor_ModelingComponentsEditorOnly!UStaticMeshComponentToolTarget::CommitDynamicMesh() [D:\build++UE5\Sync\Engine\Plugins\Runtime\MeshModelingToolset\Source\ModelingComponentsEditorOnly\Private\ToolTargets\StaticMeshComponentToolTarget.cpp:263]
UnrealEditor_ModelingComponents!UE::ToolTarget::CommitDynamicMeshUVUpdate() [D:\build++UE5\Sync\Engine\Plugins\Runtime\MeshModelingToolset\Source\ModelingComponents\Private\ModelingToolTargetUtil.cpp:520]
UnrealEditor_MeshModelingToolsEditorOnly!UParameterizeMeshTool::OnShutdown() [D:\build++UE5\Sync\Engine\Plugins\Runtime\MeshModelingToolset\Source\MeshModelingToolsEditorOnly\Private\ParameterizeMeshTool.cpp:236]
UnrealEditor_ModelingComponents!USingleSelectionMeshEditingTool::Shutdown() [D:\build++UE5\Sync\Engine\Plugins\Runtime\MeshModelingToolset\Source\ModelingComponents\Private\BaseTools\SingleSelectionMeshEditingTool.cpp:54]
UnrealEditor_InteractiveToolsFramework!UInteractiveToolManager::DeactivateToolInternal() [D:\build++UE5\Sync\Engine\Source\Runtime\InteractiveToolsFramework\Private\InteractiveToolManager.cpp:314]
UnrealEditor_InteractiveToolsFramework!UInteractiveToolManager::DeactivateTool() [D:\build++UE5\Sync\Engine\Source\Runtime\InteractiveToolsFramework\Private\InteractiveToolManager.cpp:260]
UnrealEditor_UnrealEd!UEditorInteractiveToolsContext::DeactivateActiveTool() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\Tools\EdModeInteractiveToolsContext.cpp:840]
UnrealEditor_UnrealEd!UEditorInteractiveToolsContext::Tick() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\Tools\EdModeInteractiveToolsContext.cpp:528]
UnrealEditor_UnrealEd!UModeManagerInteractiveToolsContext::Tick() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\Tools\EdModeInteractiveToolsContext.cpp:971]
UnrealEditor_UnrealEd!FEditorModeTools::Tick() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\EditorModeManager.cpp:1401]
UnrealEditor_UnrealEd!FEditorViewportClient::Tick() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\EditorViewportClient.cpp:1807]
UnrealEditor_UnrealEd!FLevelEditorViewportClient::Tick() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\LevelEditorViewport.cpp:3024]
UnrealEditor_UnrealEd!UEditorEngine::Tick() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\EditorEngine.cpp:2264]
UnrealEditor_UnrealEd!UUnrealEdEngine::Tick() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\UnrealEdEngine.cpp:546]
UnrealEditor!FEngineLoop::Tick() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:5859]
UnrealEditor!GuardedMain() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:190]
UnrealEditor!GuardedMainWrapper() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:123]
UnrealEditor!LaunchWindowsStartup() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:277]
UnrealEditor!WinMain() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:338]
UnrealEditor!__scrt_common_main_seh() [D:\a_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
kernel32
ntdll