Hi Emanuele, On Wed, 17 Jun 2026, Emanuele Rocca wrote:
On systems with FEAT_FPAC support, indeed I could reproduce the behavior you mentioned: EXCEPTION_ILLEGAL_INSTRUCTION printed out repeatedly, immediate failure.
Thanks for testing and looking into this, I appreciate it a lot!
On systems with pointer authentication but without FEAT_FPAC, the issue is more subtle: things seem to more or less work, but explorer.exe maxes out one CPU core. Also, running simple stuff like `wine cmd` does not really work.
This issue here can also be observed by trying to run a test app that does unwinding. E.g. https://martin.st/temp/hello-exception-aarch64.exe is a build of https://github.com/mstorsjo/llvm-mingw/blob/master/test/hello-exception.cpp, built with an llvm-mingw toolchain. This program fails when throwing a C++ exception, if Wine is built with CROSSCFLAGS="-mbranch-protection=standard", like it is in the Debian packages.
But anyway, this part is fixed by the previously referenced patch.
For anyone who wants to follow along and build a patched wine, the version currently in sid (10.0~repack-12) does not build for several reasons. First you have to install a bunch of unicode-related packages from stable due to https://bugs.debian.org/1125336 # apt install unicode-data=15.1.0-1 unicode-idna=16.0.0-1 unicode-cldr-core=46-0.1 Then the make_vulkan bits fail due to the XML files shipped by libvulkan being too new. Again installing stuff from stable helps: # apt install libvulkan-dev=1.4.309.0-1 libvulkan1=1.4.309.0-1 The patch disable/duplicate-nls.patch does not seem to apply, I've commented it out in debian/patch/series. Then later the build fails due to NLS files not being installed anywhere. Out of time, I just added the following to debian/wine-common.install to carry on with the build: usr/* usr/share/wine/nls
Thanks for these hints for how to fix rebuilding it! Yeah due to troubles with rebuilding the Debian package I didn't get to testing the final fix in the full context.
With these hints, I was able to rebuild the package on Debian sid nicely, and reproduce the remaining problem.
I built a local version of wine with your patch, and it does seem to fix the issue for systems without FEAT_FPAC. I don't see explorer.exe maxing out cores, and `wine cmd` works fine. However, on systems with FEAT_FPAC I still get illegal instructions.
Actually, it turns out that this second issue isn't related to PAC or FPAC at all - but related to BTI.
This issue is actually fixed in latest upstream Wine already, in [1]. Unfortunately, this fix doesn't apply cleanly on Wine 10.0, but it's easy enough to backport. I tested a backport of it, which I pushed at [2].
With these fixes, the packages now run fine on both a Cortex A720, and on Neoverse V2 (Graviton 4), where I previously hit the immediate EXCEPTION_ILLEGAL_INSTRUCTION.
[1] https://gitlab.winehq.org/wine/wine/-/commit/da0b77340302d90b6b11ef030a8861fdfe728f48 [2] https://gitlab.winehq.org/mstorsjo/wine/-/commit/64c22e090351fd37c6b4f38ce5235d4c9c1bdaa2 // Martin

