RFR (XS): 8156147 NPE in InstrumentationImpl.transform when loading classes from -Xbootclasspath/a
serguei.spitsyn at oracle.com
serguei.spitsyn at oracle.com
Fri May 6 07:18:35 UTC 2016
Please, review a simple fix in the
java.lang.instrument.InstrumentationImpl transform() method.
This is the patch:
diff -r d2f46fdfc3ca src/java.base/share/classes/module-info.java
--- a/src/java.base/share/classes/module-info.java Thu May 05
11:44:01 2016 -0700
+++ b/src/java.base/share/classes/module-info.java Fri May 06
00:11:23 2016 -0700
@@ -145,6 +145,8 @@
jdk.scripting.nashorn;
exports jdk.internal.org.objectweb.asm.signature to
jdk.scripting.nashorn;
+ exports jdk.internal.loader to
+ java.instrument;
exports jdk.internal.math to
java.desktop;
exports jdk.internal.module to
diff -r d2f46fdfc3ca
src/java.instrument/share/classes/sun/instrument/InstrumentationImpl.java
---
a/src/java.instrument/share/classes/sun/instrument/InstrumentationImpl.java
Thu May 05 11:44:01 2016 -0700
+++
b/src/java.instrument/share/classes/sun/instrument/InstrumentationImpl.java
Fri May 06 00:11:23 2016 -0700
@@ -41,6 +41,8 @@
import java.util.Objects;
import java.util.jar.JarFile;
+import jdk.internal.loader.BootLoader;
+
/*
* Copyright 2003 Wily Technology, Inc.
*/
@@ -436,7 +438,8 @@
if (classBeingRedefined != null) {
module = classBeingRedefined.getModule();
} else {
- module = loader.getUnnamedModule();
+ module = (loader == null) ?
jdk.internal.loader.BootLoader.getUnnamedModule()
+ : loader.getUnnamedModule();
}
}
if (mgr == null) {
Summary:
InstrumentationImpl.transform has this:
if (module == null) {
if (classBeingRedefined != null) {
module = classBeingRedefined.getModule();
} else {
module = loader.getUnnamedModule();
}
}
but if loader is null (-Xbootclasspath/a case) then this throws
NullPointerException.
If loader is null then we need to use
jdk.internal.loader.BootLoader.getUnnamedModule().
Testing:
In progress: run the JTreg :jdk_instrument tests.
Thanks,
Serguei
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20160506/c83a3211/attachment.html>
More information about the serviceability-dev
mailing list