When running ubsan enabled binaries on macos aarch64, the test
runtime/cds/appcds/dynamicArchive/ModulePath.java
triggers this warning :
/jdk/src/hotspot/share/cds/archiveBuilder.cpp:1204:26: runtime error: applying non-zero offset 1027 to null pointer
#0 0x1074d1258 in ArchiveBuilder::CDSMapLogger::log(ArchiveBuilder*, FileMapInfo*, ArchiveHeapInfo*, char*, unsigned long) archiveBuilder.cpp:1481
#1 0x1074d05e0 in ArchiveBuilder::write_archive(FileMapInfo*, ArchiveHeapInfo*) archiveBuilder.cpp:1542
#2 0x107b6cb24 in DynamicArchiveBuilder::write_archive(char*, AOTClassLocationConfig*) dynamicArchive.cpp:349
#3 0x107b6f5e8 in DynamicArchiveBuilder::doit() dynamicArchive.cpp:167
#4 0x107b6ea78 in VM_PopulateDynamicDumpSharedSpace::doit() dynamicArchive.cpp:396
#5 0x1088e695c in VM_Operation::evaluate() vmOperations.cpp:74
#6 0x1088fa31c in VMThread::evaluate_operation(VM_Operation*) vmThread.cpp:282
#7 0x1088fae50 in VMThread::inner_execute(VM_Operation*) vmThread.cpp:426
#8 0x1088fa184 in VMThread::loop() vmThread.cpp:492
#9 0x1088f9ee8 in VMThread::run() vmThread.cpp:176
#10 0x108811298 in Thread::call_run() thread.cpp:231
#11 0x1083aa890 in thread_native_entry(Thread*) os_bsd.cpp:601
#12 0x1936fef90 in _pthread_start+0x84 (libsystem_pthread.dylib:arm64e+0x6f90)
#13 0x1936f9d30 in thread_start+0x4 (libsystem_pthread.dylib:arm64e+0x1d30)
The offset/addition seems to be triggered in log_region :
https://github.com/openjdk/jdk/blob/3e46480dcfabf79b74cc371eaa84dce2e252f3da/src/hotspot/share/cds/archiveBuilder.cpp#L1204
static void log_region(const char* name, address base, address top, address requested_base) {
size_t size = top - base;
base = requested_base;
top = requested_base + size; <-------------------------------------------------- seems requested_base is 0 in this case (line 1204)
log_info(cds, map)("[%-18s " PTR_FORMAT " - " PTR_FORMAT " %9zu bytes]",
name, p2i(base), p2i(top), size);
}
runtime/cds/appcds/dynamicArchive/ModulePath.java
triggers this warning :
/jdk/src/hotspot/share/cds/archiveBuilder.cpp:1204:26: runtime error: applying non-zero offset 1027 to null pointer
#0 0x1074d1258 in ArchiveBuilder::CDSMapLogger::log(ArchiveBuilder*, FileMapInfo*, ArchiveHeapInfo*, char*, unsigned long) archiveBuilder.cpp:1481
#1 0x1074d05e0 in ArchiveBuilder::write_archive(FileMapInfo*, ArchiveHeapInfo*) archiveBuilder.cpp:1542
#2 0x107b6cb24 in DynamicArchiveBuilder::write_archive(char*, AOTClassLocationConfig*) dynamicArchive.cpp:349
#3 0x107b6f5e8 in DynamicArchiveBuilder::doit() dynamicArchive.cpp:167
#4 0x107b6ea78 in VM_PopulateDynamicDumpSharedSpace::doit() dynamicArchive.cpp:396
#5 0x1088e695c in VM_Operation::evaluate() vmOperations.cpp:74
#6 0x1088fa31c in VMThread::evaluate_operation(VM_Operation*) vmThread.cpp:282
#7 0x1088fae50 in VMThread::inner_execute(VM_Operation*) vmThread.cpp:426
#8 0x1088fa184 in VMThread::loop() vmThread.cpp:492
#9 0x1088f9ee8 in VMThread::run() vmThread.cpp:176
#10 0x108811298 in Thread::call_run() thread.cpp:231
#11 0x1083aa890 in thread_native_entry(Thread*) os_bsd.cpp:601
#12 0x1936fef90 in _pthread_start+0x84 (libsystem_pthread.dylib:arm64e+0x6f90)
#13 0x1936f9d30 in thread_start+0x4 (libsystem_pthread.dylib:arm64e+0x1d30)
The offset/addition seems to be triggered in log_region :
https://github.com/openjdk/jdk/blob/3e46480dcfabf79b74cc371eaa84dce2e252f3da/src/hotspot/share/cds/archiveBuilder.cpp#L1204
static void log_region(const char* name, address base, address top, address requested_base) {
size_t size = top - base;
base = requested_base;
top = requested_base + size; <-------------------------------------------------- seems requested_base is 0 in this case (line 1204)
log_info(cds, map)("[%-18s " PTR_FORMAT " - " PTR_FORMAT " %9zu bytes]",
name, p2i(base), p2i(top), size);
}