Unexpected entry '' of type EndOfNode, when StartOfNode was expected. A value has likely been lost.

Issue #59 resolved
Ivan Wang created an issue

Seeing the error numerous times when starting a project in Unity 5.5.0f3. Likely due to a SerializedMonoBehaviour from the stack trace:

Unexpected entry '' of type EndOfNode, when StartOfNode was expected. A value has likely been lost.
UnityEngine.Debug:LogError(Object)
Sirenix.Serialization.CustomLogger:LogError(String) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization.Config/CustomLogger.cs:53)
Sirenix.Serialization.DebugContext:LogError(String) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Misc/SerializationConfig.cs:193)
Sirenix.Serialization.ComplexTypeSerializer`1:ReadValue(IDataReader) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Serializers/ComplexTypeSerializer.cs:53)
Sirenix.Serialization.NullableFormatter`1:DeserializeImplementation(Nullable`1&, IDataReader) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Formatters/NullableFormatter.cs:38)
Sirenix.Serialization.BaseFormatter`1:Deserialize(IDataReader) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Formatters/BaseFormatter.cs:171)
Sirenix.Serialization.ComplexTypeSerializer`1:ReadValue(IDataReader) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Serializers/ComplexTypeSerializer.cs:103)
System.Object:Dynamic_Void ReadDataEntry(Conditional ByRef, System.String, EntryType, IDataReader)(Conditional&, String, EntryType, IDataReader, Dictionary`2)
Sirenix.Serialization.Emitted.ConditionalFormatter:ReadDataEntry(Conditional&, String, EntryType, IDataReader)
Sirenix.Serialization.EasyBaseFormatter`1:DeserializeImplementation(T&, IDataReader) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Formatters/EasyBaseFormatter.cs:28)
Sirenix.Serialization.BaseFormatter`1:Deserialize(IDataReader) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Formatters/BaseFormatter.cs:171)
Sirenix.Serialization.ComplexTypeSerializer`1:ReadValue(IDataReader) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Serializers/ComplexTypeSerializer.cs:307)
Sirenix.Serialization.ArrayFormatter`1:DeserializeImplementation(Conditional[]&, IDataReader) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Formatters/ArrayFormatter.cs:59)
Sirenix.Serialization.BaseFormatter`1:Deserialize(IDataReader) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Formatters/BaseFormatter.cs:171)
Sirenix.Serialization.ComplexTypeSerializer`1:ReadValue(IDataReader) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Serializers/ComplexTypeSerializer.cs:307)
Sirenix.Serialization.Serializer`1:ReadValueWeak(IDataReader) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Serializers/Serializer.cs:176)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, IDataReader) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Utilities/UnitySerializationUtility.cs:1061)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObjectInEditor(Object, SerializationData&, DeserializationContext, Boolean) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Utilities/UnitySerializationUtility.cs:894)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, SerializationData&, DeserializationContext) (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Utilities/UnitySerializationUtility.cs:742)
Sirenix.OdinInspector.SerializedMonoBehaviour:UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize() (at C:/Users/Bjarke/Desktop/Projects/Sirenix Development Framework/Sirenix Solution/Sirenix.Serialization/Unity Integration/SerializedMonoBehaviour.cs:26)

I can provide more details (e.g. my SerializedMonoBehaviour class) if necessary, but it's pretty complex. The error started appearing as soon as I upgraded from v0.9.0.5.

Comments (4)

  1. Tor Esa Vestergaard
    • changed status to open

    This looks like an issue with deserialization of nullables. Unity's version of mono had a runtime error that resulted in a crash with these, so we had to do some funky things to get around that. We'll have a look at this promptly - thanks for reporting!

  2. Tor Esa Vestergaard

    I've so far been unable to replicate this error - could you confirm that the error still happens if you change and then save the scene in which it happens - or change the assets and then save the project (IE, caused the data to be "saved" properly)?

  3. Ivan Wang reporter

    Strangely, I can no longer reproduce the error myself. I definitely changed and re-saved the scene in between now and the error, so perhaps it was just an issue with upgrading versions that fixed after it reserialized.

  4. Tor Esa Vestergaard

    After some consideration, the serialization error that occurred here has been downgraded to a warning instead, as the serialization can easily recover from this case that only affects a single serialized value, and it will happen sometimes when data types change.

  5. Log in to comment