Hello everyone,
We’re encountering a crash in Cesium for Unreal related to a Cesium3DTileset
actor being destroyed while it’s still loading. Specifically, when the Cesium3DTileset
is actively generating a GLTF component and we change to a different level, the actor is destroyed—leading to a crash.
Currently, we call suspendUpdate = true
before changing levels, but in certain cases Cesium still tries to generate a GLTF component afterward. The full stack trace (below) shows the crash occurring during the finalization of the GLTF creation.
Additionally, we spawn our AActor
dynamically in the Persistent Level. It used to remain alive until we manually destroyed it, but now it appears to be garbage-collected automatically when levels change—even though it’s still on the Persistent Level.
Our questions:
- Is there a way to reliably detect if the Cesium3DTileset is still processing or loading? We’d like to ensure that all pending requests finish before changing levels.
- Have there been any recent changes to actor lifecycle behavior on level transitions that might affect a dynamically spawned actor in the Persistent Level?
Attached is the relevant log information, including a disk I/O error from the SqliteCache and a subsequent critical error referencing an invalid TArray size:
message (28).txt.zip (2.2 KB)
We suspect we need to either:
- Wait until the final GLTF component generation finishes, or
- Prevent the
AActor
from being destroyed until all pending loads have completed.
If anyone has insights or solutions for handling these scenarios—particularly regarding actor lifecycle changes when switching levels—please let us know. Thank you for taking a look @Kevin_Ring