Skip to content

.NET 10 RC 2: System.ExecutionEngineException: Illegal instruction: Attempted to execute an instruction code not defined by the processor. #119174

@rolfbjarne

Description

@rolfbjarne

Description

App fails with unexpected exception:

System.ExecutionEngineException: Illegal instruction: Attempted to execute an instruction code not defined by the processor.

Reproduction Steps

Download: https://microsofteur-my.sharepoint.com/:u:/g/personal/rokvin_microsoft_com/EVtFFQAfB7lDgiyfJc8z1_8BFC7vY4Vd6LftZalSUWMb8g?e=48ohxL

Run: ./introspection.app/Contents/MacOS/introspection

To build from source:

git clone https://github.com/dotnet/macios
cd macios
git checkout darc-net10.0-af994d64-8b2e-4de8-9f93-2f77e6447306
./configure --disable-all-platforms --enable-macos
make reset
make all -j8
make install -j8
make build run-bare RID=osx-x64 -C tests/introspection/dotnet/macOS

Expected behavior

Successful execution.

Actual behavior

App terminates with:

Fatal error.
System.ExecutionEngineException: Illegal instruction: Attempted to execute an instruction code not defined by the processor.
Repeated 135 times:
--------------------------------
   at System.Runtime.EH.GetClasslibException(System.Runtime.ExceptionIDs, IntPtr)
   at System.Runtime.EH.RhThrowHwEx(UInt32, ExInfo ByRef)
--------------------------------
Fatal error.
System.ExecutionEngineException: Illegal instruction: Attempted to execute an instruction code not defined by the processor.
Repeated 135 times:
--------------------------------
   at System.Runtime.EH.GetClasslibException(System.Runtime.ExceptionIDs, IntPtr)
   at System.Runtime.EH.RhThrowHwEx(UInt32, ExInfo ByRef)
