[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