Search Issue Tracker

Fixed in 2022.1.X

Fixed in 2019.4.X, 2020.3.X, 2021.2.X

Votes

0

Found in

2020.3

2021.1

2021.1.24f1

2021.2

2022.1

Issue ID

1372710

Regression

Yes

"Assertion failed" error is thrown when multiple fields are structs that inherit from ISerializationCallbackReceiver

Serialization

-

How to reproduce:
1. Open the attached project (UserProject.zip)
2. Open scene Scenes/Create
3. Press the Play button
4. Observe the Console

Expected result: no "Assertion failed" errors are thrown
Actual result: an error is thrown (Assertion failed on expression: 'itHostingObject == m_DeferredDeserializationCallbackList.rend()' <...>)

Reproducible with: 2020.3.22f1, 2021.1.27f1, 2021.2.1f1, 2022.1.0a13
Could not test with: 2019.4.32f1 (error CS0106: The modifier 'public' is not valid for this item)

  1. Resolution Note (fix version 2022.1):

    Fix missed invocations of ISerializationCallbackReceiver.OnAfterDeserialization and asserts, arising when that interface is implemented on structs inside a MonoBehaviour or ScriptableObject class, along with the presence of SerializeReference fields.

    Fixed in 2022.1.0a16

  2. Resolution Note (fix version 2021.2):

    Fixed in 2021.2.5f1

  3. Resolution Note (fix version 2020.3):

    Fixed in 2020.3.24f1

  4. Resolution Note (fix version 2019.4):

    Fixed in 2019.4.34f1

Add comment

Log in to post comment