Hi Everyone,
I’ve recently upgraded my project from Unreal Engine 5.4 to 5.7, and I’m encountering an issue when running my project from Visual Studio. The exception occurs during the OnConstruction stage, specifically related to CesiumFGltfComponent::CreateOnGameThread builtin function of tileset. This issue happens only on the first run when launching from Visual Studio, and it does not persist once Unreal Engine is open. The exception does not occur if I run the project directly from the Unreal Editor. Has anyone encountered a similar issue after upgrading from UE5.4 to UE5.7. or is there anything I might have missed? I am spawning cesium 3d tilesets in the scene during construction phase(before begin play) via cpp. Any suggestions on how to resolve this would be greatly appreciated.
Thank you!
janine
December 22, 2025, 8:03pm
2
Hi @dis_afise ,
Sorry that you’re running into trouble with the plugin! Could you please share more information with us, including:
What version of Cesium for Unreal are you using?
What the exception that you’re running into? A stack trace would be super helpful as well.
It’s possible that this is related to a previously reported bug below, but it would be good to confirm with more details.
opened 08:43PM - 05 Aug 23 UTC
bug
### Environment:
- operating system: win11;
- Unreal Engine Version: 5.0.3(th… e bug initially occurred) & 5.2.1(the environment I reproduce this bug);
- Cesium-for-Unreal plugin version: 1.29.0;
### Background:
I want to somehow add, load, or change 3d-tiles based on the given custom URL at the game runtime. So, I decided to create my own class derived by the actor class and was going to use a `Cesium3DTileset` object as a sort of "component" in my class.
### Buggy place
After I created a blueprint actor class and used the child actor component to wrap a `Cesium3DTileset` instance, I was able to achieve my goal. However, when I closed my unreal project and reopened it again, I got my bug after clicking on the corresponding blueprint class, it made the unreal editor crash.
- Here is the view of my blueprint actor:

- Here is the actor's behavior before I reopen my project(can work):

- Here are the crash logs:
```
LoginId:b71de044415ee1eb2a475db3d42f7600
EpicAccountId:ff9b3dd8e7da47bb8233a38088182b71
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000448
UnrealEditor_CesiumRuntime!TArray<TScriptDelegate<FWeakObjectPtr>,TSizedDefaultAllocator<32> >::Find() [D:\RocketSync\5.2.0-25360045+++UE5+Release-5.2\Working\Engine\Source\Runtime\Core\Public\Containers\Array.h:949]
UnrealEditor_CesiumRuntime!TArray<TScriptDelegate<FWeakObjectPtr>,TSizedDefaultAllocator<32> >::AddUniqueImpl<TScriptDelegate<FWeakObjectPtr> const &>() [D:\RocketSync\5.2.0-25360045+++UE5+Release-5.2\Working\Engine\Source\Runtime\Core\Public\Containers\Array.h:2433]
UnrealEditor_CesiumRuntime!ACesium3DTileset::ResolveGeoreference() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Cesium3DTileset.cpp:143]
UnrealEditor_CesiumRuntime!UCesium3DTilesetRoot::_updateTilesetToUnrealRelativeWorldTransform() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Cesium3DTilesetRoot.cpp:91]
UnrealEditor_CesiumRuntime!UCesium3DTilesetRoot::MoveComponentImpl() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Cesium3DTilesetRoot.cpp:72]
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Kismet
UnrealEditor_Kismet
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
kernel32
ntdll
```
### Attempted solutions
I tried to reimplement my class in C++, using `ACesium3DTileset*` to point to a corresponding object as my class member variable, but still got the "EXCEPTION_ACCESS_VIOLATION reading address" error. I guess it was related to the `Cesium3DTileset` actor's lifecycle and I cannot just use raw pointer. Finally, I wrapped `Cesium3DTileset` by creating a blueprint class derived from it, and used that blueprint class as a member variable instead. Then everything worked fine for me.
### Finally
So, I wonder why this bug would happen and how can I combine `Cesium3DTileset` actor into my class instead of just wrapping it up if it is possible.