jdk/jfr/event/gc/detailed/TestZAllocationStallEvent.java intermittent OOME

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: P4
    • 27
    • Affects Version/s: 25, 27
    • Component/s: hotspot
    • Environment:
    • gc
    • master
    • x86_64
    • linux

      Test test/jdk/jdk/jfr/event/gc/detailed/TestZAllocationStallEvent.java intermittent throw OOME on some specific mahcines.

      The test log snippet:
      java.lang.OutOfMemoryError: Java heap space
              at jdk.jfr.event.gc.detailed.TestZAllocationStallEvent.main(TestZAllocationStallEvent.java:51)

      If I catch the OOM error warpper the memory allocation loop, the Events.fromRecording still report OOM error, the patch and the stack strace shows below:

                   // Allocate many large objects quickly, to outrun the GC
      - for (int i = 0; i < 100; i++) {
      - blackHole(new byte[4 * 1024 * 1024]);
      + try {
      + for (int i = 0; i < 100; i++) {
      + blackHole(new byte[4 * 1024 * 1024]);
      + }
      + } catch (java.lang.OutOfMemoryError ex) {
      + System.gc();
                   }

      java.lang.OutOfMemoryError: Java heap space
              at java.base/java.util.HashMap.newNode(HashMap.java:1910)
              at java.base/java.util.HashMap.putVal(HashMap.java:638)
              at java.base/java.util.HashMap.put(HashMap.java:619)
              at jdk.jfr/jdk.jfr.internal.MetadataReader.declareTypes(MetadataReader.java:262)
              at jdk.jfr/jdk.jfr.internal.MetadataReader.<init>(MetadataReader.java:79)
              at jdk.jfr/jdk.jfr.internal.MetadataDescriptor.read(MetadataDescriptor.java:257)
              at jdk.jfr/jdk.jfr.internal.consumer.ChunkHeader.readMetadata(ChunkHeader.java:238)
              at jdk.jfr/jdk.jfr.internal.consumer.ChunkParser.<init>(ChunkParser.java:129)
              at jdk.jfr/jdk.jfr.internal.consumer.ChunkParser.<init>(ChunkParser.java:109)
              at jdk.jfr/jdk.jfr.internal.consumer.ChunkParser.<init>(ChunkParser.java:105)
              at jdk.jfr/jdk.jfr.consumer.RecordingFile.createChunkParser(RecordingFile.java:314)
              at jdk.jfr/jdk.jfr.consumer.RecordingFile.findNext(RecordingFile.java:290)
              at jdk.jfr/jdk.jfr.consumer.RecordingFile.<init>(RecordingFile.java:86)
              at jdk.jfr/jdk.jfr.consumer.RecordingFile.readAllEvents(RecordingFile.java:267)
              at jdk.test.lib.jfr.Events.fromRecording(Events.java:280)
              at jdk.jfr.event.gc.detailed.TestZAllocationStallEvent.main(TestZAllocationStallEvent.java:61)

            Assignee:
            Sendao Yan
            Reporter:
            Sendao Yan
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: