Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8351333

[ubsan] archiveBuilder.cpp:1204:26: runtime error: applying non-zero offset 1027 to null pointer

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P4 P4
    • 25
    • 25
    • hotspot
    • aarch64
    • os_x

      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);
        }

            iklam Ioi Lam
            mbaesken Matthias Baesken
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: