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

Cleanups and improvements for print_location



    • Type: Enhancement
    • Status: Closed
    • Priority: P5
    • Resolution: Won't Fix
    • Affects Version/s: 9
    • Fix Version/s: tbd
    • Component/s: hotspot


      The print_location() function is used to show information about an unknown memory address and is currently used to help analyze register content is hs_err files. It is quite useful and could also be used in other places in the future.

      The function (and hence, the register output in hs_err files) could be improved in a number of ways:

      - print_location() (and by extension, any functions called by it, like os::find) should use a caller provided scratch buffer and avoid using on-stack buffers.

      - For text addresses, print_location() should not only show the library, but also the function name, if possible.

      - For unknown values, it prints the numeric register content twice: "r18=0x0000000000000000: 0x0000000000000000 is an unknown value".

      - For known values, it omits the numeric value completely: "RCX=C:\d031900\openjdk\jdk9-hs-rt\output\images\jdk\bin\server\jvm.dll + 12". But the numeric value is still useful.

      - To further improve readibily, we could omit the path name of library names. All libraries are displayed later in the library section with full path name anyway.

      - There is a lot of code duplication: We have os::dll_address_to_function_name() and os::dll_address_to_library_name() as well as os::find(). On Posix, almost all of them do some variant of dladdr() call. It may be possible to unify and reduce this coding.

      - The same is true for also get_signal_handler_name(), whose implementation is the same across all Posix platforms. It also does only print the library name and could be improved by printing the function name as well - this would be useful when telling apart the various signal handlers of the JDK itself, for example.

      - Finally, we currently have two register printouts in hs-err files (the plain one and the one which resolves memory locations). Only one is needed.


          Issue Links



              Unassigned Unassigned
              stuefe Thomas Stuefe
              0 Vote for this issue
              4 Start watching this issue