nasser / Magic.Unity-Example

An example Magic.Unity project
6 stars 0 forks source link

Cannot build the project successfully on Unity 2020 LTS #1

Open guangpingmo opened 3 years ago

guangpingmo commented 3 years ago

Environment

Step

Error Message ( On Editor Console window)

IL2CPP error (no further information about what managed code was being converted is available)
Unity.IL2CPP.HashCodeCollisionException: Hash code collision on value `E1F87FF1BE1EB602314DC209A0FDCA0C089A4BC1`
Existing Item was : `System.Void <magic>clojure_core$+__0::.ctor()`
Colliding Item was : `System.Void <magic>clojure_core$/__0::.ctor()`

   at Unity.IL2CPP.HashCodeCache`1.GetUniqueHash(T value) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/HashCodeCache.cs:line 46
   at Unity.IL2CPP.Naming.NamingComponent.ForMethodInternal(MethodReference method) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/Naming/NamingComponent.cs:line 320
   at Unity.IL2CPP.Naming.NamingComponent.ForMethodNameOnly(MethodReference method) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/Naming/NamingComponent.cs:line 89
   at Unity.IL2CPP.AssemblyConversion.PrimaryCollection.Steps.Global.WarmNamingComponent.ProcessItem(GlobalPrimaryCollectionContext context, AssemblyDefinition item, Object globalState) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/AssemblyConversion/PrimaryCollection/Steps.Global/WarmNamingComponent.cs:line 36
   at Unity.IL2CPP.AssemblyConversion.Steps.Base.GlobalScheduledStepAction`2.ProcessAllItems(TWorkerContext context, ReadOnlyCollection`1 items) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/AssemblyConversion/Steps.Base/GlobalScheduledStepAction.cs:line 39
   at Unity.IL2CPP.AssemblyConversion.Steps.Base.GlobalScheduledStepAction`2.WorkerWrapper(WorkItemData`3 workerData) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/AssemblyConversion/Steps.Base/GlobalScheduledStepAction.cs:line 30
   at Unity.IL2CPP.Contexts.Scheduling.PhaseWorkScheduler`1.WorkerLoop(Object data) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/Contexts.Scheduling/PhaseWorkScheduler.cs:line 247

Exception: IL2CPP error for type '<magic>clojure_core$/__0' in assembly '/Users/gitlab/Dev/Magic.Unity-Example-master/Temp/StagingArea/Data/Managed/clojure.core.clj.dll'
Unity.IL2CPP.HashCodeCollisionException: Hash code collision on value `D8A45E414D4E6FACCC6F3A73AB2569269D8FF303`
Existing Item was : `<magic>clojure_core$+__0`
Colliding Item was : `<magic>clojure_core$/__0`

   at Unity.IL2CPP.HashCodeCache`1.GetUniqueHash(T value) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/HashCodeCache.cs:line 46
   at Unity.IL2CPP.Naming.NamingComponent.ForTypeNameInternal(TypeReference typeReference) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/Naming/NamingComponent.cs:line 333
   at Unity.IL2CPP.Naming.NamingComponent.ForTypeNameOnly(TypeReference type) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/Naming/NamingComponent.cs:line 73
   at Unity.IL2CPP.Attributes.AttributeNamingExtensions.ForCustomAttributesCacheGenerator(INamingService naming, TypeDefinition typeDefinition) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/Attributes/AttributeNamingExtensions.cs:line 12
   at Unity.IL2CPP.Attributes.AttributeSupportCollector.Add(TypeDefinition typeDefinition) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/Attributes/AttributeSupportCollector.cs:line 59
   at Unity.IL2CPP.Attributes.AttributeSupportCollector.Collect(TypeDefinition type) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/Attributes/AttributeSupportCollector.cs:line 38
   at Unity.IL2CPP.Attributes.AttributeSupportCollector.Collect(AssemblyDefinition assembly) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/Attributes/AttributeSupportCollector.cs:line 32
   at Unity.IL2CPP.Attributes.AttributeSupportCollector.Collect(MinimalContext context, AssemblyDefinition assembly) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/Attributes/AttributeSupportCollector.cs:line 26
   at Unity.IL2CPP.AssemblyConversion.PrimaryCollection.Steps.PerAssembly.AttributeSupportCollection.ProcessItem(GlobalPrimaryCollectionContext context, AssemblyDefinition item) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/AssemblyConversion/PrimaryCollection/Steps.PerAssembly/AttributeSupportCollection.cs:line 16
   at Unity.IL2CPP.AssemblyConversion.Steps.Base.ScheduledItemsStepFunc`5.WorkerWrapper(WorkItemData`3 workerData) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/AssemblyConversion/Steps.Base/ScheduledItemsStepFunc.cs:line 43
   at Unity.IL2CPP.Contexts.Scheduling.PhaseWorkScheduler`1.ContinueWithResultsWorkItem`4.InvokeWorker(Object context, Int32 uniqueId) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/Contexts.Scheduling/PhaseWorkScheduler.cs:line 493
   at Unity.IL2CPP.Contexts.Scheduling.PhaseWorkScheduler`1.BaseContinueWorkItem`2.Invoke(Object context, Int32 uniqueId) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/Contexts.Scheduling/PhaseWorkScheduler.cs:line 404
   at Unity.IL2CPP.Contexts.Scheduling.PhaseWorkScheduler`1.WorkerLoop(Object data) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP/Contexts.Scheduling/PhaseWorkScheduler.cs:line 247
UnityEditorInternal.Runner.RunProgram (UnityEditor.Utils.Program p, System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:129)
UnityEditorInternal.Runner.RunManagedProgram (System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser, System.Action`1[T] setupStartInfo) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:65)
UnityEditorInternal.IL2CPPBuilder.RunIl2CppWithArguments (System.Collections.Generic.List`1[T] arguments, System.Action`1[T] setupStartInfo) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:804)
UnityEditorInternal.IL2CPPBuilder.ConvertPlayerDlltoCpp (UnityEditor.Il2Cpp.Il2CppBuildPipelineData data) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:773)
UnityEditorInternal.IL2CPPBuilder.Run () (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:599)
UnityEditorInternal.IL2CPPUtils.RunIl2Cpp (System.String stagingAreaData, UnityEditorInternal.IIl2CppPlatformProvider platformProvider, System.Action`1[T] modifyOutputBeforeCompile, UnityEditor.RuntimeClassRegistry runtimeClassRegistry) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:276)
DesktopStandalonePostProcessor.RunIL2CPP (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditorInternal.IIl2CppPlatformProvider il2cppPlatformProvider, System.Collections.Generic.List`1[T] cppPlugins) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:256)
UnityEditor.OSXStandalone.OSXDesktopStandalonePostProcessor.RunIL2CPP (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditorInternal.IIl2CppPlatformProvider il2cppPlatformProvider, System.Collections.Generic.List`1[T] cppPlugins) (at /Users/bokken/buildslave/unity/build/PlatformDependent/OSXPlayer/Extensions/Managed/OSXDesktopStandalonePostProcessor.cs:608)
DesktopStandalonePostProcessor.SetupStagingArea (UnityEditor.Modules.BuildPostProcessArgs args, System.Collections.Generic.HashSet`1[T] filesToNotOverwrite) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:232)
DesktopStandalonePostProcessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:42)
Rethrow as BuildFailedException: Exception of type 'UnityEditor.Build.BuildFailedException' was thrown.
DesktopStandalonePostProcessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:60)
UnityEditor.OSXStandalone.OSXDesktopStandalonePostProcessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) (at /Users/bokken/buildslave/unity/build/PlatformDependent/OSXPlayer/Extensions/Managed/OSXDesktopStandalonePostProcessor.cs:659)
UnityEditor.Modules.DefaultBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditor.BuildProperties& outProperties) (at /Users/bokken/buildslave/unity/build/Editor/Mono/Modules/DefaultBuildPostprocessor.cs:29)
UnityEditor.PostprocessBuildPlayer.Postprocess (UnityEditor.BuildTargetGroup targetGroup, UnityEditor.BuildTarget target, System.String installPath, System.String companyName, System.String productName, System.Int32 width, System.Int32 height, UnityEditor.BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport report) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:337)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189)

Build completed with a result of 'Failed' in 19 seconds (18747 ms)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189)

UnityEditor.BuildPlayerWindow+BuildMethodException: 3 errors
  at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (UnityEditor.BuildPlayerOptions options) [0x002be] in /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPlayerWindowBuildMethods.cs:190 
  at UnityEditor.BuildPlayerWindow.CallBuildMethods (System.Boolean askForBuildLocation, UnityEditor.BuildOptions defaultBuildOptions) [0x00080] in /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPlayerWindowBuildMethods.cs:95 
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189)
nasser commented 3 years ago

the key lines here are

Unity.IL2CPP.HashCodeCollisionException: Hash code collision on value `E1F87FF1BE1EB602314DC209A0FDCA0C089A4BC1`
Existing Item was : `System.Void <magic>clojure_core$+__0::.ctor()`
Colliding Item was : `System.Void <magic>clojure_core$/__0::.ctor()`

it looks like the two clojure functions clojure.core/+ and clojure.core// are hashing to the same value in IL2CPP, which means the hashing function they are using is not great. this might be related to this bug. can you try this build in more recent Unity versions to see if it persists? we could change the way we name our functions internally if IL2CPP has hashing problems then we are limited in what we can do to mitigate the issue.