Package game Crashes, Plugin content not being packaged. UE5.1.1

When I run Unreal engine with cesium in my level I get a crash in the packaged game, that I wasn’t getting before. I have the plugin included as a part of my project in the plugins folder. I thought the error is related to the way I am packaging the game, and I have attached my settings below. I am trying to add the plugin content in the packaging settings, but it does not seem to find the files. It will then crash in the cesium Tileset tick. I have included my packaging ini ina zip file.

I am using Unreal 5.1.1, and cesium build
“FileVersion”: 3,
“Version”: 40,
“VersionName”: “1.24.0”,
“FriendlyName”: “Cesium for Unreal”,
“Description”: “Unlock the 3D geospatial ecosystem in Unreal Engine with real-world 3D content and a high accuracy full-scale WGS84 globe.”,
“Category”: “Geospatial”,
“CreatedBy”: “Cesium GS, Inc.”,
“CreatedByURL”: “https://cesium.com”,
“DocsURL”: “Cesium for Unreal – Cesium”,
“MarketplaceURL”: “com.epicgames.launcher://ue/marketplace/content/87b0d05800a545d49bf858ef3458c4f7”,
“SupportURL”: “https://community.cesium.com”,
“EngineVersion”: “5.1.0”,

In my CESIUM level I get this error:

Assertion failed: AsyncLoadingThread.RecursionNotAllowed.Increment() == 1 [File:D:\build++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\Serialization\AsyncLoading.cpp] [Line: 4310]

GEMSSandbox!FAsyncLoadingThread::ProcessAsyncLoading()
GEMSSandbox!FAsyncLoadingThread::TickAsyncThread()
GEMSSandbox!FAsyncLoadingThread::TickAsyncLoading()
GEMSSandbox!FAsyncLoadingThread::FlushLoading()
GEMSSandbox!FlushAsyncLoading()
GEMSSandbox!LoadPackageInternal()
GEMSSandbox!LoadPackage()
GEMSSandbox!StaticLoadObjectInternal()
GEMSSandbox!StaticLoadObject()

