On 6/28/19 2:09 PM, serguei.spit...@oracle.com wrote:
Please, review a test bug fix for:
https://bugs.openjdk.java.net/browse/JDK-8226917

Webrev:
http://cr.openjdk.java.net/~sspitsyn/webrevs/2019/8226917-mon-events-correction2.1/

test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/contention/TC04/tc04t001/tc04t001.cpp
    old L129:         if (!NSK_JVMTI_VERIFY(jvmti->GetObjectMonitorUsage(obj, &usageInfo))) {
    old L131:         } else if (usageInfo.owner != NULL) {
    old L132:             if (!NSK_JVMTI_VERIFY(jvmti->InterruptThread(usageInfo.owner)))
        This construct in the old code is racy anyway. Just because the
        GetObjectMonitorUsage() returns information that the object is
        locked by the owner field does not mean that the owner thread
        hasn't exited the lock (and left the building) by the time the
        the InterruptThread() call is made. I suspect they were trying
        to get the owner thread out of the sleep, but they never should
        have checked the result of that call.

        Looks good.

Thumbs up.

Dan




Summary:
  One more fragment in the native agent was overlooked and is not needed anymore   after the fix of JDK-8223736 which implemented more reliable sync approach.
  The error code JVMTI_ERROR_THREAD_NOT_ALIVE started to be seen because
  the sleep timeout changed to be shorter. Now, the thread holding the monitor   is able to notice the enterEventsCount was increased by the MonitorContendedEnter   event callback and finish before the callback attempts to interrupt it with the
  JVMTI InterruptThread.


Testing:
  A mach5 submission is in progress.

Thanks,
Serguei

Reply via email to