Integrated: 8332818: ubsan: archiveHeapLoader.cpp:70:27: runtime error: applying non-zero offset 18446744073707454464 to null pointer

Matthias Baesken mbaesken at openjdk.org
Fri Jun 14 07:16:46 UTC 2024


On Fri, 7 Jun 2024 11:52:42 GMT, Matthias Baesken <mbaesken at openjdk.org> wrote:

> When running :tier1 hs tests, the following issue has been reported when running with ubsan enabled binaries (configure flag --enable-ubsan)  
> 
>  stderr: [/jdk/src/hotspot/share/cds/archiveHeapLoader.cpp:70:27: runtime error: applying non-zero offset 18446744073707454464 to null pointer
>     #0 0x7f33db52823f in ArchiveHeapLoader::init_mapped_heap_info(unsigned char*, long, int) /jdk/src/hotspot/share/cds/archiveHeapLoader.cpp:70
>     #1 0x7f33dc6d3ad4 in FileMapInfo::map_heap_region_impl() /jdk/src/hotspot/share/cds/filemap.cpp:2211
>     #2 0x7f33dc6d4ba4 in FileMapInfo::map_heap_region() /jdk/src/hotspot/share/cds/filemap.cpp:2129
>     #3 0x7f33dc6d52a7 in FileMapInfo::map_or_load_heap_region() /jdk/src/hotspot/share/cds/filemap.cpp:2019
>     #4 0x7f33ddaf7fdb in MetaspaceShared::map_archives(FileMapInfo*, FileMapInfo*, bool) /jdk/src/hotspot/share/cds/metaspaceShared.cpp:1183
>     #5 0x7f33ddaf8f54 in MetaspaceShared::initialize_runtime_shared_and_meta_spaces() /jdk/src/hotspot/share/cds/metaspaceShared.cpp:943
>     #6 0x7f33ddadd60f in Metaspace::global_initialize() /jdk/src/hotspot/share/memory/metaspace.cpp:714
>     #7 0x7f33de9bc7f9 in universe_init() /jdk/src/hotspot/share/memory/universe.cpp:866
>     #8 0x7f33dcc93691 in init_globals() /jdk/src/hotspot/share/runtime/init.cpp:128
>     #9 0x7f33de92a720 in Threads::create_vm(JavaVMInitArgs*, bool*) /jdk/src/hotspot/share/runtime/threads.cpp:553
>     #10 0x7f33dd02d477 in JNI_CreateJavaVM_inner /jdk/src/hotspot/share/prims/jni.cpp:3581
>     #11 0x7f33dd02d477 in JNI_CreateJavaVM /jdk/src/hotspot/share/prims/jni.cpp:3672
>     #12 0x7f33e42a90e5 in InitializeJVM /jdk/src/java.base/share/native/libjli/java.c:1550
>     #13 0x7f33e42a90e5 in JavaMain /jdk/src/java.base/share/native/libjli/java.c:491
>     #14 0x7f33e42b2748 in ThreadJavaMain /jdk/src/java.base/unix/native/libjli/java_md.c:642
>     #15 0x7f33e42616e9 in start_thread (/lib64/libpthread.so.0+0xa6e9) (BuildId: 2f8d3c2d0f4d7888c2598d2ff6356537f5708a73)
>     #16 0x7f33e391550e in clone (/lib64/libc.so.6+0x11850e) (BuildId: f732026552f6adff988b338e92d466bc81a01c37)
> 
> 
> Seems that  `CompressedOops::base() ` can be nullptr , so adding to it some non-zero value triggers ubsan because of undefined behavior.  In the JBS-bug there was already a little discussion and it seems disabling this warning might be an option.
> 
> otherwise some workaround like
> 
> template<typename T>
> T* add_to_ptr_maybe_null(T* ptr, uintptr_t val) {
>   return (T*)((uintptr_t)ptr + val * sizeof(T));
> }
> 
> c...

This pull request has now been integrated.

Changeset: 6861766b
Author:    Matthias Baesken <mbaesken at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/6861766b638c5135ba40f261d78d9731954ce5ab
Stats:     3 lines in 1 file changed: 3 ins; 0 del; 0 mod

8332818: ubsan: archiveHeapLoader.cpp:70:27: runtime error: applying non-zero offset 18446744073707454464 to null pointer

Reviewed-by: stuefe, lucy

-------------

PR: https://git.openjdk.org/jdk/pull/19597


More information about the hotspot-runtime-dev mailing list