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

JDWP/JDI VM information string is incorrect

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 11
    • 11
    • core-svc
    • None
    • b18

        In writing a new JDI test I noticed in the output:

        JVM version:11-internal
        JDI version: 9.0
        JVM description: Java Debug Interface (Reference Implementation) version 9.0
        Java Debug Wire Protocol (Reference Implementation) version 9.0
        JVM Debug Interface version 11.0
        JVM version 11-internal (Java HotSpot(TM) 64-Bit Server VM, mixed mode, aot, sharing)

        This last line claims that AOT and CDS are being used!

        I augmented the JDI code to show the actual command-line and to add -showversion. Here's the command line:

        LAUNCHING VM: /export/users/dh198349/valhalla/repos/valhalla-dev/build/linux-x64-debug/images/jdk/bin/java -classpath /export/users/dh198349/valhalla/repos/valhalla-dev/open/test/jdk/JTwork/classes/com/sun/jdi/RedefineNestmateAttr/TestNestmateAttr.d -Xdebug -showversion -Xrunjdwp:transport=dt_socket,address=bussund0416:48834,suspend=y Target

        and here's the result of -showversion

        java version "11-internal" 2018-09-25
        Java(TM) SE Runtime Environment 18.9 (fastdebug build 11-internal+0-2018-05-08-0508063.daholme.valhalla-dev)
        Java HotSpot(TM) 64-Bit Server VM 18.9 (fastdebug build 11-internal+0-2018-05-08-0508063.daholme.valhalla-dev, mixed mode)

        No AOT or CDS shown.

        AFAICS there is only one place where this version string information can come from:

        Abstract_VM_Version::vm_info_string():

            case Arguments::_mixed:
              if (UseSharedSpaces) {
                if (UseAOT) {
                  return "mixed mode, aot, sharing";
        #ifdef TIERED
                } else if(is_client_compilation_mode_vm()) {
                  return "mixed mode, emulated-client, sharing";
        #endif
                } else {
                  return "mixed mode, sharing";
                 }
              } else {
                if (UseAOT) {
                  return "mixed mode, aot";
        #ifdef TIERED
                } else if(is_client_compilation_mode_vm()) {
                  return "mixed mode, emulated-client";
        #endif
                } else {
                  return "mixed mode";
                }
              }

        but that requires UseAOT and UseSharedSpeces to be true.

        Something unexpected is happening here.

              cjplummer Chris Plummer
              dholmes David Holmes
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: