On Wed, 16 Sep 2026 19:10:42 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). This pull request has now been integrated. Changeset: 2a364c40 Author: Robert Toyonaga <[email protected]> URL: https://git.openjdk.org/jdk/commit/2a364c40380ac2f654860908ce58301de56fc4e1 Stats: 62 lines in 5 files changed: 55 ins; 1 del; 6 mod 8392477: -XX:UnlockDiagnosticVMOptions and -XX:UnlockExperimentalVMOptions produce incorrect error Reviewed-by: dholmes, sspitsyn ------------- PR: https://git.openjdk.org/jdk/pull/32910
