On Fri, 18 Sep 2026 14:44:12 GMT, Robert Toyonaga <[email protected]> wrote:

>> ### Summary
>> 
>> When specifying `-XX:UnlockDiagnosticVMOptions` without the necessary +/-, 
>> the following error is produced:
>> 
>> $ java -XX:UnlockDiagnosticVMOptions -m jdk.httpserver
>> Error: VM option 'UnlockDiagnosticVMOptions' is diagnostic and must be 
>> enabled via -XX:+UnlockDiagnosticVMOptions.
>> 
>> 
>> Similarly with `-XX:UnlockExperimentalVMOptions`:
>> 
>> $ java -XX:UnlockExperimentalVMOptions -m jdk.httpserver
>> Error: VM option 'UnlockExperimentalVMOptions' is experimental and must be 
>> enabled via -XX:+UnlockExperimentalVMOptions.
>> 
>> 
>> This recursive complaint about using the unlocker to unlock the unlocker is 
>> misleading and probably confusing for users.
>> 
>> ### Root cause
>> The problem is that `UnlockDiagnosticVMOptions` is **itself**  a 
>> _diagnostic_ option. And `UnlockExperimentalVMOptions` is **itself** an 
>> _experimental_ option.
>> 
>> `Arguments::process_argument` calls `parse_argument` which notices 
>> `UnlockDiagnosticVMOptions`/`UnlockExperimentalVMOptions` is missing +/-  so 
>>  leaves the option **unset**. Since the unlocker option is unset, and the 
>> unlocker option is itself diagnostic/experiemental, the "must be enabled" 
>> error is thrown because it hasn't yet been unlocked.
>> 
>> UnlockDiagnosticVMOptions defaults to true in debug, so the problem only 
>> manifests in release builds. 
>> UnlockExperimentalVMOptions always defaults to false, so the problem 
>> manifests in all builds. 
>> 
>> 
>> ### Solution
>> The solution is to treat `UnlockDiagnosticVMOptions` and 
>> `UnlockExperimentalVMOptions` as always unlocked. The existing Hotspot code 
>> already essentially does this, but this PR formalizes it in 
>> `JVMFlag::is_unlocked()`.  As an added benefit, this allows for some 
>> simplification in other places too where we check the status of flags.
>> 
>> 
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Robert Toyonaga has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   fix bug and add test

This looks good. Thanks to David for catching the typo.

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

Marked as reviewed by sspitsyn (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/32910#pullrequestreview-5252941923

Reply via email to