-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
P3
-
None
-
Affects Version/s: 25.0.2
-
Component/s: hotspot
-
linux
ADDITIONAL SYSTEM INFORMATION :
Property settings:
file.encoding = UTF-8
file.separator = /
java.class.path = .
java.class.version = 69.0
java.home = /usr/lib/jvm/java-25-openjdk-amd64
java.io.tmpdir = /tmp
java.library.path = /usr/java/packages/lib
/usr/lib/x86_64-linux-gnu/jni
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
/usr/lib/jni
/lib
/usr/lib
java.runtime.name = OpenJDK Runtime Environment
java.runtime.version = 25.0.2+10-Ubuntu-124.04
java.specification.name = Java Platform API Specification
java.specification.vendor = Oracle Corporation
java.specification.version = 25
java.vendor = Ubuntu
java.vendor.url = https://ubuntu.com/
java.vendor.url.bug = https://bugs.launchpad.net/ubuntu/+source/openjdk-25
java.version = 25.0.2
java.version.date = 2026-01-20
java.vm.compressedOopsMode = Zero based
java.vm.info = mixed mode, sharing
java.vm.name = OpenJDK 64-Bit Server VM
java.vm.specification.name = Java Virtual Machine Specification
java.vm.specification.vendor = Oracle Corporation
java.vm.specification.version = 25
java.vm.vendor = Ubuntu
java.vm.version = 25.0.2+10-Ubuntu-124.04
jdk.debug = release
line.separator = \n
native.encoding = UTF-8
os.arch = amd64
os.name = Linux
os.version = 6.14.0-37-generic
path.separator = :
stderr.encoding = UTF-8
stdin.encoding = UTF-8
stdout.encoding = UTF-8
sun.arch.data.model = 64
sun.boot.library.path = /usr/lib/jvm/java-25-openjdk-amd64/lib
sun.cpu.endian = little
sun.io.unicode.encoding = UnicodeLittle
sun.java.launcher = SUN_STANDARD
sun.jnu.encoding = UTF-8
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
user.country = US
user.dir = /home/tg/Downloads
user.home = /home/tg
user.language = en
user.name = tg
openjdk version "25.0.2" 2026-01-20
OpenJDK Runtime Environment (build 25.0.2+10-Ubuntu-124.04)
OpenJDK 64-Bit Server VM (build 25.0.2+10-Ubuntu-124.04, mixed mode, sharing)
A DESCRIPTION OF THE PROBLEM :
When the application uses too many lambda expressions and method handles and exceeds the limit of 32770, OpenJDK 25 AOT cache building process fails.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Start an application where it has at least 33k different types of lamba functions/Method Handles, in AOT record mode. (-XX:AOTMode=record -XX:AOTConfiguration=app.aotconf)
2. Iterate through at least 33k lambda functions/Method Handles.
3. Close the application
4. Run AOT on cache create mode (-XX:AOTMode=create -XX:AOTConfiguration=app.aotconf -XX:AOTCache=app.aot)
5. You will notice that cache building process will fail.
---------- BEGIN SOURCE ----------
Building process to succeed
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Use -XX:+UnlockDiagnosticVMOptions -XX:-AOTInvokeDynamicLinking on cache building process.
FREQUENCY :
ALWAYS
Property settings:
file.encoding = UTF-8
file.separator = /
java.class.path = .
java.class.version = 69.0
java.home = /usr/lib/jvm/java-25-openjdk-amd64
java.io.tmpdir = /tmp
java.library.path = /usr/java/packages/lib
/usr/lib/x86_64-linux-gnu/jni
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
/usr/lib/jni
/lib
/usr/lib
java.runtime.name = OpenJDK Runtime Environment
java.runtime.version = 25.0.2+10-Ubuntu-124.04
java.specification.name = Java Platform API Specification
java.specification.vendor = Oracle Corporation
java.specification.version = 25
java.vendor = Ubuntu
java.vendor.url = https://ubuntu.com/
java.vendor.url.bug = https://bugs.launchpad.net/ubuntu/+source/openjdk-25
java.version = 25.0.2
java.version.date = 2026-01-20
java.vm.compressedOopsMode = Zero based
java.vm.info = mixed mode, sharing
java.vm.name = OpenJDK 64-Bit Server VM
java.vm.specification.name = Java Virtual Machine Specification
java.vm.specification.vendor = Oracle Corporation
java.vm.specification.version = 25
java.vm.vendor = Ubuntu
java.vm.version = 25.0.2+10-Ubuntu-124.04
jdk.debug = release
line.separator = \n
native.encoding = UTF-8
os.arch = amd64
os.name = Linux
os.version = 6.14.0-37-generic
path.separator = :
stderr.encoding = UTF-8
stdin.encoding = UTF-8
stdout.encoding = UTF-8
sun.arch.data.model = 64
sun.boot.library.path = /usr/lib/jvm/java-25-openjdk-amd64/lib
sun.cpu.endian = little
sun.io.unicode.encoding = UnicodeLittle
sun.java.launcher = SUN_STANDARD
sun.jnu.encoding = UTF-8
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
user.country = US
user.dir = /home/tg/Downloads
user.home = /home/tg
user.language = en
user.name = tg
openjdk version "25.0.2" 2026-01-20
OpenJDK Runtime Environment (build 25.0.2+10-Ubuntu-124.04)
OpenJDK 64-Bit Server VM (build 25.0.2+10-Ubuntu-124.04, mixed mode, sharing)
A DESCRIPTION OF THE PROBLEM :
When the application uses too many lambda expressions and method handles and exceeds the limit of 32770, OpenJDK 25 AOT cache building process fails.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Start an application where it has at least 33k different types of lamba functions/Method Handles, in AOT record mode. (-XX:AOTMode=record -XX:AOTConfiguration=app.aotconf)
2. Iterate through at least 33k lambda functions/Method Handles.
3. Close the application
4. Run AOT on cache create mode (-XX:AOTMode=create -XX:AOTConfiguration=app.aotconf -XX:AOTCache=app.aot)
5. You will notice that cache building process will fail.
---------- BEGIN SOURCE ----------
Building process to succeed
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Use -XX:+UnlockDiagnosticVMOptions -XX:-AOTInvokeDynamicLinking on cache building process.
FREQUENCY :
ALWAYS