Silence protobuf sun.misc.Unsafe warnings from the direct header comp… - #375
Open
davido wants to merge 1 commit into
Open
Silence protobuf sun.misc.Unsafe warnings from the direct header comp…#375davido wants to merge 1 commit into
davido wants to merge 1 commit into
Conversation
TurbineDirect bundles protobuf, whose UnsafeUtil calls terminally-deprecated sun.misc.Unsafe methods. On JDK 24+ (JEP 498), the JVM prints a warning for each such call during header compilation: WARNING: A terminally deprecated method in sun.misc.Unsafe has been called WARNING: sun.misc.Unsafe::arrayBaseOffset has been called by com.google.protobuf.UnsafeUtil The direct header compiler has two invocation shapes. The Java TurbineDirect launcher runs as java -jar, but the prebuilt `turbine_direct_graal` tools are native binaries. Only the Java launcher can receive JVM options; the native binary parses the same values as Turbine CLI options and fails with: unknown option: --sun-misc-unsafe-memory-access=allow Add --sun-misc-unsafe-memory-access=allow only when the selected direct header compiler is packaged as a deploy jar and the Java runtime feature version is 24 or newer. This silences the protobuf warning for the Java launcher without breaking the Graal/native path. Add analysis tests for the three relevant cases: JDK 24 plus a jar direct compiler gets the flag, JDK 23 plus a jar direct compiler does not, and JDK 24 plus a native direct compiler does not. See protocolbuffers/protobuf#20760. Closes bazelbuild#374 Tested: * buildifier java/common/rules/java_toolchain.bzl \ test/java/toolchains/java_toolchain_tests.bzl * bazelisk test //test/java/toolchains:java_toolchain_tests \ --test_output=errors
davido
force-pushed
the
turbine-direct-unsafe-memory-access
branch
from
August 18, 2026 05:29
cf27565 to
68de125
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…iler
turbine_direct (header_compiler_direct) bundles protobuf, whose UnsafeUtil calls terminally-deprecated sun.misc.Unsafe methods. On JDK 24+ (JEP 498) the JVM prints a warning for each such call during header compilation:
WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
WARNING: sun.misc.Unsafe::arrayBaseOffset has been called by
com.google.protobuf.UnsafeUtil (.../java_tools/turbine_direct_binary_deploy.jar)
Unlike the Turbine worker, header_compiler_direct does not receive turbine_jvm_opts, and --jvmopt does not reach header-compilation actions, so a toolchain currently has no way to silence these warnings for the direct header compiler. Add --sun-misc-unsafe-memory-access=allow to header_compiler_direct_jvm_opts, gated on the runtime feature version since the flag is rejected on JDK <= 22.
See protocolbuffers/protobuf#20760.
Closes #374