Skip to content

Emulated x86 and x64 .NET 7 on ARM64 can't create new project #71856

@marswe

Description

@marswe

Description

The ARM64 version of .NET 7 preview 5 seems to work well, but even following the Hello World instructions does not work for the x86 and x64 versions when running on ARM64.

The x86 version hits an error and bails out when trying to create a new console app:

Process terminated. Infinite recursion during resource lookup within System.Private.CoreLib. This may be a bug in System.Private.CoreLib, or potentially in certain extensibility points such as assembly resolve events or CultureInfo names. Resource name: Arg_AccessViolationException

The x64 version instead hangs on running dotnet restore (with a CPU core spinning endlessly):

The template "Console App" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on C:\Users\Marc\source\repos\MyAppx64\MyAppx64.csproj...

Reproduction Steps

  1. Install x86 or x64 dotnet 7 sdk on Windows on Arm
  2. Confirm the architecture of dotnet with dotnet --info
  3. dotnet new console -o MyApp -f net7.0

Expected behavior

Expected behavior is documented at https://dotnet.microsoft.com/en-us/learn/dotnet/hello-world-tutorial/create

Actual behavior

The x86 version:

C:\Users\Marc\source\repos>dotnet new console -o MyAppX86 -f net7.0
The template "Console App" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on C:\Users\Marc\source\repos\MyAppX86\MyAppX86.csproj...
Process terminated. Infinite recursion during resource lookup within System.Private.CoreLib. This may be a bug in System.Private.CoreLib, or potentially in certain extensibility points such as assembly resolve events or CultureInfo names. Resource name: Arg_AccessViolationException
at System.Environment.FailFast(System.String)
at System.SR.InternalGetResourceString(System.String)
at System.SR.GetResourceString(System.String)
at System.AccessViolationException..ctor()
at System.SR.InternalGetResourceString(System.String)
at System.SR.GetResourceString(System.String)
at System.AccessViolationException..ctor()
at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadManifestReader.ReadWorkloadPack(Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadPackId, Utf8JsonStreamReader ByRef)
at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadManifestReader.ReadWorkloadPacks(Utf8JsonStreamReader ByRef)
at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadManifestReader.ReadWorkloadManifest(System.String, System.String, LocalizationCatalog, Utf8JsonStreamReader ByRef)
at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadManifestReader.ReadWorkloadManifest(System.String, System.IO.Stream, System.IO.Stream, System.String)
at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver.LoadManifestsFromProvider(Microsoft.NET.Sdk.WorkloadManifestReader.IWorkloadManifestProvider)
at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver.Create(Microsoft.NET.Sdk.WorkloadManifestReader.IWorkloadManifestProvider, System.String, System.String, System.String)
at Microsoft.NET.Sdk.WorkloadMSBuildSdkResolver.CachingWorkloadResolver.Resolve(System.String, System.String, System.String, System.String)
at Microsoft.NET.Sdk.WorkloadMSBuildSdkResolver.WorkloadSdkResolver.Resolve(Microsoft.Build.Framework.SdkReference, Microsoft.Build.Framework.SdkResolverContext, Microsoft.Build.Framework.SdkResultFactory)
at Microsoft.Build.BackEnd.SdkResolution.SdkResolverService.TryResolveSdkUsingSpecifiedResolvers(System.Collections.Generic.IList1<Microsoft.Build.Framework.SdkResolver>, Int32, Microsoft.Build.Framework.SdkReference, Microsoft.Build.BackEnd.Logging.LoggingContext, Microsoft.Build.Construction.ElementLocation, System.String, System.String, Boolean, Boolean, Microsoft.Build.BackEnd.SdkResolution.SdkResult ByRef) at Microsoft.Build.BackEnd.SdkResolution.SdkResolverService.ResolveSdkUsingResolversWithPatternsFirst(Int32, Microsoft.Build.Framework.SdkReference, Microsoft.Build.BackEnd.Logging.LoggingContext, Microsoft.Build.Construction.ElementLocation, System.String, System.String, Boolean, Boolean) at Microsoft.Build.BackEnd.SdkResolution.SdkResolverService.ResolveSdk(Int32, Microsoft.Build.Framework.SdkReference, Microsoft.Build.BackEnd.Logging.LoggingContext, Microsoft.Build.Construction.ElementLocation, System.String, System.String, Boolean, Boolean) at Microsoft.Build.BackEnd.SdkResolution.CachingSdkResolverService+<>c__DisplayClass3_0.<ResolveSdk>b__2() at System.Lazy1[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ViaFactory(System.Threading.LazyThreadSafetyMode)
at System.Lazy1[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ExecutionAndPublication(System.LazyHelper, Boolean) at System.Lazy1[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].CreateValue()
at System.Lazy1[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].get_Value() at Microsoft.Build.BackEnd.SdkResolution.CachingSdkResolverService.ResolveSdk(Int32, Microsoft.Build.Framework.SdkReference, Microsoft.Build.BackEnd.Logging.LoggingContext, Microsoft.Build.Construction.ElementLocation, System.String, System.String, Boolean, Boolean) at Microsoft.Build.BackEnd.SdkResolution.MainNodeSdkResolverService.ResolveSdk(Int32, Microsoft.Build.Framework.SdkReference, Microsoft.Build.BackEnd.Logging.LoggingContext, Microsoft.Build.Construction.ElementLocation, System.String, System.String, Boolean, Boolean) at Microsoft.Build.Evaluation.Evaluator4[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ExpandAndLoadImportsFromUnescapedImportExpressionConditioned(System.String, Microsoft.Build.Construction.ProjectImportElement, System.Collections.Generic.List1<Microsoft.Build.Construction.ProjectRootElement> ByRef, Microsoft.Build.BackEnd.SdkResolution.SdkResult ByRef, Boolean) at Microsoft.Build.Evaluation.Evaluator4[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ExpandAndLoadImports(System.String, Microsoft.Build.Construction.ProjectImportElement, Microsoft.Build.BackEnd.SdkResolution.SdkResult ByRef)
at Microsoft.Build.Evaluation.Evaluator4[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].EvaluateImportElement(System.String, Microsoft.Build.Construction.ProjectImportElement) at Microsoft.Build.Evaluation.Evaluator4[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].PerformDepthFirstPass(Microsoft.Build.Construction.ProjectRootElement)
at Microsoft.Build.Evaluation.Evaluator4[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Evaluate() at Microsoft.Build.Evaluation.Evaluator4[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Evaluate(Microsoft.Build.Evaluation.IEvaluatorData4<System.__Canon,System.__Canon,System.__Canon,System.__Canon>, Microsoft.Build.Evaluation.Project, Microsoft.Build.Construction.ProjectRootElement, Microsoft.Build.Evaluation.ProjectLoadSettings, Int32, Microsoft.Build.Collections.PropertyDictionary1<Microsoft.Build.Execution.ProjectPropertyInstance>, Microsoft.Build.BackEnd.Logging.ILoggingService, Microsoft.Build.Evaluation.IItemFactory2<System.__Canon,System.__Canon>, Microsoft.Build.Evaluation.IToolsetProvider, Microsoft.Build.Evaluation.ProjectRootElementCacheBase, Microsoft.Build.Framework.BuildEventContext, Microsoft.Build.BackEnd.SdkResolution.ISdkResolverService, Int32, Microsoft.Build.Evaluation.Context.EvaluationContext, Boolean) at Microsoft.Build.Execution.ProjectInstance.Initialize(Microsoft.Build.Construction.ProjectRootElement, System.Collections.Generic.IDictionary2<System.String,System.String>, System.String, System.String, Int32, Microsoft.Build.Execution.BuildParameters, Microsoft.Build.BackEnd.Logging.ILoggingService, Microsoft.Build.Framework.BuildEventContext, Microsoft.Build.BackEnd.SdkResolution.ISdkResolverService, Int32, System.Nullable1<Microsoft.Build.Evaluation.ProjectLoadSettings>, Microsoft.Build.Evaluation.Context.EvaluationContext) at Microsoft.Build.BackEnd.BuildRequestConfiguration+<>c__DisplayClass60_0.<LoadProjectIntoConfiguration>b__0() at Microsoft.Build.BackEnd.BuildRequestConfiguration.InitializeProject(Microsoft.Build.Execution.BuildParameters, System.Func1<Microsoft.Build.Execution.ProjectInstance>)
at Microsoft.Build.BackEnd.BuildRequestConfiguration.LoadProjectIntoConfiguration(Microsoft.Build.BackEnd.IBuildComponentHost, Microsoft.Build.Execution.BuildRequestDataFlags, Int32, Int32)
at Microsoft.Build.BackEnd.RequestBuilder+d__68.MoveNext()
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Microsoft.Build.BackEnd.RequestBuilder+d__68, Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]](d__68 ByRef)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder1[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Microsoft.Build.BackEnd.RequestBuilder+<BuildProject>d__68, Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]](<BuildProject>d__68 ByRef) at Microsoft.Build.BackEnd.RequestBuilder.BuildProject() at Microsoft.Build.BackEnd.RequestBuilder+<BuildAndReport>d__59.MoveNext() at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Microsoft.Build.BackEnd.RequestBuilder+<BuildAndReport>d__59, Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]](<BuildAndReport>d__59 ByRef) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.Build.BackEnd.RequestBuilder+<BuildAndReport>d__59, Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]](<BuildAndReport>d__59 ByRef) at Microsoft.Build.BackEnd.RequestBuilder.BuildAndReport() at Microsoft.Build.BackEnd.RequestBuilder+<RequestThreadProc>d__58.MoveNext() at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Microsoft.Build.BackEnd.RequestBuilder+<RequestThreadProc>d__58, Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]](<RequestThreadProc>d__58 ByRef) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.Build.BackEnd.RequestBuilder+<RequestThreadProc>d__58, Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]](<RequestThreadProc>d__58 ByRef) at Microsoft.Build.BackEnd.RequestBuilder.RequestThreadProc(Boolean) at Microsoft.Build.BackEnd.RequestBuilder.<StartBuilderThread>b__53_2() at System.Threading.Tasks.Task1[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].InnerInvoke()
at System.Threading.Tasks.Task+<>c.<.cctor>b__273_0(System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef, System.Threading.Thread)
at System.Threading.Tasks.Task.ExecuteEntry()
at System.Threading.Tasks.TaskScheduler.TryExecuteTask(System.Threading.Tasks.Task)
at Microsoft.Build.BackEnd.RequestBuilder+DedicatedThreadsTaskScheduler.b__6_0()
at System.Threading.Thread+StartHelper.Callback(System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Threading.Thread.StartCallback()

The x64 version:

C:\Users\Marc\source\repos>dotnet new console -o MyAppx64 -f net7.0
The template "Console App" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on C:\Users\Marc\source\repos\MyAppx64\MyAppx64.csproj...

Followed by endless spinning of dotnet.exe using one core:

image

This is on a 3-core VM. On 8-core device it uses 12-15% CPU.

Regression?

This works with the released version of .NET 6.

Known Workarounds

No response

Configuration

No response

Other information

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions