dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
15.47k stars 4.76k forks source link

[mono] Failure at `System.Reflection.Emit.DynamicMethod.CreateDelegate`, attempting to JIT compile method while in aot-only mode. #104431

Open matouskozak opened 5 months ago

matouskozak commented 5 months ago

Build Information

Build: https://dev.azure.com/dnceng-public/public/_build/results?buildId=789085 Build error leg or test failing: iOS.Simulator.LambdaCompilerAot.Test Affected CI: maccatalyst_[x64/arm64]_release_allsubsets_mono, iossimulator_x64_release_allsubsets_mono (runtime-extra-platforms) Range of commits: https://github.com/dotnet/runtime/compare/42ade705...ceb0a16a

Stack trace example from iOSSimulator job:

2024-07-03 19:34:42.254 I  iOS.Simulator.LambdaCompilerAot.Test[455:11b63a] Unhandled managed exceptions:
Attempting to JIT compile method '(wrapper dynamic-method) string object:lambda_method1 (System.Runtime.CompilerServices.Closure)' while running in aot-only mode. See https://learn.microsoft.com/xamarin/ios/internals/limitations for more information.
 (System.ExecutionEngineException)
   at System.Delegate.CreateDelegate(Type , Object , MethodInfo , Boolean , Boolean )
   at System.Delegate.CreateDelegate(Type , Object , MethodInfo , Boolean )
   at System.Delegate.CreateDelegate(Type , Object , MethodInfo )
   at System.Reflection.Emit.DynamicMethod.CreateDelegate(Type , Object )
   at System.Linq.Expressions.Compiler.LambdaCompiler.CreateDelegate()
   at System.Linq.Expressions.Compiler.LambdaCompiler.Compile(LambdaExpression )
   at System.Linq.Expressions.Expression`1[[System.Func`1[[System.String, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Compile()
   at System.Linq.EnumerableExecutor`1[[System.String, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Execute()
   at System.Linq.EnumerableQuery`1[[System.String, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].System.Linq.IQueryProvider.Execute[String](Expression )
   at System.Linq.Queryable.First[String](IQueryable`1 source)
   at Program.Main(String[] )
   at Program.<Main>(String[] )
2024-07-03 19:34:42.255 I  iOS.Simulator.LambdaCompilerAot.Test[455:11b63a] DOTNET.APP_EXIT_CODE: 1
[15:14:11] dbug: Attempting to JIT compile method '(wrapper dynamic-method) void object:WriteArrayOfintToXml (System.Runtime.Serialization.XmlWriterDelegator,object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract)' while running in aot-only mode. See https://learn.microsoft.com/xamarin/ios/internals/limitations for more information.
[15:14:11] dbug: (System.ExecutionEngineException)
[15:14:11] dbug: at System.Delegate.CreateDelegate(Type , Object , MethodInfo , Boolean , Boolean )
[15:14:11] dbug: at System.Delegate.CreateDelegate(Type , Object , MethodInfo , Boolean )
[15:14:11] dbug: at System.Delegate.CreateDelegate(Type , Object , MethodInfo )
[15:14:11] dbug: at System.Reflection.Emit.DynamicMethod.CreateDelegate(Type )
[15:14:11] dbug: at System.Runtime.Serialization.CodeGenerator.EndMethod()
[15:14:11] dbug: at System.Runtime.Serialization.XmlFormatWriterGenerator.CriticalHelper.GenerateCollectionWriter(CollectionDataContract )
[15:14:11] dbug: at System.Runtime.Serialization.XmlFormatWriterGenerator.GenerateCollectionWriter(CollectionDataContract )
[15:14:11] dbug: at System.Runtime.Serialization.DataContracts.CollectionDataContract.CreateXmlFormatWriterDelegate()
[15:14:11] dbug: at System.Runtime.Serialization.DataContracts.CollectionDataContract.get_XmlFormatWriterDelegate()
[15:14:11] dbug: at System.Runtime.Serialization.DataContracts.CollectionDataContract.WriteXmlValue(XmlWriterDelegator , Object , XmlObjectSerializerWriteContext )
[15:14:11] dbug: at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle)
[15:14:11] dbug: at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, Boolean verifyKnownType, RuntimeTypeHandle declaredTypeHandle, Type declaredType)
[15:14:11] dbug: at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithXsiTypeAtTopLevel(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle originalDeclaredTypeHandle, Type graphType)
[15:14:11] dbug: at System.Runtime.Serialization.DataContractSerializer.InternalWriteObjectContent(XmlWriterDelegator , Object , DataContractResolver )
[15:14:11] dbug: at System.Runtime.Serialization.DataContractSerializer.InternalWriteObject(XmlWriterDelegator , Object , DataContractResolver )
[15:14:11] dbug: at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator , Object , DataContractResolver )
[15:14:11] dbug: at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator , Object )
[15:14:11] dbug: at System.Runtime.Serialization.DataContractSerializer.WriteObject(XmlWriter , Object )
[15:14:11] dbug: at Program.Main(String[] )
[15:14:11] dbug: at Program.<Main>(String[] )

Error Message

Fill the error message using step by step known issues guidance.

{
  "ErrorPattern": "at System.Reflection.Emit.DynamicMethod.CreateDelegate",
  "BuildRetry": false,
  "ExcludeConsoleLog": false
}

Known issue validation

Build: :mag_right: https://dev.azure.com/dnceng-public/public/_build/results?buildId=789085 Error message validated: [at System.Reflection.Emit.DynamicMethod.CreateDelegate] Result validation: :white_check_mark: Known issue matched with the provided build. Validation performed at: 8/27/2024 9:26:47 AM UTC

Report

Build Definition Test Pull Request
881982 dotnet/runtime iOS.Simulator.XmlFormatWriterGeneratorAot.Test.WorkItemExecution
878000 dotnet/runtime iOS.Simulator.LambdaCompilerAot.Test.WorkItemExecution
876794 dotnet/runtime iOS.Simulator.XmlFormatWriterGeneratorAot.Test.WorkItemExecution dotnet/runtime#104097

Summary

24-Hour Hit Count 7-Day Hit Count 1-Month Count
0 1 3
dotnet-policy-service[bot] commented 5 months ago

Tagging subscribers to 'os-ios': @vitek-karas, @kotlarmilos, @ivanpovazan, @steveisok, @akoeplinger See info in area-owners.md if you want to be subscribed.

dotnet-policy-service[bot] commented 5 months ago

Tagging subscribers to 'os-maccatalyst': @vitek-karas, @kotlarmilos, @ivanpovazan, @steveisok, @akoeplinger See info in area-owners.md if you want to be subscribed.

matouskozak commented 5 months ago

Could it be introduced by https://github.com/dotnet/runtime/pull/103777 @steveisok or does the change only affected NAOT?

steveisok commented 5 months ago

Could it be introduced by https://github.com/dotnet/runtime/pull/103777 @steveisok or does the change only affected NAOT?

It only impacted nativeaot. It was really specific. If you had the mono library builder workload installed and you tried to build a static/shared library with nativeaot, you couldn't.