RFR: 8266749: AArch64: Backtracing broken on PAC enabled systems [v3]
Gerard Ziemski
gziemski at openjdk.java.net
Wed May 26 15:53:15 UTC 2021
On Wed, 26 May 2021 10:05:36 GMT, Alan Hayward <github.com+4146708+a74nh at openjdk.org> wrote:
> > Why can't we just add the **assert** to the **frame()** constructor instead?
>
> > Would it not make more sense to strip the `sender_pc()` ? Don't all users expect it to be stripped?
>
> I'll try both these see which is the better option (one probably counteracts the other).
>
> > I don't think that's correct description of current PAC state on macos11
> > if binary is of type arm64e then it has pac enabled and it works. (most of system binaries are already arm64e, also the kernel and kernel extensions are arm64e already)
> > To be able to test your own arm64e binary one need to add to boot-args ( https://developer.apple.com/documentation/driverkit/debugging_and_testing_system_extensions?language=objc ) -arm64e_preview_abi, otherwise the kernel won't allow custom arm64e app to start.
> > But, there is one thing, the shared library cache is arm64e only ( check folder /System/Library/dyld), and all of few remaining dylibs ( check any in /usr/lib) is arm64e only ( plus x86_64). arm64 apps use arm64e libs.
> > All of these arm64e libs use PAC and it works ( not disabled/NOP-ed), as a result we had a bug recently - https://bugs.openjdk.java.net/browse/JDK-8267235
> > jvm probably needs to sanitize any pointer coming from native system libs.
>
> Much better description than I gave, thanks :)
Thank you from me too. Also thank you for the **-arm64e_preview_abi** boot argument link.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4029
More information about the hotspot-dev
mailing list