test/hotspot/jtreg/vmTestbase/nsk/share/jdi/EventTestTemplates.java
changeset 50900 f651ae122ff7
parent 49934 44839fbb20db
--- a/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/EventTestTemplates.java	Fri Jun 29 10:13:24 2018 -0700
+++ b/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/EventTestTemplates.java	Fri Jun 29 12:34:03 2018 -0700
@@ -139,7 +139,7 @@
 
         // can't control events from system libraries, so save events only from nsk packages
         protected boolean shouldSaveEvent(Event event) {
-            return isEventFromNSK(event);
+            return isEventFromNSK(event, debuggee);
         }
 
         protected String debuggeeClassName() {
@@ -415,7 +415,7 @@
 
         // can't control events from system libraries, so save events only from nsk packages
         protected boolean shouldSaveEvent(Event event) {
-            return isEventFromNSK(event);
+            return isEventFromNSK(event, debuggee);
         }
 
         protected String debuggeeClassName() {
@@ -436,20 +436,25 @@
         }
     }
 
-    static public boolean isEventFromNSK(Event event) {
-        if (event instanceof MonitorContendedEnterEvent) {
-            return ((MonitorContendedEnterEvent) event).location() != null && ((MonitorContendedEnterEvent) event).monitor().type().name().startsWith("nsk.");
-        }
-        if (event instanceof MonitorContendedEnteredEvent) {
-            return ((MonitorContendedEnteredEvent) event).location() != null  && ((MonitorContendedEnteredEvent) event).monitor().type().name().startsWith("nsk.");
+    static public boolean isEventFromNSK(Event event, Debugee debuggee) {
+        try {
+            if (event instanceof MonitorContendedEnterEvent) {
+                return ((MonitorContendedEnterEvent) event).location() != null && ((MonitorContendedEnterEvent) event).monitor().type().name().startsWith("nsk.");
+            }
+            if (event instanceof MonitorContendedEnteredEvent) {
+                return ((MonitorContendedEnteredEvent) event).location() != null && ((MonitorContendedEnteredEvent) event).monitor().type().name().startsWith("nsk.");
+            }
+            if (event instanceof MonitorWaitEvent) {
+                return ((MonitorWaitEvent) event).monitor().type().name().startsWith("nsk.");
+            }
+            if (event instanceof MonitorWaitedEvent) {
+                return ((MonitorWaitedEvent) event).monitor().type().name().startsWith("nsk.");
+            }
+        } catch (ObjectCollectedException ex) {
+            // The monitor object the event refers to might be already collected. Ignore this exception.
+            debuggee.getLog().display("Exception caught:" + ex);
+            return false;
         }
-        if (event instanceof MonitorWaitEvent) {
-            return ((MonitorWaitEvent) event).monitor().type().name().startsWith("nsk.");
-        }
-        if (event instanceof MonitorWaitedEvent) {
-            return ((MonitorWaitedEvent) event).monitor().type().name().startsWith("nsk.");
-        }
-
         // don't filter other events
         return true;
     }