RFR: 8345296: AArch64: VM crashes with SIGILL when prctl is disallowed [v5]
Aleksey Shipilev
shade at openjdk.org
Mon Dec 2 18:18:40 UTC 2024
On Mon, 2 Dec 2024 17:49:01 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
>> We have caught this in some prod environments, where `prctl` is forbidden by the sandboxing mechanism. This fails the JVM, because we have the following code to check for SVE vector length:
>>
>>
>> int VM_Version::get_current_sve_vector_length() {
>> assert(VM_Version::supports_sve(), "should not call this");
>> return prctl(PR_SVE_GET_VL);
>> }
>>
>>
>> That code returns `-1` when `prctl` is disallowed, which JVM then blindly interprets as vector length, leading to `SIGILL`. I looked around other uses of `prctl` around Hotspot, and they all seem to handle the errors correctly.
>>
>> Additional testing:
>> - [x] Linux AArch64 server fastdebug, with seccomp reproducer
>> - [ ] Linux AArch64 server fastdebug, `all`
>
> Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision:
>
> Do the explicit == 0 check
I prefer not to think about these gaps, and instead test for them directly. If anyone removes `is_power_of_2` later, they would need to remember (somehow) that `== 0` case should be handled too. Explicit test is cleaner intention-wise. Let's not spend more time on this, if we can :)
-------------
PR Comment: https://git.openjdk.org/jdk/pull/22479#issuecomment-2512334746
More information about the hotspot-dev
mailing list