Engine Crash when using Servertravel/Open on TransitionMap set in DefaultEngine.ini

Branch: ‘Binary’ build from the Unreal Launcher

Build version: 4.7.1

Detailed description of the issue: Topic says it all, if you use the ServerTravel / Open console commands with the same map set in DefaultEngine under TransitionMap= the engine crashes.

Thought I report it as engine crashes should never be something to just happen even when you mess up.

Repro Steps:

  1. Create blank project.
  2. save map
  3. set map as transition map
  4. create custom GameMode and have “UseSeamlessTravel” checked (use it either in WorldOverride or DefaultProject Gamemode)
  5. play the map in editor
  6. use servertravel in console

Update:
So I did some more testing. A very important part seems to be that you actually play the map in the editor that is 1. the transition map and 2. the map with useseamlesstravel. If you press play while on another map you can travel just fine…also, only “ServerTravel” crashes while “Open” worked in my recent testing (guess “Open” does not even consider using seamlesstravel). I zipped my test project and updated the steps nessessary to reproduce the crash.
Remember if you reopen a project you have to switch to the map first as it is not the default map for UE to open!
CrashTest

MachineId:911664EB4B264A644AB2EB89B8FB457F
EpicAccountId:f45f8fee002a445b9e0886f434c1dc7a

Unknown exception - code 00000001 (first/second chance not available)

Ensure condition failed: !ActorComponent->IsRegistered() || ActorComponent->GetScene() != this [File:D:\BuildFarm\buildmachine_++depot+UE4-Releases+4.7\Engine\Source\Runtime\Renderer\Private\RendererScene.cpp] [Line: 1822] 
Component Name: Scene

KERNELBASE + 37901 bytes
UE4Editor_Core!NewReportEnsure() + 19 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\core\private\windows\windowsplatformcrashcontext.cpp:390]
UE4Editor_Core!FDebug::EnsureFailed() + 700 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\core\private\misc\outputdevice.cpp:347]
UE4Editor_Renderer!FScene::Release() + 555 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\renderer\private\rendererscene.cpp:1818]
UE4Editor_Engine!UWorld::FinishDestroy() + 171 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\engine\private\world.cpp:436]
UE4Editor_CoreUObject!UObject::ConditionalFinishDestroy() + 450 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\coreuobject\private\uobject\obj.cpp:593]
UE4Editor_CoreUObject!StaticAllocateObject() + 2479 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1800]
UE4Editor_CoreUObject!StaticConstructObject() + 785 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:2226]
UE4Editor_CoreUObject!StaticDuplicateObjectEx() + 583 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1431]
UE4Editor_CoreUObject!StaticDuplicateObject() + 368 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1391]
UE4Editor_UnrealEd!UEditorEngine::CreatePIEWorldByDuplication() + 1223 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\editor\unrealed\private\playlevel.cpp:3310]
UE4Editor_Engine!FSeamlessTravelHandler::SeamlessTravelLoadCallback() + 355 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\engine\private\world.cpp:4192]
UE4Editor_Engine!TBaseRawMethodDelegateInstance<0,FSeamlessTravelHandler,void __cdecl(FName const & __ptr64,UPackage * __ptr64)>::ExecuteIfSafe() + 14 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\core\public\delegates\delegateinstancesimpl_variadics.inl:582]
UE4Editor_CoreUObject!FAsyncPackage::FinishObjects() + 945 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:894]
UE4Editor_CoreUObject!FAsyncPackage::Tick() + 972 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:360]
UE4Editor_CoreUObject!ProcessAsyncLoading() + 621 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:1111]
UE4Editor_Engine!UWorld::Tick() + 1543 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\engine\private\leveltick.cpp:1065]
UE4Editor_UnrealEd!UEditorEngine::Tick() + 5618 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\editor\unrealed\private\editor.cpp:1329]
UE4Editor_UnrealEd!UUnrealEdEngine::Tick() + 22 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\editor\unrealed\private\unrealedengine.cpp:347]
UE4Editor!FEngineLoop::Tick() + 4179 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\launch\private\launchengineloop.cpp:2257]
UE4Editor!GuardedMain() + 1404 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\launch\private\launch.cpp:142]
UE4Editor!GuardedMainWrapper() + 26 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor!WinMain() + 249 bytes [d:\buildfarm\buildmachine_++depot+ue4-releases+4.7\engine\source\runtime\launch\private\windows\launchwindows.cpp:202]
UE4Editor!__tmainCRTStartup() + 329 bytes [f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c:618]

