JIMAGE_FindResource does not care about the value of version, it returns resource with any string not only "9.0". Also java dumps core on null value of version.
Code:
$ cat WrongVersion.java
import jdk.internal.jimage.ImageNativeSubstrate;
public class WrongVersion {
static String imageFile = System.getProperty("java.home") + "/lib/modules/bootmodules.jimage";
public static void main(String... args) throws Exception {
long jimageHandle = ImageNativeSubstrate.JIMAGE_Open(imageFile);
long[] size = new long[1];
long result = ImageNativeSubstrate.JIMAGE_FindResource(
jimageHandle, "java.base", "8.0", "java/lang/String.class", size);
System.out.println("Version = 8.0 JIMAGE_FindResource returns " + result);
result = ImageNativeSubstrate.JIMAGE_FindResource(
jimageHandle, "java.base", "any string", "java/lang/String.class", size);
System.out.println("Version = \"any string\" JIMAGE_FindResource returns " + result);
result = ImageNativeSubstrate.JIMAGE_FindResource(
jimageHandle, "java.base", null, "java/lang/String.class", size);
System.out.println("Version = null JIMAGE_FindResource returns " + result);
ImageNativeSubstrate.JIMAGE_Close(jimageHandle);
}
}
Actual result:
$ javac WrongVersion.java
$ java WrongVersion
Version = 8.0 JIMAGE_FindResource returns 344522
Version = "any string" JIMAGE_FindResource returns 344522
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f5faf78fe14, pid=20547, tid=20548
#
# JRE version: OpenJDK Runtime Environment (9.0) (build 1.9.0-internal-sep_2015_10_27_03_42-b00)
# Java VM: OpenJDK 64-Bit Server VM (1.9.0-internal-sep_2015_10_27_03_42-b00, mixed mode, tiered, compressed oops, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x6c0e14] jni_GetStringUTFChars+0x74
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport %p %s %c %P" (or dumping to /home/sep/Stuff/Java/myBugs/jimage/core.20547)
#
# An error report file with more information is saved as:
# /home/sep/Stuff/Java/myBugs/jimage/hs_err_pid20547.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
Aborted (core dumped)
Expected result:
Return 0.
Code:
$ cat WrongVersion.java
import jdk.internal.jimage.ImageNativeSubstrate;
public class WrongVersion {
static String imageFile = System.getProperty("java.home") + "/lib/modules/bootmodules.jimage";
public static void main(String... args) throws Exception {
long jimageHandle = ImageNativeSubstrate.JIMAGE_Open(imageFile);
long[] size = new long[1];
long result = ImageNativeSubstrate.JIMAGE_FindResource(
jimageHandle, "java.base", "8.0", "java/lang/String.class", size);
System.out.println("Version = 8.0 JIMAGE_FindResource returns " + result);
result = ImageNativeSubstrate.JIMAGE_FindResource(
jimageHandle, "java.base", "any string", "java/lang/String.class", size);
System.out.println("Version = \"any string\" JIMAGE_FindResource returns " + result);
result = ImageNativeSubstrate.JIMAGE_FindResource(
jimageHandle, "java.base", null, "java/lang/String.class", size);
System.out.println("Version = null JIMAGE_FindResource returns " + result);
ImageNativeSubstrate.JIMAGE_Close(jimageHandle);
}
}
Actual result:
$ javac WrongVersion.java
$ java WrongVersion
Version = 8.0 JIMAGE_FindResource returns 344522
Version = "any string" JIMAGE_FindResource returns 344522
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f5faf78fe14, pid=20547, tid=20548
#
# JRE version: OpenJDK Runtime Environment (9.0) (build 1.9.0-internal-sep_2015_10_27_03_42-b00)
# Java VM: OpenJDK 64-Bit Server VM (1.9.0-internal-sep_2015_10_27_03_42-b00, mixed mode, tiered, compressed oops, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x6c0e14] jni_GetStringUTFChars+0x74
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport %p %s %c %P" (or dumping to /home/sep/Stuff/Java/myBugs/jimage/core.20547)
#
# An error report file with more information is saved as:
# /home/sep/Stuff/Java/myBugs/jimage/hs_err_pid20547.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
Aborted (core dumped)
Expected result:
Return 0.