test/hotspot/jtreg/vmTestbase/nsk/jvmti/ThreadStart/threadstart003/threadstart003.c
changeset 51512 087d15f4934e
parent 50260 46c67f5e27c2
--- a/test/hotspot/jtreg/vmTestbase/nsk/jvmti/ThreadStart/threadstart003/threadstart003.c	Thu Aug 23 18:14:53 2018 -0400
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jvmti/ThreadStart/threadstart003/threadstart003.c	Thu Aug 23 07:54:19 2018 -0400
@@ -216,7 +216,7 @@
                TranslateError(err), err);
         result = STATUS_FAILED;
     }
-    err = (*jvmti)->RawMonitorWait(jvmti, wait_lock, (jlong)WAIT_TIME);
+    err = (*jvmti)->RawMonitorWait(jvmti, wait_lock, 0);
     if (err != JVMTI_ERROR_NONE) {
         printf("(RawMonitorWait) unexpected error: %s (%d)\n",
                TranslateError(err), err);
@@ -235,7 +235,16 @@
                TranslateError(err), err);
         result = STATUS_FAILED;
     }
-    err = (*jvmti)->RawMonitorWait(jvmti, wait_lock, (jlong)WAIT_TIME);
+    // Wait for up to 3 seconds for the thread end event
+    {
+        int i;
+        for (i = 0; i < 3 ; i++) {
+            err = (*jvmti)->RawMonitorWait(jvmti, wait_lock, (jlong)WAIT_TIME);
+            if (endsCount == endsExpected || err != JVMTI_ERROR_NONE) {
+                break;
+            }
+        }
+    }
     if (err != JVMTI_ERROR_NONE) {
         printf("(RawMonitorWait) unexpected error: %s (%d)\n",
                TranslateError(err), err);