Skip to content

Cesium URL Template Raster Overlay appears to be unstable #573

@Reag

Description

@Reag

It appears to be very easy to cause the Unity Editor to crash when using this component, especially if you have sparse coverage.

For example, during my initial testings, I used an Ellipsoid 3D Tileset with a URL Template Raster Overlay component attached to it. This component was pointed to my office's local debug server, containing Texture Tiles for a section of Europe. Immediately, issues began to occur.

First, editor memory consumption shot up from 2 gig to around 5 gig. Despite knowing the tiling scheme (Standard Web Mercator that works with other mapping solutions, such as Online Maps v3), the tiles appeared in the incorrect place. Finally, after inspecting the scene for around a minute, the Unity Editor hard crashed.

Partial Crash Log
=================================================================
	Managed Stacktrace:
=================================================================
	  at <unknown> <0xffffffff>
	  at CallbackFunctionNativeFunction:UnityEditor_CallbackFunction_InvokeCallback <0x000b8>
	  at CallbackFunctionNativeFunction:Invoke <0x00112>
	  at UnityEditor.EditorApplication:Internal_CallUpdateFunctions <0x00327>
	  at System.Object:runtime_invoke_void <0x00184>
=================================================================
Crash!!!

========== OUTPUTTING STACK TRACE ==================

0x00007FFD494A67DD (CesiumForUnityNative-Runtime) [C:\DEV\CesiumDevelopment\Packages\com.cesium.unity\native~\extern\cesium-native\CesiumRasterOverlays\src\RasterOverlayTile.cpp:54] CesiumRasterOverlays::RasterOverlayTile::~RasterOverlayTile 
0x00007FFD492C57DA (CesiumForUnityNative-Runtime) [C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.43.34808\include\vector:1805] std::vector<Cesium3DTilesSelection::RasterMappedTo3DTile,std::allocator<Cesium3DTilesSelection::RasterMappedTo3DTile> >::clear 
0x00007FFD492CA174 (CesiumForUnityNative-Runtime) [C:\DEV\CesiumDevelopment\Packages\com.cesium.unity\native~\extern\cesium-native\Cesium3DTilesSelection\src\TilesetContentManager.cpp:1253] Cesium3DTilesSelection::TilesetContentManager::unloadTileContent 
0x00007FFD492C9D61 (CesiumForUnityNative-Runtime) [C:\DEV\CesiumDevelopment\Packages\com.cesium.unity\native~\extern\cesium-native\Cesium3DTilesSelection\src\TilesetContentManager.cpp:1474] Cesium3DTilesSelection::TilesetContentManager::unloadCachedBytes 
0x00007FFD4929A67F (CesiumForUnityNative-Runtime) [C:\DEV\CesiumDevelopment\Packages\com.cesium.unity\native~\extern\cesium-native\Cesium3DTilesSelection\src\Tileset.cpp:463] Cesium3DTilesSelection::Tileset::loadTiles 
0x00007FFD484A017A (CesiumForUnityNative-Runtime) [C:\DEV\CesiumDevelopment\Packages\com.cesium.unity\native~\Runtime\src\Cesium3DTilesetImpl.cpp:142] CesiumForUnityNative::Cesium3DTilesetImpl::Update 
0x000002A0A7DBFCF9 (Mono JIT Code) (wrapper managed-to-native) Reinterop.ReinteropInitializer/CallbackFunctionNativeFunction:UnityEditor_CallbackFunction_InvokeCallback (intptr)
0x000002A0A7DBFBA3 (Mono JIT Code) [C:\DEV\LogicClient\src\OverSight_Unity\Library\PackageCache\com.cesium.unity\Runtime\generated\Reinterop.RoslynSourceGenerator\ReinteropInitializer.cs:22487] Reinterop.ReinteropInitializer/CallbackFunctionNativeFunction:Invoke () 
0x0000029FB33C5CC8 (Mono JIT Code) UnityEditor.EditorApplication:Internal_CallUpdateFunctions ()
0x0000029EDA958FC5 (Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_void (object,intptr,intptr,intptr)
0x00007FFD680969CE (mono-2.0-bdwgc) [C:\build\output\Unity-Technologies\mono\mono\mini\mini-runtime.c:3445] mono_jit_runtime_invoke 
0x00007FFD67FD8474 (mono-2.0-bdwgc) [C:\build\output\Unity-Technologies\mono\mono\metadata\object.c:3068] do_runtime_invoke 
0x00007FFD67FD8560 (mono-2.0-bdwgc) [C:\build\output\Unity-Technologies\mono\mono\metadata\object.c:3115] mono_runtime_invoke 
0x00007FFCF404BA14 (Unity) scripting_method_invoke
0x00007FFCF40237A3 (Unity) ScriptingInvocation::Invoke
0x00007FFCF401EA65 (Unity) ScriptingInvocation::Invoke<void>
0x00007FFCF4192E0B (Unity) Scripting::UnityEditor::EditorApplicationProxy::Internal_CallUpdateFunctions
0x00007FFCF526A8C7 (Unity) SceneTracker::Update
0x00007FFCF4DB16FA (Unity) Application::TickTimer
0x00007FFCF53A63EA (Unity) MainMessageLoop
0x00007FFCF53AC0B4 (Unity) UnityMain
0x00007FF6B4352FBA (Unity) __scrt_common_main_seh
0x00007FFE33CEE8D7 (KERNEL32) BaseThreadInitThunk
0x00007FFE357F14FC (ntdll) RtlUserThreadStart

========== END OF STACKTRACE ===========

After this, I reloaded my test scene and attempted to disable the URL Template Raster Overlay component. The editor crashed once again.

Second Crash Log
=================================================================
	Managed Stacktrace:
=================================================================
	  at <unknown> <0xffffffff>
	  at CesiumForUnity.Cesium3DTileset:DotNet_CesiumForUnity_Cesium3DTileset_OnDisable <0x00160>
	  at CesiumForUnity.Cesium3DTileset:OnDisable <0x001fa>
	  at System.Object:runtime_invoke_void__this__ <0x00187>
	  at <unknown> <0xffffffff>
	  at UnityEditor.SerializedObject:ApplyModifiedProperties_Injected <0x000c1>
	  at UnityEditor.SerializedObject:ApplyModifiedProperties <0x0010a>
	  at UnityEditor.EditorGUI:DoInspectorTitlebar <0x0171a>
	  at UnityEditor.EditorGUI:InspectorTitlebar <0x002fa>
	  at UnityEditor.EditorGUILayout:InspectorTitlebar <0x0012a>
	  at UnityEditor.UIElements.EditorElement:DrawEditorSmallHeader <0x00342>
	  at UnityEditor.UIElements.EditorElement:DrawEditorHeader <0x001b2>
	  at UnityEditor.UIElements.EditorElement:HeaderOnGUI <0x00fda>`

========== OUTPUTTING STACK TRACE ==================

0x00007FFD49244323 (CesiumForUnityNative-Runtime) [C:\DEV\CesiumDevelopment\Packages\com.cesium.unity\native~\Runtime\src\TilesetMaterialProperties.cpp:150] CesiumForUnityNative::TilesetMaterialProperties::getOverlayTextureID 
0x00007FFD4927C564 (CesiumForUnityNative-Runtime) [C:\DEV\CesiumDevelopment\Packages\com.cesium.unity\native~\Runtime\src\UnityPrepareRendererResources.cpp:1936] CesiumForUnityNative::UnityPrepareRendererResources::detachRasterInMainThread 
0x00007FFD492D68A6 (CesiumForUnityNative-Runtime) [C:\DEV\CesiumDevelopment\Packages\com.cesium.unity\native~\extern\cesium-native\Cesium3DTilesSelection\src\RasterMappedTo3DTile.cpp:239] Cesium3DTilesSelection::RasterMappedTo3DTile::detachFromTile 
0x00007FFD492CA15F (CesiumForUnityNative-Runtime) [C:\DEV\CesiumDevelopment\Packages\com.cesium.unity\native~\extern\cesium-native\Cesium3DTilesSelection\src\TilesetContentManager.cpp:1251] Cesium3DTilesSelection::TilesetContentManager::unloadTileContent 
0x00007FFD492CA33D (CesiumForUnityNative-Runtime) [C:\DEV\CesiumDevelopment\Packages\com.cesium.unity\native~\extern\cesium-native\Cesium3DTilesSelection\src\TilesetContentManager.cpp:135] Cesium3DTilesSelection::`anonymous namespace'::unloadTileRecursively 
0x00007FFD492CA33D (CesiumForUnityNative-Runtime) [C:\DEV\CesiumDevelopment\Packages\com.cesium.unity\native~\extern\cesium-native\Cesium3DTilesSelection\src\TilesetContentManager.cpp:135] Cesium3DTilesSelection::`anonymous namespace'::unloadTileRecursively 
0x00007FFD4929620F (CesiumForUnityNative-Runtime) [C:\DEV\CesiumDevelopment\Packages\com.cesium.unity\native~\extern\cesium-native\Cesium3DTilesSelection\src\Tileset.cpp:140] Cesium3DTilesSelection::Tileset::~Tileset 
0x00007FFD4849DFD7 (CesiumForUnityNative-Runtime) [C:\DEV\CesiumDevelopment\Packages\com.cesium.unity\native~\Runtime\src\Cesium3DTilesetImpl.cpp:561] CesiumForUnityNative::Cesium3DTilesetImpl::DestroyTileset 
0x00007FFD4842E75F (CesiumForUnityNative-Runtime) [C:\DEV\CesiumDevelopment\Packages\com.cesium.unity\native~\Runtime\generated-Editor\src\DotNet\CesiumForUnity\Cesium3DTileset.cpp:1082] DotNet_CesiumForUnity_Cesium3DTileset_OnDisable 
0x000001D13FC0AE61 (Mono JIT Code) (wrapper managed-to-native) CesiumForUnity.Cesium3DTileset:DotNet_CesiumForUnity_Cesium3DTileset_OnDisable (intptr,CesiumForUnity.Cesium3DTileset/ImplementationHandle,intptr*)
0x000001D13FC0AB5B (Mono JIT Code) [C:\DEV\LogicClient\src\OverSight_Unity\Library\PackageCache\com.cesium.unity\Runtime\generated\Reinterop.RoslynSourceGenerator\Cesium3DTileset-generated.cs:158] CesiumForUnity.Cesium3DTileset:OnDisable () 
0x000001D0525B55B8 (Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)
0x00007FFD680969CE (mono-2.0-bdwgc) [C:\build\output\Unity-Technologies\mono\mono\mini\mini-runtime.c:3445] mono_jit_runtime_invoke 

This is unfortunate, as using the URL Texture overlay with an Ellipsoid 3D Tileset would be ideal for my use case. Please let me know if there is any other information I can provide that can help fix this issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions