RFR: 8352184: Jtreg tests using CommandLineOptionTest.getVMTypeOption() and optionsvalidation.JVMOptionsUtils fail on static JDK [v2]

David Holmes dholmes at openjdk.org
Tue Mar 25 05:20:07 UTC 2025


On Mon, 24 Mar 2025 20:22:55 GMT, Jiangli Zhou <jiangli at openjdk.org> wrote:

>> Please review following changes, thanks.
>> 
>> - Add `static` to the vm_info for static JDK. The `-version` output now contains `static` on static JDK, e.g.:
>> 
>> 
>> $ static-jdk/bin/java -version
>> openjdk version "25-internal" 2025-09-16
>> OpenJDK Runtime Environment (fastdebug build 25-internal-adhoc.jianglizhou.jdk)
>> OpenJDK 64-Bit Server VM (fastdebug build 25-internal-adhoc.jianglizhou.jdk, mixed mode, static, sharing)
>> 
>> $ jdk/bin/java -version
>> openjdk version "25-internal" 2025-09-16
>> OpenJDK Runtime Environment (fastdebug build 25-internal-adhoc.jianglizhou.jdk)
>> OpenJDK 64-Bit Server VM (fastdebug build 25-internal-adhoc.jianglizhou.jdk, mixed mode, sharing)
>> 
>> 
>> Following changes resolve jtreg test failures on static JDK due to '-server|-client|-minimal|-zero' flag added by `CommandLineOptionTest.getVMTypeOption()` or `optionsvalidation.JVMOptionsUtils`. '-server|-client|-minimal|-zero' flags are unrecognized on static JDK (please see https://bugs.openjdk.org/browse/JDK-8350982).
>> 
>> - Add `jdk.test.lib.Platform.isStatic()`, which checks for `static` in `java.vm.info` system property to determine if current test is running on static JDK. 
>> - Change `CommandLineOptionTest` to only call `getVMTypeOption()` on regular JDK (`!Platform.isStatic()`).
>> - Change `optionsvalidation.JVMOptionsUtils` to only set VMType to '-server|-client|-minimal' on regular JDK ( `!Platform.isStatic()`.
>
> Jiangli Zhou has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Allocate memory for vm_info string using NEW_C_HEAP_ARRAY.

I was only going to handle the static part as a special case but you are right that also handling sharing this way makes a lot of sense and cleans up the code.

src/hotspot/share/runtime/abstract_vm_version.cpp line 169:

> 167:   jio_snprintf(vm_info, len, "%s%s%s", mode,
> 168:                is_vm_statically_linked() ? ", static" : "",
> 169:                CDSConfig::is_using_archive() ? ", sharing" : "");

I would prefer to see these parts defined as `const char * static_str = ", static"` so we can use `strlen` above rather than having magic numbers.

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

Changes requested by dholmes (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/24171#pullrequestreview-2712401528
PR Review Comment: https://git.openjdk.org/jdk/pull/24171#discussion_r2011325318


More information about the hotspot-runtime-dev mailing list