0
Working on Fix

Skipping serialization of Ludiq.Peek.ProjectSettings (DictionaryAsset) to prevent data loss because it failed to deserialize.

Crystalius 4 weeks ago updated by Lazlo Bonin (Lead Developer) 3 weeks ago 2

This happened after I'd deleted an asset which had it's window in Peek's tab. Every time I opened the project, I was asked to install Peek again and Peek's tabsettings were lost.

Fixed by deleting "Persistent" folder in "Ludiq.Generated" and finishing Peek setup again and it's fine now. Settings are lost though.


Failed to deserialize DictionaryAsset#15466 using Odin Serializer.

System.Runtime.Serialization.SerializationException: Deserialization into 'Ludiq.PeekCore.DictionaryAsset' failed. ---> Ludiq.OdinSerializer.SerializationAbortException: Deserialization of type 'Ludiq.PeekCore.DictionaryAsset' aborted. ---> Ludiq.OdinSerializer.SerializationAbortException: The following error was logged during serialization or deserialization: Data layout mismatch; skipping past node boundary when exiting array.
at Ludiq.OdinSerializer.DebugContext.LogException (System.Exception exception) [0x00016] in C:\Users\lazlo\Projects\LudiqOdinSerializer\OdinSerializer\Core\Misc\SerializationConfig.cs:240
at Ludiq.OdinSerializer.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, Ludiq.OdinSerializer.IDataReader reader) [0x00216] in C:\Users\lazlo\Projects\LudiqOdinSerializer\OdinSerializer\Unity Integration\UnitySerializationUtility.cs:1721
--- End of inner exception stack trace ---
at Ludiq.OdinSerializer.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, Ludiq.OdinSerializer.IDataReader reader) [0x0027b] in C:\Users\lazlo\Projects\LudiqOdinSerializer\OdinSerializer\Unity Integration\UnitySerializationUtility.cs:1736
at Ludiq.OdinSerializer.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, Ludiq.OdinSerializer.SerializationData& data, Ludiq.OdinSerializer.DeserializationContext context, System.Boolean isPrefabData, System.Collections.Generic.List`1[T] prefabInstanceUnityObjects) [0x00431] in C:\Users\lazlo\Projects\LudiqOdinSerializer\OdinSerializer\Unity Integration\UnitySerializationUtility.cs:1441
at Ludiq.OdinSerializer.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, Ludiq.OdinSerializer.SerializationData& data, Ludiq.OdinSerializer.DeserializationContext context) [0x00000] in C:\Users\lazlo\Projects\LudiqOdinSerializer\OdinSerializer\Unity Integration\UnitySerializationUtility.cs:1161
at Ludiq.PeekCore.Serialization.OdinDeserializeInto[T] (Ludiq.OdinSerializer.SerializationData data, T& instance) [0x00022] in C:\Users\igdau\Desktop\RoL\Assets\Ludiq\Ludiq.PeekCore\Runtime\Serialization\Serialization.cs:403
--- End of inner exception stack trace ---
at Ludiq.PeekCore.Serialization.OdinDeserializeInto[T] (Ludiq.OdinSerializer.SerializationData data, T& instance) [0x00060] in C:\Users\igdau\Desktop\RoL\Assets\Ludiq\Ludiq.PeekCore\Runtime\Serialization\Serialization.cs:415
at Ludiq.PeekCore.Serialization.OnAfterDeserializeImplementation[T] (T uo, Ludiq.PeekCore.FullSerializationData fullData, Ludiq.OdinSerializer.SerializationData odinData, System.Boolean& deserializationFailed) [0x00058] in C:\Users\igdau\Desktop\RoL\Assets\Ludiq\Ludiq.PeekCore\Runtime\Serialization\Serialization.cs:696
UnityEngine.Debug:LogError(Object, Object)
Ludiq.PeekCore.Serialization:OnAfterDeserializeImplementation(LudiqAsset, FullSerializationData, SerializationData, Boolean&) (at Assets/Ludiq/Ludiq.PeekCore/Runtime/Serialization/Serialization.cs:700)
Ludiq.PeekCore.LudiqAsset:UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize() (at Assets/Ludiq/Ludiq.PeekCore/Runtime/Unity/LudiqAsset.cs:26)
UnityEditor.AssetDatabase:LoadAssetAtPath(String)
Ludiq.PeekCore.AssetUtility:TryLoad(String, DictionaryAsset&) (at Assets/Ludiq/Ludiq.PeekCore/Editor/Utilities/AssetUtility.cs:68)
Ludiq.PeekCore.PluginConfiguration:LoadProjectSettings() (at Assets/Ludiq/Ludiq.PeekCore/Editor/Plugins/PluginConfiguration.cs:287)
Ludiq.PeekCore.PluginConfiguration:Load() (at Assets/Ludiq/Ludiq.PeekCore/Editor/Plugins/PluginConfiguration.cs:47)
Ludiq.PeekCore.PluginConfiguration:Initialize() (at Assets/Ludiq/Ludiq.PeekCore/Editor/Plugins/PluginConfiguration.cs:26)
Ludiq.PeekCore.PluginContainer:Initialize() (at Assets/Ludiq/Ludiq.PeekCore/Editor/Plugins/PluginContainer.cs:233)
Ludiq.PeekCore.PluginContainer:.cctor() (at Assets/Ludiq/Ludiq.PeekCore/Editor/Plugins/PluginContainer.cs:21)
UnityEditor.EditorAssemblies:ProcessInitializeOnLoadAttributes(Type[]) (at C:/buildslave/unity/build/Editor/Mono/EditorAssemblies.cs:108)


Skipping serialization of Ludiq.Peek.ProjectSettings (DictionaryAsset) to prevent data loss because it failed to deserialize.

UnityEngine.Debug:LogWarning(Object, Object)

Ludiq.PeekCore.Serialization:OnBeforeSerializeImplementation(LudiqAsset, FullSerializationData&, SerializationData&, Boolean) (at Assets/Ludiq/Ludiq.PeekCore/Runtime/Serialization/Serialization.cs:619)

Ludiq.PeekCore.LudiqAsset:UnityEngine.ISerializationCallbackReceiver.OnBeforeSerialize() (at Assets/Ludiq/Ludiq.PeekCore/Runtime/Unity/LudiqAsset.cs:21)

UnityEditor.AssetDatabase:SaveAssets()

Ludiq.PeekCore.SetupCompletePage:OnShow() (at Assets/Ludiq/Ludiq.PeekCore/Editor/Windows/SetupWizard/SetupCompletePage.cs:61)

Ludiq.PeekCore.Page:Show() (at Assets/Ludiq/Ludiq.PeekCore/Editor/Windows/Page.cs:64)

Ludiq.PeekCore.Wizard:set_currentPage(Page) (at Assets/Ludiq/Ludiq.PeekCore/Editor/Windows/Wizard.cs:33)

Ludiq.PeekCore.<>cDisplayClass20_0:<Initialize>b0() (at Assets/Ludiq/Ludiq.PeekCore/Editor/Windows/Wizard.cs:55)

Ludiq.PeekCore.Page:CompleteSwitch() (at Assets/Ludiq/Ludiq.PeekCore/Editor/Windows/Page.cs:38)

Ludiq.PeekCore.Wizard:Update() (at Assets/Ludiq/Ludiq.PeekCore/Editor/Windows/Wizard.cs:91)

UnityEditor.EditorApplication:Internal_CallUpdateFunctions() (at C:/buildslave/unity/build/Editor/Mono/EditorApplication.cs:303)

Unity Version:
2019.2.18
Peek Version:
1.1.6

Also, want to let you know that the asset I've deleted, which caused this Peek problem, had missing "#if UNITY_EDITOR" and "#endif" in it's scripts. It did not let me build my project hence I've deleted it. Dev told me I can easily fix this problem by adding those things, it did fix the problem, and the next day dev updated the asset 😊

+1
Working on Fix

Hi Crystalius,

Thanks for the bug report. I can see why that would be happening. I'll investigate how to fix this; I might require some assistance from the Odin team to know how to properly handle unknown serialization data error recovery. 

As a workaround, in the mean time, you can delete the Ludiq.PeekCore.ProjectSettings.asset file under Ludiq.Generated. It will reset your Peek project settings, but it should get rid of the error/warning.