-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Runtime crashing on startup on emulated x64-on-ARM64 Windows #100425
Comments
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label. |
@v-ainigao is this a regression from .NET9 Preview 2? |
@elinor-fung @agocke since this appears to be a host crash |
@v-ainigao do you have a dump you could share? Do other operations - for example Since |
This issue does not repro with previous versions of net9preview3 and .net9preview2. |
This is the latest .net9preview3 x64 SDK from GitHub today running on a newly built ARM64OS. |
The screenshot shows
The main thread is waiting to suspend the runtime for a GC:
@dotnet/dotnet-diag I can't seem to get sos working for the dump. This is x64 dotnet running on arm64 Windows. The identified target architecture 0xa641 isn't listed as an IMAGE_FILE_MACHINE value - any ideas?
|
@marcpopMSFT is this blocking .NET 9 Preview 3 release? It is a regression from Preview 2. |
@richaverma1 do other scenarios work (ie build, running an app with dotnet, etc)? since it's the host crashing and Elinor appears blocked analyzing the dump because of an unrelated issue, not sure how to tell how critical this is without knowing what additional scenarios might be impacted. |
If it's limited to workload installs when running the x64 sdk on an arm64 machine, I wouldn't make it a blocker. |
@marcpopMSFT it is failing on the basic scenario of creating a console app. But on ARM64 OS with x64 SDK. Not sure how many customers use that config. |
Thank you for letting us know. Is there any update on that? @mikem8361 |
We haven't had a chance to make any progress on this PR/arm64ec support. |
@marcpopMSFT I wouldn't say this is blocking but if it's shipping like this we should probably create a known issue for it. |
Today I reproduced this issue again on the latest .net9.0.100-preview.4.24215.10(runtime-9.0.0-preview.4.24211.4)x64 SDK on ARM64OS, so I reopened it, can you help me take a look? @marcpopMSFT |
I was able to reproduce the issue with an x64 sdk running on Windows arm64. The issue does not reproduce |
Windows developers helped me to investigate the issue. It turns out that it is a windows bug that is fixed in 24H2. So, the recommendation is to update Windows to this version. We will also add a workaround to runtime that will prevent using the Windows API with the bug when running x64 emulated on arm64 Windows on older Windows versions. But please note that this workaround may have some performance consequences in GC runtime suspension time in case of a lot of threads. |
Thank you for your explanation, but I can't create a 24h2 machine on Azure yet. |
In ARM64 windows older than 24H2, the special APC is broken when running x64 emulation. The callback that gets invoked doesn't get an argument with correct CONTEXT of the interrupted location. This change disables using the special APC for runtime suspension when running on the affected Windows versions. Close dotnet#100425
) * Workaround broken special APC when running x64 on arm64 windows In ARM64 windows older than 24H2, the special APC is broken when running x64 emulation. The callback that gets invoked doesn't get an argument with correct CONTEXT of the interrupted location. This change disables using the special APC for runtime suspension when running on the affected Windows versions. Close #100425 * Make the same fix for NativeAOT
…et#102333) * Workaround broken special APC when running x64 on arm64 windows In ARM64 windows older than 24H2, the special APC is broken when running x64 emulation. The callback that gets invoked doesn't get an argument with correct CONTEXT of the interrupted location. This change disables using the special APC for runtime suspension when running on the affected Windows versions. Close dotnet#100425 * Make the same fix for NativeAOT
Repro steps:
dotnet new console
Expected Result:
Project can be created successfully.
Actual Result:
Creating project or build fails and will be blocking.
dotnet --info
.NET SDK:
Version: 9.0.100-preview.3.24163.23
Commit: 33549194e2
Workload version: 9.0.100-manifests.42eb89a3
MSBuild version: 17.10.0-preview-24162-02+0326fd7c9
Runtime Environment:
OS Name: Windows
OS Version: 10.0.22631
OS Platform: Windows
RID: win-x64
Base Path: C:\Program Files\dotnet\x64\sdk\9.0.100-preview.3.24163.23\
.NET workloads installed:
There are no installed workloads to display.
Host:
Version: 9.0.0-preview.3.24162.24
Architecture: x64
Commit: e4fceb3
.NET SDKs installed:
9.0.100-preview.3.24163.23 [C:\Program Files\dotnet\x64\sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 9.0.0-preview.3.24162.20 [C:\Program Files\dotnet\x64\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 9.0.0-preview.3.24162.24 [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 9.0.0-preview.3.24162.12 [C:\Program Files\dotnet\x64\shared\Microsoft.WindowsDesktop.App]
Other architectures found:
arm64 [C:\Program Files\dotnet]
x86 [C:\Program Files (x86)\dotnet]
registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation]
Environment variables:
Not set
global.json file:
Not found
Learn more:
https://aka.ms/dotnet/info
Download .NET:
https://aka.ms/dotnet/download
The text was updated successfully, but these errors were encountered: