Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8346108

[21u][BACKOUT] 8337994: [REDO] Native memory leak when not recording any events

XMLWordPrintable

    • jfr
    • b01
    • generic
    • generic

      Backout the backport of 8337994 to 21u.

      We see failures of test/jdk/jdk/jfr/jvm/TestChunkIntegrity.java with slowdebug and fastdebug builds.
      The failure is well reproducible with the slowdebug build, but with faster binaries the test passes sometimes.
      In our nightly CI with high load the fastdebug build fails reliably.

      From the .jtr file of the testruns:

      Veryfying chunk: disassembled/recording_00.jfr 0
      Veryfying chunk: disassembled/recording_01.jfr 3338
      Veryfying chunk: disassembled/recording_02.jfr 9083
      One value null
      Value A: {
      type = N/A
      name = "bootstrap"
      }

      Value B: null
      Field classLoader doesn't match
      Value A: {
      type = N/A
      name = "bootstrap"
      }

      Value B: null
      Field type doesn't match
      Value A: {
      classLoader = null
      name = "jdk/internal/loader/ClassLoaders$AppClassLoader"
      package = {
      name = "jdk/internal/loader"
      module = {
      name = "java.base"
      version = "21.0.7-internal"
      location = "jrt:/java.base"
      classLoader = null
      }
      exported = true
      }
      modifiers = 10
      hidden = false
      }

      Value B: {
      classLoader = N/A
      name = "jdk/internal/loader/ClassLoaders$AppClassLoader"
      package = {
      name = "jdk/internal/loader"
      module = {
      name = "java.base"
      version = "21.0.7-internal"
      location = "jrt:/java.base"
      classLoader = N/A
      }
      exported = true
      }
      modifiers = 10
      hidden = false
      }

      Field classLoader doesn't match
      Value A: {
      type = jdk.internal.loader.ClassLoaders$AppClassLoader (classLoader = bootstrap)
      name = "app"
      }

      Value B: {
      type = jdk.internal.loader.ClassLoaders$AppClassLoader (classLoader = null)
      name = "app"
      }

      Field type doesn't match
      Value A: {
      classLoader = jdk.internal.loader.ClassLoaders$AppClassLoader (id = 3)
      name = "jdk/jfr/jvm/TestChunkIntegrity$ClassStressor"
      package = {
      name = "jdk/jfr/jvm"
      module = {
      name = N/A
      version = N/A
      location = N/A
      classLoader = jdk.internal.loader.ClassLoaders$AppClassLoader (id = 3)
      }
      exported = true
      }
      modifiers = 8
      hidden = false
      }

      Value B: {
      classLoader = jdk.internal.loader.ClassLoaders$AppClassLoader (id = 3)
      name = "jdk/jfr/jvm/TestChunkIntegrity$ClassStressor"
      package = {
      name = "jdk/jfr/jvm"
      module = {
      name = N/A
      version = N/A
      location = N/A
      classLoader = jdk.internal.loader.ClassLoaders$AppClassLoader (id = 3)
      }
      exported = true
      }
      modifiers = 8
      hidden = false
      }

      Field method doesn't match
      Value A: {
      type = jdk.jfr.jvm.TestChunkIntegrity$ClassStressor (classLoader = app)
      name = "stress"
      descriptor = "()V"
      modifiers = 4
      hidden = false
      }

      Value B: {
      type = jdk.jfr.jvm.TestChunkIntegrity$ClassStressor (classLoader = app)
      name = "stress"
      descriptor = "()V"
      modifiers = 4
      hidden = false
      }

      Array contents doesn't match
      Field frames doesn't match
      Value A: [Ljava.lang.Object;@16e87903
      Value B: [Ljava.lang.Object;@466281af
      Object A:
      Clazz {
      startTime = 01:26:04.779 (2024-12-12)
      clazz = jdk.jfr.jvm.TestChunkIntegrity$MyClass (classLoader = JFR TestClassLoader)
      eventThread = "Thread-1" (javaThreadId = 33)
      stackTrace = [
      jdk.jfr.jvm.TestChunkIntegrity$ClassStressor.stress() line: 272
      jdk.jfr.jvm.TestChunkIntegrity$StressThread.run() line: 75
      ]
      }

      Object B:
      Clazz {
      startTime = 01:26:04.779 (2024-12-12)
      clazz = jdk.jfr.jvm.TestChunkIntegrity$MyClass (classLoader = JFR TestClassLoader)
      eventThread = "Thread-1" (javaThreadId = 33)
      stackTrace = [
      jdk.jfr.jvm.TestChunkIntegrity$ClassStressor.stress() line: 272
      jdk.jfr.jvm.TestChunkIntegrity$StressThread.run() line: 75
      ]
      }

      ----------System.err:(12/755)----------
      java.lang.AssertionError: Events don't match. Event number 0
      at jdk.jfr.jvm.TestChunkIntegrity.assertEventEquals(TestChunkIntegrity.java:174)
      at jdk.jfr.jvm.TestChunkIntegrity.main(TestChunkIntegrity.java:131)
      at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
      at java.base/java.lang.reflect.Method.invoke(Method.java:580)
      at com.sun.javatest.regtest.agent.MainWrapper$MainTask.run(MainWrapper.java:138)
      at java.base/java.lang.Thread.run(Thread.java:1583)

      JavaTest Message: Test threw exception: java.lang.AssertionError: Events don't match. Event number 0
      JavaTest Message: shutting down test

      STATUS:Failed.`main' threw exception: java.lang.AssertionError: Events don't match. Event number 0

            goetz Goetz Lindenmaier
            goetz Goetz Lindenmaier
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: