RFR(xs): 8205141: runtime/exceptionMsgs/ArrayStoreException/ArrayStoreExceptionTest.java failed with "assert(k->is_objArray_klass()) failed: cast to ObjArrayKlass"
thomas.stuefe at gmail.com
Tue Jun 19 07:41:25 UTC 2018
On Tue, Jun 19, 2018 at 9:32 AM, David Holmes <david.holmes at oracle.com> wrote:
> Hi Thomas,
> On 19/06/2018 5:26 PM, Thomas Stüfe wrote:
>> Hi all,
>> may I have reviews for this fix please:
>> Goetz' new ArrayStoreExceptionTest uncovered a problem if the caller
>> erroneously feeds an jobject as jobjectArray parameter to
>> The current behavior is to randomly either return a misleading
>> ArrayIndexOOBE, or to assert (debug) or to overwrite some memory
>> (release) and potentially crash.
>> I know that feeding an jobject as jobjectArray is of course all wrong
>> and UB I still think it makes in this case sense to catch that and
>> throw a correct ArrayStoreException instead of the current behavior.
> Sorry but I disagree. JNI deliberately does not perform this kind of input
> parameter checking for performance reasons. It is up to the programmer to
> always pass correctly typed arguments.
> If we were to check this then it would be an IllegalArgumentException IMO
> anyway. But we don't check it.
Yes, I expected that. Then I will just remove the offending test
methods. I'll post an update.
>> Now, SetObjectArrayElement will throw:
>> - "xxx is not an array" for types which are not even an array
>> - "xxx is not an object array" for primitive arrays.
>> Thank you,
More information about the hotspot-runtime-dev