--------------------------------
   at System.ModuleHandle.ResolveMethodHandle(Int32, System.RuntimeTypeHandle[], System.RuntimeTypeHandle[])
   at System.Reflection.CustomAttribute.AddCustomAttributes(ListBuilder`1<System.Object> ByRef, System.Reflection.RuntimeModule, Int32, System.RuntimeType, Boolean, ListBuilder`1<System.Object>)
   at System.RuntimeType.GetCustomAttributes(Boolean)
   at Xamarin.Tests.AvailabilityExtensions.IsAvailable(System.Reflection.ICustomAttributeProvider, Xamarin.Tests.PlatformInfo)
   at Xamarin.Tests.AvailabilityExtensions.IsAvailableOnHostPlatform(System.Reflection.ICustomAttributeProvider)
   at Introspection.ApiBaseTest.SkipDueToAttribute(System.Reflection.MemberInfo)
   at Introspection.ApiBaseTest.SkipDueToAttribute(System.Reflection.MemberInfo)
   at Introspection.ApiBaseTest.SkipDueToAttribute(System.Reflection.MemberInfo)
   at Introspection.ApiFieldTest.Skip(System.Reflection.PropertyInfo)
   at Introspection.MacApiFieldTest.Skip(System.Reflection.PropertyInfo)
   at Introspection.ApiFieldTest.AllProperties()
   at Introspection.ApiFieldTest.FieldExists()
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(System.Object, IntPtr*)
   at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
   at NUnit.Framework.Internal.Reflect.InvokeMethod(System.Reflection.MethodInfo, System.Object, System.Object[])
   at NUnit.Framework.Internal.MethodWrapper.Invoke(System.Object, System.Object[])
   at NUnit.Framework.Internal.Commands.TestMethodCommand.InvokeTestMethod(NUnit.Framework.Internal.TestExecutionContext)
   at NUnit.Framework.Internal.Commands.TestMethodCommand.RunTestMethod(NUnit.Framework.Internal.TestExecutionContext)
   at NUnit.Framework.Internal.Commands.TestMethodCommand.Execute(NUnit.Framework.Internal.TestExecutionContext)
   at NUnit.Framework.Internal.Execution.SimpleWorkItem.PerformWork()
   at NUnit.Framework.Internal.Execution.WorkItem.RunOnCurrentThread()
   at NUnit.Framework.Internal.Execution.WorkItem.Execute()
   at NUnit.Framework.Internal.Execution.MainThreadWorkItemDispatcher.Dispatch(NUnit.Framework.Internal.Execution.WorkItem)
   at NUnit.Framework.Internal.Execution.CompositeWorkItem.RunChildren()
   at NUnit.Framework.Internal.Execution.CompositeWorkItem.PerformWork()
   at NUnit.Framework.Internal.Execution.WorkItem.RunOnCurrentThread()
   at NUnit.Framework.Internal.Execution.WorkItem.Execute()
   at NUnit.Framework.Internal.Execution.MainThreadWorkItemDispatcher.Dispatch(NUnit.Framework.Internal.Execution.WorkItem)
   at NUnit.Framework.Internal.Execution.CompositeWorkItem.RunChildren()
   at NUnit.Framework.Internal.Execution.CompositeWorkItem.PerformWork()
   at NUnit.Framework.Internal.Execution.WorkItem.RunOnCurrentThread()
   at NUnit.Framework.Internal.Execution.WorkItem.Execute()
   at NUnit.Framework.Internal.Execution.MainThreadWorkItemDispatcher.Dispatch(NUnit.Framework.Internal.Execution.WorkItem)
   at NUnit.Framework.Internal.Execution.CompositeWorkItem.RunChildren()
   at NUnit.Framework.Internal.Execution.CompositeWorkItem.PerformWork()
   at NUnit.Framework.Internal.Execution.WorkItem.RunOnCurrentThread()
   at NUnit.Framework.Internal.Execution.WorkItem.Execute()
   at NUnit.Framework.Internal.Execution.MainThreadWorkItemDispatcher.Dispatch(NUnit.Framework.Internal.Execution.WorkItem)
   at NUnit.Framework.Internal.Execution.MainThreadWorkItemDispatcher.Start(NUnit.Framework.Internal.Execution.WorkItem)
   at NUnit.Framework.Api.NUnitTestAssemblyRunner.StartRun(NUnit.Framework.Interfaces.ITestListener)
   at NUnit.Framework.Api.NUnitTestAssemblyRunner+<>c__DisplayClass38_0.<RunAsync>b__0()
   at NUnit.Framework.Api.NUnitTestAssemblyRunner.WrapInNUnitCallContext(System.Action)
   at NUnit.Framework.Api.NUnitTestAssemblyRunner.RunAsync(NUnit.Framework.Interfaces.ITestListener, NUnit.Framework.Interfaces.ITestFilter)
   at NUnit.Framework.Api.NUnitTestAssemblyRunner.Run(NUnit.Framework.Interfaces.ITestListener, NUnit.Framework.Interfaces.ITestFilter)
   at MonoTouch.NUnit.UI.BaseTouchRunner.Run(NUnit.Framework.Internal.Test)
   at MonoTouch.NUnit.UI.BaseTouchRunner.Run()
   at MonoTouch.NUnit.UI.BaseTouchRunner.RunAsync()
   at MonoTouch.NUnit.UI.MacRunner+<RunTestsAsync>d__1.MoveNext()
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.__Canon, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.__Canon ByRef)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[System.__Canon, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.__Canon ByRef)
   at MonoTouch.NUnit.UI.MacRunner.RunTestsAsync(MonoTouch.NUnit.UI.TouchOptions, System.Reflection.Assembly[])
   at MonoTouch.NUnit.UI.MacRunner+<>c__DisplayClass0_1+<<MainAsync>b__0>d.MoveNext()
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.__Canon, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.__Canon ByRef)
   at MonoTouch.NUnit.UI.MacRunner+<>c__DisplayClass0_1.<MainAsync>b__0()
   at Foundation.NSActionDispatcher.Apply()
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(System.Object, IntPtr*)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(System.Object, System.Reflection.BindingFlags)
   at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
   at ObjCRuntime.Runtime.InvokeMethod(System.Reflection.MethodBase, System.Object, IntPtr)
   at ObjCRuntime.Runtime.bridge_runtime_invoke_method(MonoObject*, MonoObject*, IntPtr, IntPtr*)
   at ObjCRuntime.Messaging.void_objc_msgSend_NativeHandle_NativeHandle_bool(IntPtr, IntPtr, ObjCRuntime.NativeHandle, ObjCRuntime.NativeHandle, Byte)
   at ObjCRuntime.Messaging.void_objc_msgSend_NativeHandle_NativeHandle_bool(IntPtr, IntPtr, ObjCRuntime.NativeHandle, ObjCRuntime.NativeHandle, Byte)
   at Foundation.NSObject.InvokeOnMainThread(System.Action)
   at MonoTouch.NUnit.UI.MacRunner+<MainAsync>d__0.MoveNext()
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.__Canon, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.__Canon ByRef)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Int32, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[System.__Canon, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.__Canon ByRef)
   at MonoTouch.NUnit.UI.MacRunner.MainAsync(System.Collections.Generic.IList`1<System.String>, Boolean, System.Action`1<Int32>, System.Reflection.Assembly[])
   at Xamarin.Mac.Tests.MainClass+<Main>d__0.MoveNext()
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.__Canon, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.__Canon ByRef)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Int32, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[System.__Canon, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.__Canon ByRef)
   at Xamarin.Mac.Tests.MainClass.Main(System.String[])
   at Xamarin.Mac.Tests.MainClass.<Main>(System.String[])

Regression?

Yes, this started happening in this maestro bump: dotnet/macios#23694.

Known Workarounds

No response

Configuration

.NET 10.0.100-rc.1.25426.115 (note that this is actual RC 2 due to dotnet/dotnet#1918)

This is on macOS, using the macos workload to create a macOS app.

Other information

This only happens with x64 (either on x64 hardware, or using Rosetta on arm64), using CoreCLR.

It doesn't happen with Mono (on Mac Catalyst).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    No status

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions