Allow fallback from runfiles lookup in edge cases #27
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.
Currently, libjvm_stub exits if the C++ runfiles library detects
runfiles but then fails to find the JDK. This was based on the
assumption that this situation could only occur if e.g. Bazel rules
would improperly forward runfiles.
However, this can also happen when the binary using libjvm_stub is itself
launched from another, top-level binary that does not set the variables
used for runfiles discovery. If the top-level binary uses a runfiles
manifest to find the current binary, it will execute it using a path
that points into the Bazel cache directory. Since the contents of the
cache are not hermetic, an adjacent out-of-date .runfiles directory or
MANIFEST may exist as a left-over from a previous direct run of the
current binary. Since there is no way to detect this scenario, fall back
to a system-provided JDK but print a warning.
Also print all Bazel-related warnings to stderr rather than stdout.