Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2001, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -247,8 +247,8 @@ private void testRun()
getEventSet();
cpRequest.disable();

ClassPrepareEvent event = (ClassPrepareEvent) eventIterator.next();
debuggeeClass = event.referenceType();
ClassPrepareEvent cpEvent = (ClassPrepareEvent) eventIterator.next();
debuggeeClass = cpEvent.referenceType();

if (!debuggeeClass.name().equals(debuggeeName))
throw new JDITestRuntimeException("** Unexpected ClassName for ClassPrepareEvent **");
Expand Down Expand Up @@ -371,13 +371,14 @@ private void testRun()
}

mainThread.resume();
getEventSet();
getEventSetForThreadStartDeath("thread" + i);

if ( !(eventIterator.nextEvent() instanceof ThreadStartEvent)) {
log3("ERROR: new event is not ThreadStartEvent");
Event event = eventIterator.nextEvent();
if (!(event instanceof ThreadStartEvent)) {
log3("ERROR: new event is not ThreadStartEvent: " + event);
testExitCode = FAILED;
} else {
log2("......got : instanceof ThreadStartEvent");
log2("......got : instanceof ThreadStartEvent: " + event);
policy = eventSet.suspendPolicy();
if (policy != policyExpected[i]) {
log3("ERROR: eventSet.suspendPolicy() != policyExpected");
Expand Down Expand Up @@ -418,8 +419,6 @@ private ThreadStartRequest settingThreadStartRequest(int suspendPolicy,
throws JDITestRuntimeException {
try {
ThreadStartRequest tsr = eventRManager.createThreadStartRequest();
// tsr.addThreadFilter(mainThread);
tsr.addCountFilter(1);
tsr.setSuspendPolicy(suspendPolicy);
tsr.putProperty("number", property);
return tsr;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2006, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -337,6 +337,10 @@ public static boolean filtered(Event event) {
if (event.toString().contains("JFR request timer"))
return true;

// Filter out any carrier thread that starts while running the test.
if (event.toString().contains("ForkJoinPool"))
return true;

return false;
}

Expand Down
26 changes: 18 additions & 8 deletions test/hotspot/jtreg/vmTestbase/nsk/share/jdi/JDIBase.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2020, 2021, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -165,18 +165,21 @@ protected void getEventSetForThreadStartDeath(String threadName) throws JDITestR
Event event = eventIterator.nextEvent();
if (event instanceof ThreadStartEvent evt) {
if (evt.thread().name().equals(threadName)) {
log2("Got ThreadStartEvent for '" + evt.thread().name());
break;
}
log2("Got ThreadStartEvent for '" + evt.thread().name()
+ "' instead of '" + threadName + "', skipping");
} else if (event instanceof ThreadDeathEvent evt) {
if (evt.thread().name().equals(threadName)) {
log2("Got ThreadDeathEvent for '" + evt.thread().name());
break;
}
log2("Got ThreadDeathEvent for '" + evt.thread().name()
+ "' instead of '" + threadName + "', skipping");
} else {
// not ThreadStartEvent nor ThreadDeathEvent
log2("Did't get ThreadStartEvent or ThreadDeathEvent: " + event);
break;
}
eventSet.resume();
Expand All @@ -188,15 +191,22 @@ protected void getEventSetForThreadStartDeath(String threadName) throws JDITestR
protected void breakpointForCommunication() throws JDITestRuntimeException {

log2("breakpointForCommunication");
getEventSet();
while (true) {
getEventSet();

Event event = eventIterator.nextEvent();
if (event instanceof BreakpointEvent) {
bpEvent = (BreakpointEvent) event;
return;
}
Event event = eventIterator.nextEvent();
if (event instanceof BreakpointEvent) {
bpEvent = (BreakpointEvent) event;
return;
}

throw new JDITestRuntimeException("** event '" + event + "' IS NOT a breakpoint **");
if (EventFilters.filtered(event)) {
// We filter out spurious ThreadStartEvents
continue;
}

throw new JDITestRuntimeException("** event '" + event + "' IS NOT a breakpoint **");
}
}

// Similar to breakpointForCommunication, but skips Locatable events from unexpected locations.
Expand Down