- changed status to resolved
ExecutionEngineException in ios IL2CPP
Issue #198
resolved
Throw on ios device launch the app. Unity 2017.2f02 Odin 1.0.5.1 MacOS High Sierra Build ios IL2CPP.
#!
ExecutionEngineException: Attempting to call method 'Sirenix.Serialization.DictionaryFormatter`2[[System.Int16, mscorlib, Version=4.0.0.0, Culture=, PublicKeyToken=b77a5c561934e089],[StupidCircus.Unity.Schedulable`1+SchedulableState[[StupidCircus.Unity.PositionSequence, Assembly-CSharp, Version=0.0.0.0, Culture=, PublicKeyToken=null]], Assembly-CSharp, Version=0.0.0.0, Culture=, PublicKeyToken=null]]::.cctor' for which no ahead of time (AOT) code was generated.
at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters) [0x00000] in <00000000000000000000000000000000>:0
at System.Activator.CreateInstance (System.Type type, System.Boolean nonPublic) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.FormatterLocator.CreateFormatter (System.Type type, Sirenix.Serialization.ISerializationPolicy policy) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.FormatterLocator.GetFormatter (System.Type type, Sirenix.Serialization.ISerializationPolicy policy) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.FormatterLocator.GetFormatter[T] (Sirenix.Serialization.ISerializationPolicy policy) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.ComplexTypeSerializer`1[T].ReadValue (Sirenix.Serialization.IDataReader reader) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, Sirenix.Serialization.IDataReader reader) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, System.Byte[]& bytes, System.Collections.Generic.List`1[UnityEngine.Object]& referencedUnityObjects, Sirenix.Serialization.DataFormat format, Sirenix.Serialization.DeserializationContext context) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, Sirenix.Serialization.SerializationData& data, Sirenix.Serialization.DeserializationContext context, System.Boolean isPrefabData, System.Collections.Generic.List`1[T] prefabInstanceUnityObjects) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.OdinInspector.SerializedMonoBehaviour.UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize () [0x00000] in <00000000000000000000000000000000>:0
Rethrow as TypeInitializationException: The type initializer for 'Sirenix.Serialization.DictionaryFormatter<System.Int16,StupidCircus.Unity.Schedulable.SchedulableState<StupidCircus.Unity.PositionSequence>>' threw an exception.
at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters) [0x00000] in <00000000000000000000000000000000>:0
at System.Activator.CreateInstance (System.Type type, System.Boolean nonPublic) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.FormatterLocator.CreateFormatter (System.Type type, Sirenix.Serialization.ISerializationPolicy policy) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.FormatterLocator.GetFormatter (System.Type type, Sirenix.Serialization.ISerializationPolicy policy) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.FormatterLocator.GetFormatter[T] (Sirenix.Serialization.ISerializationPolicy policy) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.ComplexTypeSerializer`1[T].ReadValue (Sirenix.Serialization.IDataReader reader) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, Sirenix.Serialization.IDataReader reader) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, System.Byte[]& bytes, System.Collections.Generic.List`1[UnityEngine.Object]& referencedUnityObjects, Sirenix.Serialization.DataFormat format, Sirenix.Serialization.DeserializationContext context) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, Sirenix.Serialization.SerializationData& data, Sirenix.Serialization.DeserializationContext context, System.Boolean isPrefabData, System.Collections.Generic.List`1[T] prefabInstanceUnityObjects) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.OdinInspector.SerializedMonoBehaviour.UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize () [0x00000] in <00000000000000000000000000000000>:0
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters) [0x00000] in <00000000000000000000000000000000>:0
at System.Activator.CreateInstance (System.Type type, System.Boolean nonPublic) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.FormatterLocator.CreateFormatter (System.Type type, Sirenix.Serialization.ISerializationPolicy policy) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.FormatterLocator.GetFormatter (System.Type type, Sirenix.Serialization.ISerializationPolicy policy) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.FormatterLocator.GetFormatter[T] (Sirenix.Serialization.ISerializationPolicy policy) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.ComplexTypeSerializer`1[T].ReadValue (Sirenix.Serialization.IDataReader reader) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, Sirenix.Serialization.IDataReader reader) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, System.Byte[]& bytes, System.Collections.Generic.List`1[UnityEngine.Object]& referencedUnityObjects, Sirenix.Serialization.DataFormat format, Sirenix.Serialization.DeserializationContext context) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, Sirenix.Serialization.SerializationData& data, Sirenix.Serialization.DeserializationContext context, System.Boolean isPrefabData, System.Collections.Generic.List`1[T] prefabInstanceUnityObjects) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.OdinInspector.SerializedMonoBehaviour.UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize () [0x00000] in <00000000000000000000000000000000>:0
Sirenix.Serialization.ComplexTypeSerializer`1:ReadValue(IDataReader)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, IDataReader)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, Byte[]&, List`1&, DataFormat, DeserializationContext)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, SerializationData&, DeserializationContext, Boolean, List`1)
Sirenix.OdinInspector.SerializedMonoBehaviour:UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize()
(Filename: currently not available on il2cpp Line: -1)
InvalidOperationException: Invalid binary data stream: could not parse peeked BinaryEntryType byte '0' into a known entry type.
at Sirenix.Serialization.BinaryDataReader.PeekEntry (System.String& name) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.BinaryDataReader.ReadToNextEntry () [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.BaseDataReader.SkipEntry () [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.BinaryDataReader.ExitNode () [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.ComplexTypeSerializer`1[T].ReadValue (Sirenix.Serialization.IDataReader reader) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, Sirenix.Serialization.IDataReader reader) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, System.Byte[]& bytes, System.Collections.Generic.List`1[UnityEngine.Object]& referencedUnityObjects, Sirenix.Serialization.DataFormat format, Sirenix.Serialization.DeserializationContext context) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, Sirenix.Serialization.SerializationData& data, Sirenix.Serialization.DeserializationContext context, System.Boolean isPrefabData, System.Collections.Generic.List`1[T] prefabInstanceUnityObjects) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.OdinInspector.SerializedMonoBehaviour.UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize () [0x00000] in <00000000000000000000000000000000>:0
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, IDataReader)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, Byte[]&, List`1&, DataFormat, DeserializationContext)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, SerializationData&, DeserializationContext, Boolean, List`1)
Sirenix.OdinInspector.SerializedMonoBehaviour:UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize()
(Filename: currently not available on il2cpp Line: -1)
Entry of type "Invalid" in node "states" is missing a name.
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, IDataReader)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, Byte[]&, List`1&, DataFormat, DeserializationContext)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, SerializationData&, DeserializationContext, Boolean, List`1)
Sirenix.OdinInspector.SerializedMonoBehaviour:UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize()
(Filename: /Users/builduser/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)
InvalidOperationException: Invalid binary data stream: could not parse peeked BinaryEntryType byte '0' into a known entry type.
at Sirenix.Serialization.BinaryDataReader.PeekEntry (System.String& name) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.BinaryDataReader.ReadToNextEntry () [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.BaseDataReader.SkipEntry () [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, Sirenix.Serialization.IDataReader reader) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, System.Byte[]& bytes, System.Collections.Generic.List`1[UnityEngine.Object]& referencedUnityObjects, Sirenix.Serialization.DataFormat format, Sirenix.Serialization.DeserializationContext context) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, Sirenix.Serialization.SerializationData& data, Sirenix.Serialization.DeserializationContext context, System.Boolean isPrefabData, System.Collections.Generic.List`1[T] prefabInstanceUnityObjects) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.OdinInspector.SerializedMonoBehaviour.UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize () [0x00000] in <00000000000000000000000000000000>:0
(Filename: currently not available on il2cpp Line: -1)
Comments (8)
-
-
reporter @TorVestergaard Solved for my own types. But look like DOTween provided DLL for DG.Tweening.Ease Scan project couldn't find those types. I got this.
#! ExecutionEngineException: Attempting to call method 'Sirenix.Serialization.EnumSerializer`1[[DG.Tweening.Ease, DOTween
-
Have you scanned your project and generated an AOT dll?
-
reporter - changed status to open
-
reporter Yes I do, look like project scanner can't find enum in external DLL
-
reporter Updated this not happened only external DLL. I've tried create my own enum also get like so.
-
I have a fix for that particular issue - please send me your Odin invoice ID at tor@sirenix.net, and I will send you a build with a fix.
-
- changed status to resolved
- Log in to comment
You need to use the AOT serializaton feature that was introduced in Odin 1.0.5. Here's the manual page for it.