RFR(S) 8212200 assert when shared java.lang.Object is redefined by JVMTI agent (original) (raw)
Jiangli Zhou jiangli.zhou at oracle.com
Mon Oct 22 17:57:34 UTC 2018
- Previous message: RFR(S) 8212200 assert when shared java.lang.Object is redefined by JVMTI agent
- Next message: RFR(two-liner): 8212707: GlobalCounter padding is too optimistic
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 10/21/18 6:15 PM, Ioi Lam wrote:
Re-sending to the correct mailing lists. Please disregard the other email.
http://cr.openjdk.java.net/~iklam/jdk12/8212200-cds-jvmti-clfh-critical-classes.v03/ https://bugs.openjdk.java.net/browse/JDK-8212200 Hi, CDS has various built-in assumptions that classes loaded by SystemDictionary::resolvewellknownclasses must not be replaced by JVMTI ClassFileLoadHook during run time, including - field offsets computed in JavaClasses::computeoffsets - the layout of the strings objects in the shared strings table The "well-known" classes can be replaced by ClassFileLoadHook only when JvmtiExport::earlyclasshookenv() is true. Therefore, the fix is to disable CDS under this condition. I have added a few test cases to try to replace shared classes, including well-known classes and other classes. See comments in ReplaceCriticalClasses.java for details. As a clean up, I also renamed all use of "preloaded" in the source code to "well-known". They refer to the same thing in HotSpot, so there's no need to use 2 terms. Also, The word "preloaded" is ambiguous -- it's unclear when "preloading" happens, and could be confused with what CDS does during archive dump time.
> In early e-mails Jiangli wrote: > > We should consider including more classes from the default classlist > in the test. Archived classes loaded during both 'early' phase and after > should be tested. Done. > For future optimizations, we might want to prevent loading additional > shared classes if any of the archived system classes is changed. What's the benefit of doing this? Today we already stop loading a shared class if its super class was not loaded from the archive. This is for pre-resolving more constant pool references (to system classes only).
Thanks, Jiangli
Thanks - Ioi
- Previous message: RFR(S) 8212200 assert when shared java.lang.Object is redefined by JVMTI agent
- Next message: RFR(two-liner): 8212707: GlobalCounter padding is too optimistic
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]