RFR: 8284877: Check type compatibility before looking up method from receiver's vtable
Yi Yang
yyang at openjdk.java.net
Thu Apr 14 10:47:32 UTC 2022
Hi, can I have a review for this enhancement? This patch adds type compatibility check before method lookup for robustness. In some internal cases, serialization framework may improperly generate an object of wrong type, which leads JVM randomly crashes during method resolution.
For example:
invokevirtual selected method: receiver-class:java.util.ArrayList, resolved-class:com.taobao.forest.domain.util.LongMapSupportArrayList, resolved_method:com.taobao.forest.domain.util.LongMapSupportArrayList.toMap()Ljava/util/Map;, selected_method:0x458, vtable_index:56#
The type of receiver is ArrayList, while the resolved method is LongMapSupportArrayList.toMap. VM attempts to select method as if looking up from receiver's vtable via vtable index of resolved method, an invalid method would be selected, thus causing some strange crashes.
I think it's reasonable to add type compatibility check before method lookup. If such an incompatible call is found, JVM could throw an exception instead.
-------------
Commit messages:
- 8284877: Check type compatibility before looking up method from receiver's vtable
Changes: https://git.openjdk.java.net/jdk/pull/8241/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8241&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8284877
Stats: 9 lines in 1 file changed: 9 ins; 0 del; 0 mod
Patch: https://git.openjdk.java.net/jdk/pull/8241.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/8241/head:pull/8241
PR: https://git.openjdk.java.net/jdk/pull/8241
More information about the hotspot-runtime-dev
mailing list