sentry-native icon indicating copy to clipboard operation
sentry-native copied to clipboard

ARM64 support for windows

Open cstavitsky opened this issue 2 years ago • 13 comments

(Opening on behalf of a customer)

After chatting with Arpad and Karl internally, they mentioned that Sentry on devices using ARM64 architecture (Windows) is currently untested. They mentioned testing would require buying additional specific hardware, and that there is some candidate hardware they have in mind.

Overall, this Github issue represents:

  • the request to test and confirm whether Sentry works as one would expect with ARM64 architecture.
  • (if Sentry is tested and does not work) a feature request to get it working.

cstavitsky avatar Sep 06 '23 21:09 cstavitsky

@kahest: let's talk about this in the next sync.

supervacuus avatar Sep 11 '23 15:09 supervacuus

@kahest, short update: with the 0.7.0 release we're cross-compiling crashpad for ARM64 on Windows in our CI. We fixed many build issues, and thebrowsercompany is using that version for the upcoming Windows version of Arc.

We still have no test environment, but at least we know when upstream changes (or ours) to the crashpad fork will break ARM64 builds on Windows. So, while official support is unwarranted, users who want to experiment with that option should be enabled to do so. I don't know if that is relevant to the unnamed customer.

supervacuus avatar Mar 04 '24 20:03 supervacuus

Given that Github runners are now available with Windows and Arm64, is this something that could be pushed back up the priority list? Can you test with the Github Windows on Arm runners?

DDxPlague avatar Oct 15 '24 23:10 DDxPlague

@DDxPlague thanks for reaching out, we'll discuss if we can bump prio on this

kahest avatar Oct 17 '24 19:10 kahest

While GitHub-hosted ARM64 runners for Windows are available since September 2024, they rely on so called "Partner" images. There is currently no Windows ARM64 "Partner" image available for deployment.

We are waiting for the Windows ARM64 partner-runner-image to become available, so we'll be keeping an eye on when the new Windows-ARM64 image is available by following this PR.

JoshuaMoelans avatar Apr 03 '25 08:04 JoshuaMoelans

@JoshuaMoelans It looks like that https://github.com/actions/partner-runner-images/pull/71 was merged yesterday.

We are very interested in Windows ARM64 support. In particular, running this on the Hololens.

decriptor avatar Apr 15 '25 20:04 decriptor

@decriptor

We are very interested in Windows ARM64 support. In particular, running this on the Hololens.

https://github.blog/changelog/2025-04-14-windows-arm64-hosted-runners-now-available-in-public-preview/

Any chance you could contribute this to the repo? If things are compiling properly already it might be a matter of adding the new windows-11-arm runners to CI.

EDIT: lets see what happens 😅

  • https://github.com/getsentry/sentry-native/pull/1238

bruno-garcia avatar May 13 '25 23:05 bruno-garcia

We are keeping up with the growing CI runner support for Arm64-Windows in https://github.com/getsentry/sentry-native/pull/1199 , but have run into a few bumps which still need to be solved from the runners-side.

JoshuaMoelans avatar May 15 '25 10:05 JoshuaMoelans

For folks getting here and wondering if sentry-native works on arm64, it does. We build it for arm64 on Windows and Linux on the Sentry SDK for .NET

Note that we build it with inproc transport and not breakpad or crashpad.

Adding support here means adding the full CI on arm64 which is more challenging due to some other steps like testing and those dependencies. See for more info:

  • #1199

bruno-garcia avatar May 29 '25 00:05 bruno-garcia

@bruno-garcia
I want to build the Sentry.dll and crashpad_handler for arm64. My build systems are x64. Can you help me on the exact steps that need to be used for the same? I have relevant toolset and other things already in place to build arm64 binaries in x64 systems, just want to know the steps for this repo, that you followed to build arm64 Thanks

iamroyindia avatar Aug 28 '25 15:08 iamroyindia

Hi @iamroyindia,

The basic workflow requires the use of a toolchain file, although this proposal is only one of multiple you could use:

cmake -B cmake-build-arm64 -DCMAKE_TOOLCHAIN_FILE="external/crashpad/cmake/toolchains/win_arm64.cmake"
cmake --build cmake-build-arm64 --config RelWithDebInfo -- /p:Platform=ARM64

This CMake toolchain script specifies the CMAKE_GENERATOR_PLATFORM, and if that is set in the toolchain file, it acts differently from adding the -A config parameter. This is why it is necessary to specify the platform during the build phase as well.

supervacuus avatar Aug 29 '25 06:08 supervacuus

Thanks @supervacuus for the response. I tried the command you mentioned however I am getting this error, any idea how to resolve this?

Image

iamroyindia avatar Sep 10 '25 08:09 iamroyindia

Thanks @supervacuus for the response. I tried the command you mentioned however I am getting this error, any idea how to resolve this?

It appears that you haven't recursively checked out all sub-projects when working with our Git repository. Please either use

git submodule update --init --recursive

as explained in the README or even more conveniently, use our release zip, which already contains all subdirectories and doesn't require any Git interaction.

supervacuus avatar Sep 10 '25 11:09 supervacuus