AppCDS in 25 failing for JRuby command line

Charles Oliver Nutter headius at headius.com
Thu Oct 2 17:03:15 UTC 2025


Here's the full -Xlog:aot,cds output. Nothing jumps out at me. It seems to
be confused about which modules are specified at dump time, even though the
same command line sees those modules at runtime.

[0.010s][info][cds] trying to map
/Library/Java/JavaVirtualMachines/zulu-25.jdk/Contents/Home/lib/server/classes.jsa
[0.010s][info][cds] Opened shared archive file
/Library/Java/JavaVirtualMachines/zulu-25.jdk/Contents/Home/lib/server/classes.jsa.
[0.010s][info][cds] The shared archive file was created with
UseCompressedOops = 1, UseCompressedClassPointers = 1,
UseCompactObjectHeaders = 0
[0.010s][info][cds] Core region alignment: 16384
[0.010s][info][cds] trying to map
/Users/headius/work/jruby/lib/jruby-java25.jsa
[0.010s][info][cds] Opened shared archive file
/Users/headius/work/jruby/lib/jruby-java25.jsa.
[0.010s][info][cds] The shared archive file was created with
UseCompressedOops = 1, UseCompressedClassPointers = 1,
UseCompactObjectHeaders = 0
[0.010s][info][cds] optimized module handling: disabled because archive was
created without optimized module handling
[0.010s][info][cds] ArchiveRelocationMode: 1
[0.010s][info][cds] ArchiveRelocationMode == 1: always map archive(s) at an
alternative address
[0.010s][info][cds] Try to map archive(s) at an alternative address
[0.010s][info][cds] Reserved archive_space_rs [0x0000000f00000000 -
0x0000000f03000000] (50331648) bytes (includes protection zone)
[0.010s][info][cds] Reserved class_space_rs   [0x0000000f03000000 -
0x0000000f43000000] (1073741824) bytes
[0.010s][info][cds] Mapped static  region #0 at base 0x0000000f00004000 top
0x0000000f004b0000 (ReadWrite)
[0.010s][info][cds] Mapped static  region #1 at base 0x0000000f004b0000 top
0x0000000f00d94000 (ReadOnly)
[0.010s][info][cds] Mapped static  region #2 at base 0x00000001009d8000 top
0x0000000100a0c000 (Bitmap)
[0.020s][error][cds] An error has occurred while processing the shared
archive file. Run with -Xlog:aot,cds for details.
[0.020s][error][cds] optimized module handling: disabled because extra
module path(s) are specified
[0.020s][info ][cds] archived module property jdk.module.main: (null)
[0.020s][info ][cds] archived module property jdk.module.addexports: (null)
[0.020s][info ][cds] archived module property jdk.module.addmods: (null)
[0.020s][info ][cds] archived module property
jdk.module.enable.native.access: (null)
[0.020s][error][cds] Mismatched values for property
jdk.module.enable.native.access: org.jruby.dist specified during runtime
but not during dump time
[0.020s][error][cds] Disabling optimized module handling
[0.020s][info ][cds] archived module property jdk.module.addopens: (null)
[0.020s][error][cds] Mismatched values for property jdk.module.addopens:
java.base/java.io
=org.jruby.dist,java.base/java.nio.channels=org.jruby.dist,java.base/
sun.nio.ch=org.jruby.dist,java.management/sun.management=org.jruby.dist
specified during runtime but not during dump time
[0.020s][error][cds] Disabling optimized module handling
[0.020s][info ][cds] archived module property jdk.module.addreads: (null)
[0.020s][info ][cds] optimized module handling: disabled
[0.020s][info ][cds] full module graph: disabled
[0.021s][info ][cds] Mapped dynamic region #0 at base 0x0000000f00d94000
top 0x0000000f01a80000 (ReadWrite)
[0.021s][info ][cds] Mapped dynamic region #1 at base 0x0000000f01a80000
top 0x0000000f02b4c000 (ReadOnly)
[0.021s][info ][cds] Mapped dynamic region #2 at base 0x0000000101a8c000
top 0x0000000101afc000 (Bitmap)
[0.025s][info ][cds] CDS archive was created with max heap size = 128M, and
the following configuration:
[0.025s][info ][cds]     narrow_klass_base at mapping start address,
narrow_klass_pointer_bits = 32, narrow_klass_shift = 0
[0.025s][info ][cds]     narrow_oop_mode = 1, narrow_oop_base =
0x0000000000000000, narrow_oop_shift = 3
[0.025s][info ][cds] The current max heap size = 6144M,
G1HeapRegion::GrainBytes = 4194304
[0.025s][info ][cds]     narrow_klass_base = 0x0000000f00000000,
arrow_klass_pointer_bits = 32, narrow_klass_shift = 0
[0.025s][info ][cds]     narrow_oop_mode = 1, narrow_oop_base =
0x0000000000000000, narrow_oop_shift = 3
[0.025s][info ][cds]     heap range = [0x0000000680000000 -
0x0000000800000000]
[0.025s][info ][cds] Preferred address to map heap data (to avoid
relocation) is 0x00000007ffe00000
[0.025s][info ][cds] Heap data mapped at 0x00000007ffc00000, size =
 1177848 bytes
