RFR: 8342303: Segfault in update_inherited_vtable: AppCDS, old bytecode, and redefineClasses [v3]
Calvin Cheung
ccheung at openjdk.org
Thu Oct 31 21:20:34 UTC 2024
On Thu, 31 Oct 2024 02:37:26 GMT, David Holmes <dholmes at openjdk.org> wrote:
>> Calvin Cheung has updated the pull request incrementally with one additional commit since the last revision:
>>
>> avoid using getContextClassLoader()
>
> test/hotspot/jtreg/runtime/cds/appcds/jvmti/redefineClasses/OldClassAndRedefineClassApp.java line 34:
>
>> 32: System.out.println("Main: loading OldSuper");
>> 33: // Load an old class (version 49), but not linking it.
>> 34: ClassLoader.getSystemClassLoader().loadClass("OldSuper");
>
> Why not `Class.forName` in all cases ??
I've changed it to use Class.forName().
> test/hotspot/jtreg/runtime/cds/appcds/jvmti/redefineClasses/OldClassAndRedefineClassApp.java line 39:
>
>> 37: Instrumentation instrumentation = InstrumentationRegisterClassFileTransformer.getInstrumentation();
>> 38: System.out.println("INFO: instrumentation = " + instrumentation);
>> 39: Class c = ClassLoader.getSystemClassLoader().loadClass("Hello");
>
> Suggestion:
>
> Class<?> c = ClassLoader.getSystemClassLoader().loadClass("Hello");
Fixed.
> test/hotspot/jtreg/runtime/cds/appcds/jvmti/redefineClasses/RedefineBootClassApp.java line 33:
>
>> 31: File bootJar = new File(args[0]);
>> 32:
>> 33: Class superCls = Class.forName("BootSuper", false, null);
>
> Suggestion:
>
> Class<?> superCls = Class.forName("BootSuper", false, null);
Fixed.
> test/hotspot/jtreg/runtime/cds/appcds/jvmti/redefineClasses/RedefineBootClassApp.java line 56:
>
>> 54: }
>> 55:
>> 56: Class childCls = Class.forName("BootChild", false, null);
>
> Suggestion:
>
> Class<?> childCls = Class.forName("BootChild", false, null);
Fixed.
> test/hotspot/jtreg/runtime/cds/appcds/jvmti/redefineClasses/RedefineOldSuperApp.java line 33:
>
>> 31: File bootJar = new File(args[0]);
>> 32:
>> 33: Class superCls = ClassLoader.getSystemClassLoader().loadClass("OldSuper");
>
> Suggestion:
>
> Class<?> superCls = ClassLoader.getSystemClassLoader().loadClass("OldSuper");
Fixed.
> test/hotspot/jtreg/runtime/cds/appcds/jvmti/redefineClasses/RedefineOldSuperApp.java line 56:
>
>> 54: }
>> 55:
>> 56: Class childCls = ClassLoader.getSystemClassLoader().loadClass("NewChild");
>
> Suggestion:
>
> Class<?> childCls = ClassLoader.getSystemClassLoader().loadClass("NewChild");
Fixed.
Also, changed `ClassLoader.getSystemClassLoader().loadClass()` to `Class.forName()`.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/21667#discussion_r1825172154
PR Review Comment: https://git.openjdk.org/jdk/pull/21667#discussion_r1825172119
PR Review Comment: https://git.openjdk.org/jdk/pull/21667#discussion_r1825172209
PR Review Comment: https://git.openjdk.org/jdk/pull/21667#discussion_r1825172238
PR Review Comment: https://git.openjdk.org/jdk/pull/21667#discussion_r1825172275
PR Review Comment: https://git.openjdk.org/jdk/pull/21667#discussion_r1825172349
More information about the hotspot-runtime-dev
mailing list