|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
[This bug was discovered during investigation of JDK-8211956]
When creating a CDS archive for jruby 9.2.0.0, the following error happens once every few times. When the failure happens, The reported request size that triggered the failure may be different.
Loading classes to share: done.
Rewriting and linking classes ...
Rewriting and linking classes: done
Number of classes 7323
instance classes = 7244
obj array classes = 71
type array classes = 8
Updating ConstMethods ... done.
Removing unshareable information ... done.
Failed allocating metaspace object type TypeArrayU8 of size 24. CDS dump aborted.
Please increase MaxMetaspaceSize (currently 18446744073709547520 bytes).
============
Steps to reproduce:
1. Download https://repo1.maven.org/maven2/org/jruby/jruby-dist/9.2.0.0/jruby-dist-9.2.0.0-bin.tar.gz (or from attachment in this bug report)
2. Download jruby-startup.tar.gz from attachment in this bug report
3. Download JDK 11 -- OpenJDK Runtime Environment 18.9 (build 11+28)
4. Extract the above files to
$HOME/jruby/jruby-9.2.0.0/bin
$HOME/jruby/jruby-startup
$HOME/jruby/jdk-11
5. Run the following scripts to set up your environment
unalias java
unalias jruby
unset JAVA_HOME
export PATH=$HOME/jruby/jruby-9.2.0.0/bin:$PATH
export PATH=$HOME/jruby/jdk-11/bin:$PATH
java -version
jruby -J-version
type jruby
It should report the following versions:
$ java -version
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
$ jruby -J-version
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
$ type jruby
jruby is hashed (/home/iklam/jruby/jruby-9.2.0.0/bin/jruby)
6. Run the following command to reproduce the failure. You may need to run it several times for it to fail:
cd ~/jruby/jruby-startup
JAVA_OPTS="-Xmx256m" jruby -Ilib bin/generate-appcds "-S gem list"
7. Once the failure has happened, you can run the following command to reproduce it more quickly (without doing a trial run)
VERIFY_JRUBY=1 JAVA_OPTS="-Xshare:dump -XX:+UnlockDiagnosticVMOptions -XX:SharedClassListFile=$HOME/jruby/jruby-9.2.0.0/lib/jruby.list -XX:SharedArchiveFile=$HOME/jruby/jruby-9.2.0.0/lib/jruby.jsa" $HOME/jruby/jruby-9.2.0.0/bin/jruby -S gem list
the above command actually exec's the following, which can be used to debug the problem in gdb
java -Xshare:dump -XX:+UnlockDiagnosticVMOptions \
-XX:SharedClassListFile=${HOME}/jruby/jruby-9.2.0.0/lib/jruby.list \
-XX:SharedArchiveFile=${HOME}/jruby/jruby-9.2.0.0/lib/jruby.jsa \
-Xss2048k \
-Djffi.boot.library.path=${HOME}/jruby/jruby-9.2.0.0/lib/jni \
-Djava.security.egd=file:/dev/urandom \
-classpath \
${HOME}/jruby/jruby-9.2.0.0/lib/jruby.jar:: \
-Djruby.home=${HOME}/jruby/jruby-9.2.0.0 \
-Djruby.lib=${HOME}/jruby/jruby-9.2.0.0/lib \
-Djruby.script=jruby \
-Djruby.shell=/bin/sh
|