GEMSSandbox!StaticLoadClass()
GEMSSandbox!ConstructorHelpersInternal::FindOrLoadClass() [C:\Program Files\Epic Games\UE_5.1\Engine\Source\Runtime\CoreUObject\Public\UObject\ConstructorHelpers.h:87]
GEMSSandbox!ACesiumSunSky::ACesiumSunSky() [F:\MODSIM-GEMS-GIS-APP\GEMSSandbox\GEMSSandbox\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\CesiumSunSky.cpp:76]
GEMSSandbox!StaticConstructObject_Internal()
GEMSSandbox!FAsyncPackage::EventDrivenCreateExport()
GEMSSandbox!FAsyncPackage::ProcessImportsAndExports_Event()
GEMSSandbox!<lambda_aef363663c33e8cccbe73ac78c7121c4>::operator()()
GEMSSandbox!FAsyncLoadingThread::ProcessAsyncLoading()
GEMSSandbox!FAsyncLoadingThread::TickAsyncThread()
GEMSSandbox!FAsyncLoadingThread::TickAsyncLoading()
GEMSSandbox!FAsyncLoadingThread::FlushLoading()
GEMSSandbox!FlushAsyncLoading()
GEMSSandbox!LoadPackageInternal()
GEMSSandbox!LoadPackage()
GEMSSandbox!UEngine::LoadMap()
GEMSSandbox!UEngine::Browse()
GEMSSandbox!UEngine::TickWorldTravel()
GEMSSandbox!UGameEngine::Tick()
GEMSSandbox!FEngineLoop::Tick()
GEMSSandbox!GuardedMain()
GEMSSandbox!GuardedMainWrapper()
GEMSSandbox!LaunchWindowsStartup()
GEMSSandbox!WinMain()
GEMSSandbox!__scrt_common_main_seh() [D:\a_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
kernel32
ntdll



Packaging Backup 2024-06-25 163613.zip (1.3 KB)

Has anyone encountered an issue like this previously?

Cesium for Unreal v1.24.0 is quite old. Any chance you can upgrade? There’s always the possibility that this problem has already been fixed in a newer version.

I don’t know what would cause those errors, though. To diagnose it, I guess I would first try packaging the Cesium for Unreal Samples project, and see if that has the same problem.

Ok ill try upgrading to 5.3.2 and see if that fixes the issue.

Hi Kevin, thank you for reaching out on the ticket. I tried some of your suggestions and this is what I have found.

I have updated the game to UE5.3.2 and to cesium version:

||FileVersion: 3,|
||Version: 60,|
||VersionName: 2.6.0,|

I am getting the same error here as well:

Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000000

msvcp140
GEMSSandbox!async::detail::continuation_vector::try_add() [F:\MODSIM-GEMS-GIS-APP\GEMSSandbox\GEMSSandbox 5.3\Plugins\CesiumForUnreal\Source\ThirdParty\include\async++\continuation_vector.h:163]
GEMSSandbox!async::detail::task_base::add_continuation<async::detail::inline_scheduler_impl>()
GEMSSandbox!async::when_all<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<async::shared_task<CesiumRasterOverlays::QuadtreeRasterOverlayTileProvider::LoadedQuadtreeImage> > > > >()
GEMSSandbox!CesiumAsync::AsyncSystem::all<CesiumRasterOverlays::QuadtreeRasterOverlayTileProvider::LoadedQuadtreeImage,CesiumAsync::SharedFuture<CesiumRasterOverlays::QuadtreeRasterOverlayTileProvider::LoadedQuadtreeImage> >()
GEMSSandbox!CesiumRasterOverlays::QuadtreeRasterOverlayTileProvider::loadTileImage()
GEMSSandbox!CesiumRasterOverlays::RasterOverlayTileProvider::doLoad()
GEMSSandbox!CesiumRasterOverlays::RasterOverlayTileProvider::loadTileThrottled()
GEMSSandbox!Cesium3DTilesSelection::RasterMappedTo3DTile::loadThrottled()
GEMSSandbox!async::make_task()
GEMSSandbox!Cesium3DTilesSelection::TilesetContentManager::loadTileContent()
GEMSSandbox!Cesium3DTilesSelection::Tileset::updateView()
GEMSSandbox!ACesium3DTileset::Tick() [F:\MODSIM-GEMS-GIS-APP\GEMSSandbox\GEMSSandbox 5.3\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Cesium3DTileset.cpp:2059]
GEMSSandbox!AActor::TickActor()
GEMSSandbox!FActorTickFunction::ExecuteTick()
GEMSSandbox!FTickFunctionTask::DoTask()
GEMSSandbox!TGraphTask<FTickFunctionTask>::ExecuteTask()
GEMSSandbox!FNamedTaskThread::ProcessTasksNamedThread()
GEMSSandbox!FNamedTaskThread::ProcessTasksUntilQuit()
GEMSSandbox!FTaskGraphCompatibilityImplementation::WaitUntilTasksComplete()
GEMSSandbox!FTickTaskSequencer::ReleaseTickGroup()
GEMSSandbox!FTickTaskManager::RunTickGroup()
GEMSSandbox!UWorld::Tick()
GEMSSandbox!UGameEngine::Tick()
GEMSSandbox!FEngineLoop::Tick()
GEMSSandbox!GuardedMain()
GEMSSandbox!GuardedMainWrapper()
GEMSSandbox!LaunchWindowsStartup()
GEMSSandbox!WinMain()
GEMSSandbox!__scrt_common_main_seh() [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
kernel32
ntdll

I also tried the samples for 5.3.2, and managed to get it to crash once, but on subsequent packages it worked successfully:

I was also able to get 5.1.1 samples to build, package and run without issue.

Im not sure what the cause is, but I did notice that the files that seem to be missing in the packaged game when it crashes are in the packaged build folder:

I will, try running the crashing 5.3.2 game attached to visual studio and see if I can get the line where cesium is failing to load the correct files.

The CesiumForUnrealSamples crash in your screenshot doesn’t appear to have anything to do with Cesium. It’s crashing in the D3D12RHI while rendering Unreal’s UI. My first thought when seeing something like that is that you should try making sure your video drivers are up to date.

As for the call stack in your GEMSSandbox app, that does appear much more Cesium-related, but I don’t know what might be causing it. As a bit of a shot in the dark: do you know if the application uses the Async++ library itself? Perhaps via some other library or plugin? We’ve sometimes seen crashes like that in packaged builds when Cesium for Unreal and some other plugin both use the same third-party library, but different versions of them.

Beyond that, do you think you could provide a minimal project that reproduces this problem so that we can debug it?

Kevin, your hunch was pretty close. I found the cause of the issue; the epic launcher updated the marketplace cesium plugin that I was on and included it in the visual studio project. I already had the plugin in the plugins folder. Then the two plugs conflicted with each other. I tried removing either plugin, then the packaged build worked. So, if I kept the engine version of the plugin and deleted the plugin folder version, then the package worked and if I switch vice versa it worked as well. I need to track down another issue in the upgraded version in 5.3.2 but the cesium is working now with this change.

1 Like