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

Method.invoke fails with java.lang.AssertionError with AOTClassLinking and system assertions enabled

XMLWordPrintable

      GetJDKProperties class (originally taken from jtreg sources) fails with
       Exception in thread "main" java.lang.AssertionError
              at java.base/java.lang.invoke.BoundMethodHandle.<init>(BoundMethodHandle.java:53)
              at java.base/java.lang.invoke.BoundMethodHandle$Species_L.<init>(BoundMethodHandle.java:210)
              at java.base/java.lang.invoke.BoundMethodHandle$Species_L.make(BoundMethodHandle.java:225)
              at java.base/java.lang.invoke.BoundMethodHandle.makeReinvoker(BoundMethodHandle.java:114)
              at java.base/java.lang.invoke.DirectMethodHandle.rebind(DirectMethodHandle.java:147)
              at java.base/java.lang.invoke.MethodHandles.dropArgumentsTrusted(MethodHandles.java:5345)
              at java.base/java.lang.invoke.MethodHandles.dropArguments(MethodHandles.java:5414)
              at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.makeSpecializedTarget(MethodHandleAccessorFactory.java:283)
              at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.getDirectMethod(MethodHandleAccessorFactory.java:221)
              at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newMethodAccessor(MethodHandleAccessorFactory.java:80)
              at java.base/jdk.internal.reflect.ReflectionFactory.newMethodAccessor(ReflectionFactory.java:154)
              at java.base/java.lang.reflect.Method.acquireMethodAccessor(Method.java:719)
              at java.base/java.lang.reflect.Method.invoke(Method.java:570)
              at GetJDKProperties.getAllSystemModules(GetJDKProperties.java:158)
              at GetJDKProperties.run(GetJDKProperties.java:65)
              at GetJDKProperties.main(GetJDKProperties.java:27)

      when running with AOTCache built with -XX:+AOTClassLinking and "-esa" flag.

      Steps to reproduce:
      > javac GetJDKProperties.java

      > create AOT cache for jdk classes:
        TESTED_JAVA/bin/java -XX:AOTMode=create -XX:AOTConfiguration=TESTED_JAVA/lib/classlist -XX:+AOTClassLinking -XX:AOTCache=app.aot

      > TESTED_JAVA/bin/java -esa -XX:AOTCache=app.aot GetJDKProperties --modules=all-system
        

      No failures in case -esa is not used or AOT cache is built without AOTClassLinking

            iklam Ioi Lam
            epavlova Ekaterina Pavlova
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: