[jdk17] RFR: 8269697: JNI_GetPrimitiveArrayCritical() should not accept object array [v2]
Aleksey Shipilev
shade at openjdk.java.net
Thu Jul 1 08:49:02 UTC 2021
On Thu, 1 Jul 2021 00:34:26 GMT, Zhengyu Gu <zgu at openjdk.org> wrote:
>> GetPrimitiveArrayCritical() is supposed to only be used with primitive array types, but nothing prevents current implementation from accepting object arrays (please see attached test case in bug).
>>
>> My purposed fix is not very friendly, it crashes JVM if a none primitive array is passed in, but I am sure what to expect in this scenario.
>>
>> Specification people, please comment. Thanks!
>
> Zhengyu Gu has updated the pull request incrementally with one additional commit since the last revision:
>
> Kim's comment
Hold on. This introduces the behavioral change _for the worse_, right? More specifically, the current callers-with-object-array would now get `TypeArrayKlass::cast()`-ed to improper class with unknown consequences. _Hopefully_ it would be a JVM crash, but it might as well be incorrect execution. Old code would execute fine with most GCs (= the ones using GCLocker). Would it be saner to do a copy of object array if such a request is detected?
I believe it warrants a CSR discussion, and therefore postponement to JDK 18.
-------------
PR: https://git.openjdk.java.net/jdk17/pull/185
More information about the hotspot-dev
mailing list