On Thu, 13 Nov 2025 11:35:04 GMT, Albert Mingkun Yang <[email protected]> wrote:
>> We have seen crashes on many platforms (including x64) while running `make
>> run-test TEST=runtime/cds/appcds/aotClassLinking/LambdaInExcludedClass.java
>> JTREG="VM_OPTIONS=-XX:+UseCompactObjectHeaders"`:
>>
>> SIGSEGV (0xb) at pc=0x00007f2f95a61e7a, pid=18554, tid=18557
>> V [libjvm.so+0x15bfe7a] MemAllocator::finish(HeapWordImpl**) const+0xca
>> (klass.inline.hpp:72)
>> V [libjvm.so+0x15c029f] ObjAllocator::initialize(HeapWordImpl**)
>> const+0x2f (memAllocator.cpp:391)
>> V [libjvm.so+0xb0630b] CollectedHeap::fill_with_object(HeapWordImpl**,
>> unsigned long, bool)+0x27b (collectedHeap.cpp:491)
>> V [libjvm.so+0x1c7a0bb]
>> ThreadLocalAllocBuffer::retire(ThreadLocalAllocStats*)+0x11b
>> (threadLocalAllocBuffer.cpp:118)
>> V [libjvm.so+0x15c0b14]
>> MemAllocator::mem_allocate_inside_tlab_slow(MemAllocator::Allocation&)
>> const+0x84 (memAllocator.cpp:286)
>> V [libjvm.so+0x15c13ab]
>> MemAllocator::mem_allocate(MemAllocator::Allocation&) const+0xbb
>> (memAllocator.cpp:340)
>> V [libjvm.so+0x15c14f9] MemAllocator::allocate() const+0xa9
>> (memAllocator.cpp:353)
>> V [libjvm.so+0x1cc052e] TypeArrayKlass::allocate_common(int, bool,
>> JavaThread*)+0x13e (collectedHeap.inline.hpp:41)
>> V [libjvm.so+0x16fbc98] oopFactory::new_typeArray(BasicType, int,
>> JavaThread*)+0x38 (typeArrayKlass.hpp:51)
>> V [libjvm.so+0x106b0f3] java_lang_Class::restore_archived_mirror(Klass*,
>> Handle, Handle, Handle, JavaThread*)+0x413 (javaClasses.cpp:1246)
>> V [libjvm.so+0x14100bc] Klass::restore_unshareable_info(ClassLoaderData*,
>> Handle, JavaThread*)+0x66c (klass.cpp:903)
>> V [libjvm.so+0xfe2cb1]
>> InstanceKlass::restore_unshareable_info(ClassLoaderData*, Handle,
>> PackageEntry*, JavaThread*)+0x81 (instanceKlass.cpp:2823)
>> V [libjvm.so+0x1c0f5ad] SystemDictionary::preload_class(Handle,
>> InstanceKlass*, JavaThread*)+0x1ed (systemDictionary.cpp:1198)
>> V [libjvm.so+0x676e83]
>> AOTLinkedClassBulkLoader::preload_classes_in_table(Array<InstanceKlass*>*,
>> char const*, Handle, JavaThread*)+0x1a3 (aotLinkedClassBulkLoader.cpp:103)
>> V [libjvm.so+0x679af5]
>> AOTLinkedClassBulkLoader::preload_classes_impl(JavaThread*)+0x165
>> (aotLinkedClassBulkLoader.cpp:76)
>> V [libjvm.so+0x67c371]
>> AOTLinkedClassBulkLoader::preload_classes(JavaThread*)+0x11
>> (aotLinkedClassBulkLoader.cpp:61)
>> V [libjvm.so+0x1d5bf30] vmClasses::resolve_all(JavaThread*)+0x3e0
>> (vmClasses.cpp:126)
>> V [libjvm.so+0x1c0f28c] SystemDictionary::initialize(JavaThread*)+0x10c
>> (systemDictionary.cpp:1623)
>> V [libjvm.so+0x1cc74ca] Uni...
>
>> ... make run-test
>> TEST=runtime/cds/appcds/aotClassLinking/LambdaInExcludedClass.java
>> JTREG="VM_OPTIONS=-XX:+UseCompactObjectHeaders"
>
> I suspect the crash is caused by a preexisting issue that is exposed by this
> patch.
>
> In `vmClasses::resolve_all`:
>
> #if INCLUDE_CDS
> if (CDSConfig::is_using_aot_linked_classes()) {
> AOTLinkedClassBulkLoader::preload_classes(THREAD);
> }
> #endif
>
> // Preload commonly used klasses
> vmClassID scan = vmClassID::FIRST;
> // first do Object, then String, Class
> resolve_through(VM_CLASS_ID(Object_klass), scan, CHECK);
> CollectedHeap::set_filler_object_klass(vmClasses::Object_klass());
>
>
> The filler-klass is not initialized when `preload_classes` is invoked, but
> `preload_classes` use heap-allocation, which may require filler-obj.
>
> @iklam What do you think?
@albertnetymk I've pushed https://github.com/openjdk/jdk/pull/28315. Please
verify if it fixes the crash before integrating this PR. Thanks!
-------------
PR Comment: https://git.openjdk.org/jdk/pull/28240#issuecomment-3534185759