From 362f168d2324b862e20de9084e6ce30dfd6b2d62 Mon Sep 17 00:00:00 2001 From: Erik Gahlin Date: Wed, 24 Jun 2020 23:47:16 +0200 Subject: [PATCH] 8242501: JFR: oldobject/TestG1.java can't find leaking object Reviewed-by: mgronlun --- test/jdk/jdk/jfr/event/oldobject/TestG1.java | 24 +++++++++++-------- .../jdk/jfr/event/oldobject/TestParallel.java | 24 +++++++++++-------- .../jdk/jfr/event/oldobject/TestSerial.java | 24 +++++++++++-------- 3 files changed, 42 insertions(+), 30 deletions(-) diff --git a/test/jdk/jdk/jfr/event/oldobject/TestG1.java b/test/jdk/jdk/jfr/event/oldobject/TestG1.java index 6cfd985b1ce..2d3f142404f 100644 --- a/test/jdk/jdk/jfr/event/oldobject/TestG1.java +++ b/test/jdk/jdk/jfr/event/oldobject/TestG1.java @@ -54,17 +54,21 @@ public class TestG1 { public static void main(String[] args) throws Exception { WhiteBox.setWriteAllObjectSamples(true); - try (Recording r = new Recording()) { - r.enable(EventNames.OldObjectSample).withStackTrace().with("cutoff", "infinity"); - r.start(); - allocateFindMe(); - System.gc(); - r.stop(); - List events = Events.fromRecording(r); - System.out.println(events); - if (OldObjects.countMatchingEvents(events, FindMe[].class, null, null, -1, "allocateFindMe") == 0) { - throw new Exception("Could not find leak with " + FindMe[].class); + while (true) { + try (Recording r = new Recording()) { + r.enable(EventNames.OldObjectSample).withStackTrace().with("cutoff", "infinity"); + r.start(); + allocateFindMe(); + System.gc(); + r.stop(); + List events = Events.fromRecording(r); + System.out.println(events); + if (OldObjects.countMatchingEvents(events, FindMe[].class, null, null, -1, "allocateFindMe") > 0) { + return; + } + System.out.println("Could not find leaking object, retrying..."); } + list.clear(); } } diff --git a/test/jdk/jdk/jfr/event/oldobject/TestParallel.java b/test/jdk/jdk/jfr/event/oldobject/TestParallel.java index 71bfb486b83..ba0b6ea4b03 100644 --- a/test/jdk/jdk/jfr/event/oldobject/TestParallel.java +++ b/test/jdk/jdk/jfr/event/oldobject/TestParallel.java @@ -54,17 +54,21 @@ public class TestParallel { public static void main(String[] args) throws Exception { WhiteBox.setWriteAllObjectSamples(true); - try (Recording r = new Recording()) { - r.enable(EventNames.OldObjectSample).withStackTrace().with("cutoff", "infinity"); - r.start(); - allocateFindMe(); - System.gc(); - r.stop(); - List events = Events.fromRecording(r); - System.out.println(events); - if (OldObjects.countMatchingEvents(events, FindMe[].class, null, null, -1, "allocateFindMe") == 0) { - throw new Exception("Could not find leak with " + FindMe[].class); + while (true) { + try (Recording r = new Recording()) { + r.enable(EventNames.OldObjectSample).withStackTrace().with("cutoff", "infinity"); + r.start(); + allocateFindMe(); + System.gc(); + r.stop(); + List events = Events.fromRecording(r); + System.out.println(events); + if (OldObjects.countMatchingEvents(events, FindMe[].class, null, null, -1, "allocateFindMe") > 0) { + return; + } + System.out.println("Could not find leaking object, retrying..."); } + list.clear(); } } diff --git a/test/jdk/jdk/jfr/event/oldobject/TestSerial.java b/test/jdk/jdk/jfr/event/oldobject/TestSerial.java index ad18a6c84f2..905b187fc14 100644 --- a/test/jdk/jdk/jfr/event/oldobject/TestSerial.java +++ b/test/jdk/jdk/jfr/event/oldobject/TestSerial.java @@ -54,17 +54,21 @@ public class TestSerial { public static void main(String[] args) throws Exception { WhiteBox.setWriteAllObjectSamples(true); - try (Recording r = new Recording()) { - r.enable(EventNames.OldObjectSample).withStackTrace().with("cutoff", "infinity"); - r.start(); - allocateFindMe(); - System.gc(); - r.stop(); - List events = Events.fromRecording(r); - System.out.println(events); - if (OldObjects.countMatchingEvents(events, FindMe[].class, null, null, -1, "allocateFindMe") == 0) { - throw new Exception("Could not find leak with " + FindMe[].class); + while (true) { + try (Recording r = new Recording()) { + r.enable(EventNames.OldObjectSample).withStackTrace().with("cutoff", "infinity"); + r.start(); + allocateFindMe(); + System.gc(); + r.stop(); + List events = Events.fromRecording(r); + System.out.println(events); + if (OldObjects.countMatchingEvents(events, FindMe[].class, null, null, -1, "allocateFindMe") > 0) { + return; + } + System.out.println("Could not find leaking object, retrying..."); } + list.clear(); } }