Hi drUniversalis,

I wasn’t able to reproduce this crash. I created a new blank project, made a New Level and saved it as TransitionMap, then set that map to be the Transition Map in the project’s defaultengine.ini. Am I missing any steps? What are you putting in the defaultengine.ini, specifically? And what are you typing for your console command? Thanks!

Yeah I should have checked that. Removing the map did fix my crash, but it was not the problem in the first place…classic. I am pinning the cause down as we speak. I edited my answer with the crash log, i guess i could just look in the code instead of trial n error.

has to do with either having a custom GameMode or GameInstance…

Got it, you have to have a custom GameMode and have “SeamlessTravel” checked in it.

Okay, so if I have a map with a custom GameMode that has Seamless Travel enabled, and I use ServerTravel to move to another map, I have no issues. If I then try to use ServerTravel to move back to another map, I get a crash because the second map didn’t have Seamless Travel enabled. It does not seem to matter if I have a transition map set, or if I try to travel to that transition map.

I’ll be writing that bug report up shortly, but it sounds like you’re getting something different if you’re crashing on the first ServerTravel or Open command. Can you give me step-by-step instructions to reproduce in a new project, or would you be able to set up a small test project with which this crash occurs and upload it somewhere for me? Thanks!

I’ve entered the bug I mentioned as UE-11271, for reference.

Did some more testing and updated my report, thanks for sticking with me. Also, where can I find the bug report you mentioned? Not yet familiar with all that stuff here :).

For right now, the bug reports aren’t public, and we post the numbers here so we can reference them as people ask for updates or research other bugs. There has been some talk about making them public, but there’s no set date for when that might happen.

I’ll take a look at the test project shortly. Thanks for putting that up!

I did a quick test in your project (which looks pretty much like mine). I opened NewMap. I saw that it was set as the Transition Map in the Project Settings. It did NOT have the GameMode set. During PIE, I used console command, “ServerTravel newmap” and it crashed with;

Ensure condition failed: !ActorComponent->IsRegistered() || ActorComponent->GetScene() != this [File:D:\BuildFarm\buildmachine_++depot+UE4-Releases+4.7\Engine\Source\Runtime\Renderer\Private\RendererScene.cpp] [Line: 1822]
Component Name: Scene

So it doesn’t seem to matter whether Seamless Travel is turned on for that crash (which is a different crash then the one I already reported). I think it’s more trying to ServerTravel to the map you’re already on, and being the Transition Map is probably part of that as well. I’m going to do a quick check to see if I can eliminate anything else. Can you confirm that’s what’s happening on your end? Thanks!

you missed that NewGameMode is default in project settings, disable it and travel should work fine, also it happens on any servertravel command (like servertravel entry)

It wasn’t set as the default game mode in Project Settings when I checked. So you’re seeing it if you ServerTravel to any map?

it is for sure set in the zipped project i uploaded, just checked. I think you are getting a not related display bug here…does the default gamemode state “none”? Try to reopen the fresh project and/or files in it, at some point there should be “NewGameMode” in the default project settings. When you change it to the default value “GameMode” servertravel should work fine again.

Okay, yea, it was showing None, but setting it to the NewGameMode has the same crash. I’m going to check this in a fresh project and in our internal build real quick and then probably enter a bug report for it.

Okay, in addition to the first bug I entered (UE-11271), I was able to reproduce the same crash you were getting and entered another bug for that (UE-11391). I tested in 4.7.2 as well as our internal build. I believe the two are related, and I noted that in the bug report. I’ll let you know when I see any update on either. Thanks for helping me get to the bottom of this!

you’re welcome, all hail this epic engine :slight_smile:

As an update for this, currently Seamless Travel is disabled for Single Process PIE. It caused too many crashes and problems. Attempting to use Seamless Travel in PIE will result in the following log:

“LogWorld:Warning: UWorld::ServerTravel: Seamless travel currently NOT supported in single process PIE.”

is there any plan to allow Seamless travel in PIE?

it would have save some time for development testing

Hey Muzaheed,

We have a bug in our system for just that: Unreal Engine Issues and Bug Tracker (UE-20182)

You can keep up with the status of it by using that link and voting for the issue.

Have a great day