[0.025s][info ][cds] CDS heap data relocation delta = -2097152 bytes
[0.025s][info ][aot] initial optimized module handling: disabled
[0.025s][info ][aot] initial full module graph: disabled
[0.025s][info ][aot] patching heap embedded pointers: narrowOop 0xfffc0000
-> 0xfff80000
[0.025s][info ][aot] heap data relocation quick delta = 0xfffc0000
[0.027s][info ][cds] Unmapping region #2 at base 0x00000001009d8000 (Bitmap)
[0.027s][info ][cds] Unmapping region #2 at base 0x0000000101a8c000 (Bitmap)
[0.027s][info ][aot] Using AOT-linked classes: false (static archive: no
aot-linked classes, dynamic archive: no aot-linked classes)

On Thu, Oct 2, 2025 at 11:58 AM Charles Oliver Nutter <headius at headius.com>
wrote:

> Hello friends!
>
> I was doing some testing of AppCDS on JDK 25, in hopes of having our
> Docker images pre-generate an AppCDS archive. But I discovered an issue...
> AppCDS does not appear to like the JRuby command line anymore in JDK 25.
>
> Here's part of a session where I delete the old AppCDS archive and then
> run the same command line twice with AutoCreateSharedArchive. The archive
> generates ok in the first command, but then is rejected by the second
> command:
>
> [] jdk25 $ rm /Users/headius/work/jruby/lib/jruby-java25.jsa
> [] jdk25 $
> /Library/Java/JavaVirtualMachines/zulu-25.jdk/Contents/Home/bin/java
> @/Users/headius/work/jruby/bin/.jruby.java_opts
> @/Users/headius/work/jruby/bin/.jruby.module_opts -Xss2048k
> -Djffi.boot.library.path=/Users/headius/work/jruby/lib/jni
> -Djava.security.egd=file:/dev/urandom -XX:+AutoCreateSharedArchive
> -XX:SharedArchiveFile=/Users/headius/work/jruby/lib/jruby-java25.jsa
> --enable-native-access=org.jruby.dist --sun-misc-unsafe-memory-access=allow
> --module-path /Users/headius/work/jruby/lib/jruby.jar -classpath :
> -Djruby.home=/Users/headius/work/jruby
> -Djruby.lib=/Users/headius/work/jruby/lib -Djruby.script=jruby
> -Djruby.shell=/bin/sh org.jruby.Main -e 1
> [1.074s][warning][cds] Skipping jdk/proxy2/$Proxy13: Unsupported location
> [1.074s][warning][cds] Skipping jdk/proxy2/$Proxy25: Unsupported location
> [1.074s][warning][cds] Skipping org/joda/time/field/MillisDurationField:
> Old class has been linked
> ...
> [1.076s][warning][cds] Skipping org/jruby/org/objectweb/asm/ClassWriter:
> Old class has been linked
> [1.076s][warning][cds] Skipping
> org/joda/time/format/DateTimeFormatterBuilder$PaddedNumber: Old class has
> been linked
> [] jdk25 $
> /Library/Java/JavaVirtualMachines/zulu-25.jdk/Contents/Home/bin/java
> @/Users/headius/work/jruby/bin/.jruby.java_opts
> @/Users/headius/work/jruby/bin/.jruby.module_opts -Xss2048k
> -Djffi.boot.library.path=/Users/headius/work/jruby/lib/jni
> -Djava.security.egd=file:/dev/urandom -XX:+AutoCreateSharedArchive
> -XX:SharedArchiveFile=/Users/headius/work/jruby/lib/jruby-java25.jsa
> --enable-native-access=org.jruby.dist --sun-misc-unsafe-memory-access=allow
> --module-path /Users/headius/work/jruby/lib/jruby.jar -classpath :
> -Djruby.home=/Users/headius/work/jruby
> -Djruby.lib=/Users/headius/work/jruby/lib -Djruby.script=jruby
> -Djruby.shell=/bin/sh org.jruby.Main -e 1
> [0.008s][error][cds] An error has occurred while processing the shared
> archive file. Run with -Xlog:aot,cds for details.
> [0.008s][error][cds] optimized module handling: disabled because extra
> module path(s) are specified
> [0.008s][error][cds] Mismatched values for property
> jdk.module.enable.native.access: org.jruby.dist specified during runtime
> but not during dump time
> [0.008s][error][cds] Disabling optimized module handling
> [0.008s][error][cds] Mismatched values for property jdk.module.addopens:
> java.base/java.io
> =org.jruby.dist,java.base/java.nio.channels=org.jruby.dist,java.base/
> sun.nio.ch=org.jruby.dist,java.management/sun.management=org.jruby.dist
> specified during runtime but not during dump time
> [0.008s][error][cds] Disabling optimized module handling
>
> The errors make no sense because I'm doing exactly the same thing in both
> command lines.
>
> Here's the contents of the
> /Users/headius/work/jruby/bin/.jruby.module_opts file (the .jruby.java_opts
> file is empty):
>
> --add-opens java.base/java.io=org.jruby.dist
> --add-opens java.base/java.nio.channels=org.jruby.dist
> --add-opens java.base/sun.nio.ch=org.jruby.dist
> --add-opens java.management/sun.management=org.jruby.dist
>
> Running the same commands against JDK 21 works just fine... the jsa file
> is generated and used correctly. Is there something I'm doing wrong with
> this command line that JDK 25 does not like?
>
> I can re-test with another JDK if necessary. Let me know if I should open
> a bug for this.
>
> Reproduce by downloading JRuby from https://jruby.org and unpacking. It
> runs out of the box.
>
> *Charles Oliver Nutter*
> *Architect and Technologist*
> Headius Enterprises
> https://www.headius.com
> headius at headius.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/leyden-dev/attachments/20251002/a9f01b00/attachment.htm>


More information about the leyden-dev mailing list