JDK-8209361 : [AOT] Unexpected number of references for JVMTI_HEAP_REFERENCE_CONSTANT_POOL [111-->111]: 0 (expected at least 1)
Type:Bug
Component:hotspot
Sub-Component:jvmti
Affected Version:10,11,12
Priority:P3
Status:Resolved
Resolution:Fixed
Submitted:2018-08-10
Updated:2022-06-01
Resolved:2018-09-07
The Version table provides details related to the release that this issue/RFE will be addressed.
Unresolved : Release in which this issue/RFE will be addressed. Resolved: Release in which this issue/RFE has been resolved. Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.
please check comments section for steps to reproduce
Comments
Fix request (11u)
I would like to downport this for parity with 11.0.7-oracle. Applies clean.
29-11-2019
The eventual fix was to have JVM TI treat unresolved entries to already loaded classes as if they were resolved. This covered the case where the compilers did not actually mark them as resolved and is allowed in other cases as resolution can be lazy (normal VM operation) or eager, and this acts as-if eager resolution occurred.
One slight surprise was that this exposed the self-reference that every class has in the constant pool - see JDK-8210512.
The capability that FollowReferences requres is "can_tag_objects". We could disable this capability if AOT code is present, and then the test would pass. Making AOT code resolve constant pool references seems like it would hurt performance. Perhaps we could enter "interpreter only" mode when that capability is added.
28-08-2018
The test is failing because it assumes that constant pool entries will be resolved, but the AOT code is not causing them to be resolved.
24-08-2018
ILW = Incorrect execution of compiled code (unexpected number of references), jvmti test with AOT'ed java.base and test classes, don't use AOT = HLM = P3