RFR(XS) 8252593: [TESTBUG] serviceability/jvmti/GetLocalVariable/GetLocalWithoutSuspendTest.java failed with JVMTI_ERROR_INVALID_SLOT
David Holmes
david.holmes at oracle.com
Wed Sep 2 22:24:02 UTC 2020
Hi Richard,
On 3/09/2020 12:37 am, Reingruber, Richard wrote:
> Hi,
>
> please help review this fix for a TESTBUG in
> serviceability/jvmti/GetLocalVariable/GetLocalWithoutSuspendTest.java
>
> Webrev: http://cr.openjdk.java.net/~rrich/webrevs/8252593/webrev.0/
> Bug: https://bugs.openjdk.java.net/browse/JDK-8252593
>
> With this change the JVMTI test agent silently accepts
> JVMTI_ERROR_INVALID_SLOT as result of a JVMTI GetLocalObject() call.
> The target frame of the call varies because the target thread is running. In
> rare cases it might not be one of the many frames of
> GetLocalWithoutSuspendTest.recursiveMethod() as intended but the frame
> of a static method without parameters which the target thread might call after
> returning from all the recursive calls. This would result in JVMTI_ERROR_INVALID_SLOT.
>
> Anyway JVMTI_ERROR_INVALID_SLOT has to be expected and should be silently
> ignored.
>
> Furthermore I have corrected the type of the parameter waitCycles of
> Java_GetLocalWithoutSuspendTest_notifyAgentToGetLocal() to be jint. Now it
> matches the declaration in GetLocalWithoutSuspendTest.java.
Hmmm ... could this mean that the attempt to read a 64-bit value where
only a 32-bit value had actually been pushed as a parameter, could
result in reading a junk value that sometimes caused the loop to exit
immediately?
David
> Thanks, Richard.
>
More information about the serviceability-dev
mailing list