Hi Yasumasa,

The word "VERSION" actually means different things in different places. That's the confusing part.

"jcmd <pid> VM.stringtable -verbose" prints out the version of the "string listing".

However,

The VERSION in SharedArchiveConfigFile means the "version of the config file". The current version is 1.0. The format of this file is:

    VERSION: 1.0
    @SECTION: Symbol
    ....contents of "jcmd <pid> VM.symboltable -verbose" (**)
    @SECTION: String
    ....contents of "jcmd <pid> VM.stringtable -verbose"(**)

(**) The first two lines of jcmd output (pid and VERSION) should be skipped.


So the creation of the config file is somewhat manual -- you need to cut out the process id anyway (maybe we should add an option to jcmd to not print the process ID).

I think a proper fix should clarify which VERSION we are looking for. We need a mechanism to ensure that the @SECTIONs for Symbol and String are in the correct format as expected by the JVM.

How about changing the config file format to this:

    VERSION: 1.1
    @SECTION: Symbol
    VERSION: 1.0
    ....contents of "jcmd <pid> VM.symboltable -verbose" (**)
    @SECTION: String
    VERSION: 1.1
    ....contents of "jcmd <pid> VM.stringtable -verbose" (**)


So we have 3 kinds of VERSIONS - for the config file, for the symbol section, and for the string section.

What do you think?

Thanks
- Ioi




On 3/25/18 5:46 PM, Yasumasa Suenaga wrote:
Hi all,

Please review this change.

      JBS: https://bugs.openjdk.java.net/browse/JDK-8200204
   webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8200204/webrev.00/
submit-hs: mach5-one-ysuenaga-JDK-8200204-20180325-1440-16057


JDK-8134448 says SharedArchiveConfigFile accepts output of `jcmd <pid> VM.stringtable -verbose` , but it could not because JDK-8059510 has changed version number to 1.1 .

I think we should accept version 1.1 stringtable.


Thanks,

Yasumasa

Reply via email to