Skip to content

Fix GraalVM flag selection when USE_MEOWICE_FLAGS is not set - #4204

Merged
itzg merged 1 commit into
itzg:masterfrom
OowhitecatoO:fix/graalvm-flags-java-version
Aug 1, 2026
Merged

Fix GraalVM flag selection when USE_MEOWICE_FLAGS is not set#4204
itzg merged 1 commit into
itzg:masterfrom
OowhitecatoO:fix/graalvm-flags-java-version

Conversation

@OowhitecatoO

Copy link
Copy Markdown
Contributor

Fixes #3881.

Setting USE_MEOWICE_GRAALVM_FLAGS=true without also setting USE_MEOWICE_FLAGS makes the JVM exit at startup on any GraalVM 25 image: Error parsing Graal options: Could not find option OptWriteMotion. This reproduces on the currently published java25-graalvm tag, so it is not tied to the variants being rebuilt.

java_major_version is assigned at start-finalExec:217, inside the USE_MEOWICE_FLAGS guard, but it is read at :350 inside the USE_MEOWICE_GRAALVM_FLAGS block. With only the latter set the variable is never assigned, and since an unset value compares as 0, [[ $java_major_version -gt 23 ]] is false and the pre-Java-24 flag set is emitted — including -Dgraal.OptWriteMotion=true, which GraalVM removed in 25 and whose parser treats an unknown option as fatal.

This assigns the version when either flag is set. The other three combinations emit exactly the same command line as before.

Details, if useful

-Dgraal.OptWriteMotion=true passed to java -version directly:

image result
Oracle GraalVM 21.0.12 starts, exit 0
Oracle GraalVM 25.0.4 Could not find option OptWriteMotion, A fatal exception has occurred, exit 1
itzg/minecraft-server:java25-graalvm as published (25.0.1) same, exit 1

Which branch each combination takes, checked with SETUP_ONLY=true on a GraalVM 25 image and reading the printed SETUP_ONLY: java ... line:

USE_MEOWICE_FLAGS USE_MEOWICE_GRAALVM_FLAGS branch OptWriteMotion emitted
unset unset block skipped no
set unset block skipped no
unset set Using MeowIce's flags for Graalvm yes — the failure
set set Java 24 or higher detected no

With this change the third row becomes Java 24 or higher detected and stops emitting the option; the other three rows are unchanged, which I checked by diffing the printed command lines. The modern flag set on its own was also run against GraalVM 25.0.4 to confirm it starts cleanly.

Verification used the script mount from the development docs — -v .../start-finalExec:/image/scripts/start-finalExec:ro — rather than rebuilding, and bash -n passes on the modified script.

Choosing USE_MEOWICE_FLAGS || USE_MEOWICE_GRAALVM_FLAGS rather than hoisting the assignment unconditionally keeps mc-image-helper java-release from running on every start for the majority of users who set neither.

@itzg itzg left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! I was hopeful it was a simple thing like that.

@itzg
itzg merged commit 6fa08c7 into itzg:master Aug 1, 2026
6 checks passed
gabrielcosi pushed a commit to gabrielcosi/home-ops that referenced this pull request Aug 4, 2026
… ➔ 2026.8.0) (#267)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/itzg/minecraft-server](https://github.com/itzg/docker-minecraft-server) | minor | `2026.7.2-java25` → `2026.8.0-java25` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/2) for more information.

---

### Release Notes

<details>
<summary>itzg/docker-minecraft-server (ghcr.io/itzg/minecraft-server)</summary>

### [`v2026.8.0`](https://github.com/itzg/docker-minecraft-server/releases/tag/2026.8.0)

[Compare Source](itzg/docker-minecraft-server@2026.7.2...2026.8.0)

<!-- Release notes generated using configuration in .github/release.yml at 1e2d375dba72a0730365c29dd5f1990f9764da5a -->

##### What's Changed

##### Enhancements

- Implement GTNH daily build support by [@&#8203;SgtMate](https://github.com/SgtMate) in [#&#8203;4190](itzg/docker-minecraft-server#4190)

##### Bug Fixes

- Update dependency itzg/mc-image-helper to v1.63.1 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4189](itzg/docker-minecraft-server#4189)
- Move knockd config out of /tmp by [@&#8203;itzg](https://github.com/itzg) in [#&#8203;4193](itzg/docker-minecraft-server#4193)
- Use Metalcape knockd by default for java25 by [@&#8203;itzg](https://github.com/itzg) in [#&#8203;4194](itzg/docker-minecraft-server#4194)
- Fix NanoLimbo port not applying to an existing settings.yml by [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) in [#&#8203;4201](itzg/docker-minecraft-server#4201)
- Ensure debugging starts after loading CF\_API\_KEY\_FILE by [@&#8203;itzg](https://github.com/itzg) in [#&#8203;4208](itzg/docker-minecraft-server#4208)

##### Documentation

- build(deps): bump the patches group in /docs with 2 updates by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4187](itzg/docker-minecraft-server#4187)
- Add daily build options to gtnh example by [@&#8203;SgtMate](https://github.com/SgtMate) in [#&#8203;4191](itzg/docker-minecraft-server#4191)
- docs: add seedloaf sponsor by [@&#8203;jasperchess](https://github.com/jasperchess) in [#&#8203;4197](itzg/docker-minecraft-server#4197)
- Enhance SECURITY.md with automated scan information by [@&#8203;itzg](https://github.com/itzg) in [#&#8203;4212](itzg/docker-minecraft-server#4212)

##### Other Changes

- Update dependency itzg/mc-image-helper to v1.63.0 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4184](itzg/docker-minecraft-server#4184)
- build(deps): bump actions/stale from 10 to 11 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4196](itzg/docker-minecraft-server#4196)
- build(deps): bump docker/login-action from 4.4.0 to 4.5.2 in the updates group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4195](itzg/docker-minecraft-server#4195)
- Update dependency itzg/mc-image-helper to v1.63.2 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4198](itzg/docker-minecraft-server#4198)
- Fix build workflow conditionals that always evaluated true by [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) in [#&#8203;4203](itzg/docker-minecraft-server#4203)
- Update dependency itzg/mc-image-helper to v1.64.0 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4202](itzg/docker-minecraft-server#4202)
- Fix GraalVM flag selection when USE\_MEOWICE\_FLAGS is not set by [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) in [#&#8203;4204](itzg/docker-minecraft-server#4204)
- Add SECURITY.md for security policy and reporting by [@&#8203;itzg](https://github.com/itzg) in [#&#8203;4207](itzg/docker-minecraft-server#4207)
- Restore the GraalVM image variants by [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) in [#&#8203;4205](itzg/docker-minecraft-server#4205)
- Update dependency itzg/mc-monitor to v0.17.0 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4209](itzg/docker-minecraft-server#4209)
- Enable compact object headers on Java 24+ by [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) in [#&#8203;4211](itzg/docker-minecraft-server#4211)
- Update dependency itzg/mc-image-helper to v1.64.1 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4213](itzg/docker-minecraft-server#4213)

##### New Contributors

- [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) made their first contribution in [#&#8203;4201](itzg/docker-minecraft-server#4201)

**Full Changelog**: <itzg/docker-minecraft-server@2026.7.2...2026.8.0>

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Berlin)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC41LjMiLCJ1cGRhdGVkSW5WZXIiOiI0NC41LjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvbWlub3IiXX0=-->

Reviewed-on: https://git.xcd.dev/gabrielcosi/home-ops/pulls/267
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Java25 GraalVM cannot start with Meowice GraalVM flags because of OptWriteMotion

2 participants