Skip to content

Commit

Permalink
8297570: jdk/jfr/threading/TestDeepVirtualStackTrace.java fails with …
Browse files Browse the repository at this point in the history
…-XX:-UseTLAB

Reviewed-by: mgronlun
  • Loading branch information
shipilev committed Nov 28, 2022
1 parent ba0a252 commit 405b188
Showing 1 changed file with 34 additions and 16 deletions.
50 changes: 34 additions & 16 deletions test/jdk/jdk/jfr/threading/TestDeepVirtualStackTrace.java
Original file line number Diff line number Diff line change
Expand Up @@ -92,32 +92,50 @@ private static void assertStackTrace(Runnable eventEmitter, String eventName, St
System.out.println();
System.out.println("Testing event: " + eventName);
System.out.println("=============================");

boolean isTargetEventFound = false;

try (Recording r = new Recording()) {
r.enable(eventName).withoutThreshold();
r.start();
Thread vt = Thread.ofVirtual().start(eventEmitter);
vt.join();
r.stop();
List<RecordedEvent> events = Events.fromRecording(r);
Asserts.assertEquals(events.size(), 1, "No event found in virtual thread");
RecordedEvent event = events.get(0);
System.out.println(event);
RecordedStackTrace stackTrace = event.getStackTrace();
List<RecordedFrame> frames = stackTrace.getFrames();
Asserts.assertTrue(stackTrace.isTruncated());
int count = 0;
for (RecordedFrame frame : frames) {
Asserts.assertTrue(frame.isJavaFrame());
Asserts.assertNotNull(frame.getMethod());
RecordedMethod m = frame.getMethod();
Asserts.assertNotNull(m.getType());
if (m.getName().contains(stackMethod)) {
count++;
Asserts.assertFalse(events.isEmpty(), "No event found in virtual thread");
for (RecordedEvent event : events) {
System.out.println(event);
RecordedStackTrace stackTrace = event.getStackTrace();
if (stackTrace == null) {
continue;
}
List<RecordedFrame> frames = stackTrace.getFrames();
int count = 0;
boolean isTargetEvent = false;
boolean isFirstFrame = true;
for (int c = 0; c < frames.size(); c++) {
RecordedFrame frame = frames.get(c);
Asserts.assertTrue(frame.isJavaFrame());
Asserts.assertNotNull(frame.getMethod());
RecordedMethod m = frame.getMethod();
Asserts.assertNotNull(m.getType());
if (m.getName().contains(stackMethod)) {
if (c == 0) {
isTargetEvent = true;
}
count++;
}
}
if (isTargetEvent) {
isTargetEventFound = true;
Asserts.assertTrue(stackTrace.isTruncated());
Asserts.assertEquals(count, FRAME_COUNT);
Asserts.assertEquals(frames.size(), FRAME_COUNT);
}
}
Asserts.assertEquals(count, FRAME_COUNT);
Asserts.assertEquals(frames.size(), FRAME_COUNT);
}

Asserts.assertTrue(isTargetEventFound, "At least one target event found");
}

}

1 comment on commit 405b188

@openjdk-notifier
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.