WorldPartitionConvertCommandlet asserts during PartitionLandscape

When running WorldPartitionConvertCommandlet on a persistent world using LandscapeProxies in one of it’s sub-level (using the old standard level streaming setup), the engine asserts on the owner level not being world partitioned.

This check has been added in CL 37842912, but seems to be always failing during a conversion process.

Steps to Reproduce
Run WorldPartitionConvertCommandlet on a persistent world using LandscapeProxies in one of it’s sub-level (using the old standard level streaming setup)

Hi Kyle,

Thank you for looking into this!

Without Landscape in the sub-level the assert does not occur.

I meant the standard level streaming setup with a regular level being referenced in a persistent one:

https://dev.epicgames.com/documentation/en\-us/unreal\-engine/level\-streaming\-overview\-in\-unreal\-engine

Sorry if I wasn’t clear enough with my description, I’ll attach an example project made with the official 5.6.1 engine release.

In the example there is a persistent level named Level1 and a standard streaming level called StreamingLevel1, which is referenced as a sub-level in Level1.

StreamingLevel1 contains a single Landscape actor.

If I run “Convert Level” on Level1 with the default parameters the conversion fails after

LogWorldPartitionConvertCommandlet: Display: PartitionLandscape started…

with the assert:

[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.29:244][  0]LogWindows: Error: appError called: Assertion failed: WorldPartition [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\ActorPartition\ActorPartitionSubsystem.cpp] [Line: 250] 
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.29:244][  0]LogWindows: Error: Windows GetLastError: The handle is invalid. (6)
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:574][  0]LogWindows: Error: === Critical error: ===
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:574][  0]LogWindows: Error: 
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:575][  0]LogWindows: Error: Assertion failed: WorldPartition [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\ActorPartition\ActorPartitionSubsystem.cpp] [Line: 250] 
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:575][  0]LogWindows: Error: 
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:575][  0]LogWindows: Error: 
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:575][  0]LogWindows: Error: 
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:575][  0]LogWindows: Error: [Callstack] 0x00007ff904654028 UnrealEditor-Core.dll!FDebug::CheckVerifyFailedImpl2() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Misc\AssertionMacros.cpp:728]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:576][  0]LogWindows: Error: [Callstack] 0x00007ff8ed581630 UnrealEditor-Engine.dll!FActorPartitionWorldPartition::GetActor() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\ActorPartition\ActorPartitionSubsystem.cpp:250]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:576][  0]LogWindows: Error: [Callstack] 0x00007ff8ed581c6a UnrealEditor-Engine.dll!UActorPartitionSubsystem::GetActor() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\ActorPartition\ActorPartitionSubsystem.cpp:431]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:577][  0]LogWindows: Error: [Callstack] 0x00007ff8ed582161 UnrealEditor-Engine.dll!UActorPartitionSubsystem::GetActor() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\ActorPartition\ActorPartitionSubsystem.cpp:420]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:577][  0]LogWindows: Error: [Callstack] 0x00007ff8e8580e4e UnrealEditor-Landscape.dll!FLandscapeConfigHelper::FindOrAddLandscapeStreamingProxy() [D:\build\++UE5\Sync\Engine\Source\Runtime\Landscape\Private\LandscapeConfigHelper.cpp:88]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:577][  0]LogWindows: Error: [Callstack] 0x00007ff8e8564da2 UnrealEditor-Landscape.dll!`TActorDescContainerInstanceCollection<TObjectPtr<UActorDescContainerInstance> >::GetActorDescContainerInstance'::`2'::<lambda_1>::operator()() [D:\build\++UE5\Sync\Engine\Source\Runtime\Landscape\Private\LandscapeConfigHelper.cpp:160]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:578][  0]LogWindows: Error: [Callstack] 0x00007ff8ed57efd7 UnrealEditor-Engine.dll!FActorPartitionGridHelper::ForEachIntersectingCell() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\ActorPartition\ActorPartitionSubsystem.cpp:100]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:579][  0]LogWindows: Error: [Callstack] 0x00007ff8e85700f1 UnrealEditor-Landscape.dll!FLandscapeConfigHelper::ChangeGridSize() [D:\build\++UE5\Sync\Engine\Source\Runtime\Landscape\Private\LandscapeConfigHelper.cpp:226]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:579][  0]LogWindows: Error: [Callstack] 0x00007ff8e85a5257 UnrealEditor-Landscape.dll!FLandscapeConfigHelper::PartitionLandscape() [D:\build\++UE5\Sync\Engine\Source\Runtime\Landscape\Private\LandscapeConfigHelper.cpp:296]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:580][  0]LogWindows: Error: [Callstack] 0x00007ff8e8f492ed UnrealEditor-UnrealEd.dll!`STableRow<TSharedPtr<FName,1> >::OnDragOver'::`5'::<lambda_1>::operator()() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\Commandlets\WorldPartitionConvertCommandlet.cpp:1076]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:580][  0]LogWindows: Error: [Callstack] 0x00007ff8e8f94d92 UnrealEditor-UnrealEd.dll!UWorldPartitionConvertCommandlet::Main() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\Commandlets\WorldPartitionConvertCommandlet.cpp:1285]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:581][  0]LogWindows: Error: [Callstack] 0x00007ff7242b8fa0 UnrealEditor.exe!FEngineLoop::PreInitPostStartupScreen() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:3860]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:581][  0]LogWindows: Error: [Callstack] 0x00007ff7242ae39c UnrealEditor.exe!GuardedMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:143]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:581][  0]LogWindows: Error: [Callstack] 0x00007ff7242ae6ba UnrealEditor.exe!GuardedMainWrapper() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:128]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:581][  0]LogWindows: Error: [Callstack] 0x00007ff7242b209e UnrealEditor.exe!LaunchWindowsStartup() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:282]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:654][  0]LogWindows: Error: [Callstack] 0x00007ff7242c4e44 UnrealEditor.exe!WinMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:339]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:654][  0]LogWindows: Error: [Callstack] 0x00007ff7242c80fa UnrealEditor.exe!__scrt_common_main_seh() [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
[2025.10.31-08.17.37:174][813]LogWorldPartitionEditor: Error:   #### COMMANDLET OUTPUT >> [2025.10.31-08.17.36:654][  0]LogWindows: Error: [Callstack] 0x00007ff9b9f4e8d7 KERNEL32.DLL!UnknownFunction []

I kept the previous log file and crash report in the Saved folder in the project as well.

BR,

Matyas

Having the same problem here.

When doing FLandscapeConfigHelper::PartitionLandscape, it will at some point call FActorPartitionWorldPartition::GetActor from FindOrAddLandscapeStreamingProxy which will attempt to get a valid UWorldPartition for the sublevel in which the landscape exists and fail.

Looks like an unintentional path because there is no reason why any sublevel would have this set when converting from a classic world with sublevels.

Looks like moving all landscape actors to the persistent level get’s around the issue on our side.

Hello Matyas,

In my own testing I was unable to hit this assert. I followed the documentation found here and included your specifications but the level did not fail the conversion process, both by using “Convert Level” in tools and by running the command line itself.

When the level instance does not have LandscapeProxies, does this assert occur?

When you say “old standard level streaming setup” are you referring to Level Streaming mode (Level Behavior = Standalone)?

Would you be able to provide any extra details (output log or callstack) or an example project showing this behavior?

Thanks,

Kyle B.

Hello Matyas,

I have created a bug report for this issue that can be tracked here if/when it’s approved for public visibility: Unreal Engine Issues and Bug Tracker (UE\-353028)

There is no ETA as priorities for bugs and features can shift at any time.

I believe that Sebastian’s reply will provide sufficient info on surpassing this issue for now; either by moving the landscape to the persistent level in order to run the conversion process, or by a custom engine edit to temporarily get past the “GetActor” function for this conversion.

I will close this ticket for now; if there’s any other information you come across feel free to share it here!

Thanks,

Kyle B.