VM_GetOrSetLocal::doit() blindly loads/stores a value of requested type without checking slot type first.
GetLocal* documenation says that JVMTI_ERROR_TYPE_MISMATCH should be returned if variable type differs from requested.
It manifests as an assertion failure in debug builds:
assert(type() == T_OBJECT) failed: type check
StackValue::get_obj() const+0x47
StackValueCollection::obj_at(int) const+0x23
VM_GetOrSetLocal::doit()+0x572
GetLocal* documenation says that JVMTI_ERROR_TYPE_MISMATCH should be returned if variable type differs from requested.
It manifests as an assertion failure in debug builds:
assert(type() == T_OBJECT) failed: type check
StackValue::get_obj() const+0x47
StackValueCollection::obj_at(int) const+0x23
VM_GetOrSetLocal::doit()+0x572
- relates to
-
JDK-8213525 new unit test GetLocalVariable/LocalVars is not stable
-
- Resolved
-
-
JDK-8223718 Checks in check_slot_type_no_lvt() should be always executed
-
- Resolved
-
-
JDK-4300412 GetLocal*/SetLocal* functions do not track TYPE_MISMATCH error
-
- Closed
-
-
JDK-8169467 GetLocalInstance returns JVMTI_ERROR_TYPE_MISMATCH (rather than JVMTI_ERROR_INVALID_SLOT) on static method
-
- Resolved
-