RFR: 8359120: Improve warning message when fail to load hsdis library [v2]

Tobias Hartmann thartmann at openjdk.org
Fri Jun 27 10:19:40 UTC 2025


On Mon, 23 Jun 2025 08:56:12 GMT, Taizo Kurashige <tkurashige at openjdk.org> wrote:

>> This PR is improvement of warning message when fail to load hsdis library.
>> 
>> [JDK-8287001](https://bugs.openjdk.org/browse/JDK-8287001) introduced a warning on hsdis library load failure. This is useful when the user executes -XX:+PrintAssembly, etc.
>> 
>> However, I think that when hs_err occurs, users might be confused by this warning printed by Xlog. Because users are not likely to know that hsdis is loaded for the [MachCode] section of the hs_err report, they may wonder, for example, "Why do I get warnings about hsdis load errors when -XX:+PrintAssembly is not specified?."
>> 
>> To clear up this confusion, I suggest printing a warning just before [MachCode].
>> 
>> <details>
>> 
>> <summary>sample output</summary>
>> 
>> If hs_err occurs and hsdis load fails without the option to specify where the hs_err report should be output, the following is output to the hs_err_pir log file:
>> 
>> .
>> .
>> native method entry point (kind = native)  [0x000001ae8753cec0, 0x000001ae8753dac0]  3072 bytes
>> 
>> Loading hsdis library failed, so undisassembled code is printed in the below [MachCode] section
>> [MachCode]
>>   0x000001ae8753cec0: 488b 4b08 | 0fb7 492e | 584c 8d74 | ccf8 6800 | 0000 0068 | 0000 0000 | 5055 488b | ec41 5548
>>   0x000001ae8753cee0: 8b43 084c | 8d68 3848 | 8b40 0868 | 0000 0000 | 5348 8b50 | 18
>> .
>> .
>> 
>> 
>> If -XX:+PrintAssembly is specified and hsdis load fails, the following is output to the stdout
>> 
>> $ java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -version
>> OpenJDK 64-Bit Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output
>> 
>> ============================= C1-compiled nmethod ==============================
>> ----------------------------------- Assembly -----------------------------------
>> 
>> Compiled method (c1) 57    2       3       java.lang.Object::<init> (1 bytes)
>>  total in heap  [0x0000024a08a00008,0x0000024a08a00208] = 512
>> .
>> .
>> 
>> [Constant Pool (empty)]
>> 
>> 
>> Loading hsdis library failed, so undisassembled code is printed in the below [MachCode] section
>> [MachCode]
>> [Instructions begin]
>>   0x0000024a08a00100: 6666 660f | 1f84 0000 | 0000 0066 | 6666 9066 | 6690 448b | 5208 443b
>> .
>> .
>> [Constant Pool (empty)]
>> 
>> 
>> Loading hsdis library failed, so undisassembled code is printed in the below [MachCode] section
>> [MachCode]
>> [Verified Entry Point]
>>   # {method} {0x00000000251a1898} 'toUnsignedInt' '(B)I' in 'java/lang/Byte
>> .
>> .
>> 
>> 
>> </details>
>> 
>> Since...
>
> Taizo Kurashige has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fix message and revert lines for Xlog

Don't we already have such error reporting code in `Disassembler::load_library`?
https://github.com/openjdk/jdk/blob/c33c1cfe7349ac657cd7bf54861227709d3c8f1b/src/hotspot/share/compiler/disassembler.cpp#L863

-------------

PR Comment: https://git.openjdk.org/jdk/pull/25726#issuecomment-3012486620


More information about the hotspot-compiler-dev mailing list