Bug: “PersistentManager::ReadObject must be called from main thread” when using Object.InstantiateAsync with ParticleSystem that has SubEmitters

Hello,

I have encountered a critical issue when using Unity’s new asynchronous instantiation API (Object.InstantiateAsync) in Unity 6000.0.43f1.

Problem Description:
When I try to asynchronously instantiate a prefab that contains a ParticleSystem with SubEmitters, Unity throws the following error:

PersistentManager::ReadObject must be called from main thread
  • This happens only when the ParticleSystem has SubEmitters (child particle systems set up as sub-emitters).
  • If I remove all sub-emitters from the ParticleSystem, the error does not occur, and asynchronous instantiation works fine.
  • The issue does not happen with VFX Graph prefabs, or with ParticleSystem prefabs that do not use sub-emitters.
  • The error occurs both in coroutine-based and UniTask/async-await based asynchronous code (so it’s not related to async context).

Steps to Reproduce:

  1. Create a prefab with a ParticleSystem, and add at least one SubEmitter.
  2. Call Object.InstantiateAsync(prefab) or the corresponding Addressables API to instantiate it asynchronously.
  3. As soon as the instantiation runs, the editor (or build) throws the error above, and the instantiation fails.

Tested Version:
Unity 6000.0.43f1 (issue also present in previous 2023.3+ builds as reported by other developers).

Additional Notes:

  • Synchronous instantiation (GameObject.Instantiate) works with no issues, regardless of SubEmitters.
  • The issue is blocking for workflows that depend on async loading and pooling of ParticleSystem prefabs (e.g. object pooling, VFX systems).
  • Searching the forums and Issue Tracker, it seems this bug is not widely discussed or resolved.
  • This happens both in the Editor and in builds.

Expected Behavior:
Asynchronous instantiation of ParticleSystem prefabs with SubEmitters should work the same as synchronous instantiation, without thread safety errors.

Request:
Could the Unity dev team please investigate this threading error in the serialization or instantiation pipeline for ParticleSystem SubEmitters during async instantiate?
If a workaround exists, please share it. If not, is there an ETA for a fix?

Thank you!

They will. But you’ll have to submit a bug report (if you haven’t already): Help => Submit a Bug Report ..
Even if the bug already exists it helps to submit your own.

Discussions is not the place to report bugs, only to discuss them (ie #metoo or “found a workaround ..”). :wink: