[crac] RFR: Fix: arguments supplied to restore are split with whitespace
Anton Kozlov
akozlov at openjdk.org
Thu Oct 26 19:41:08 UTC 2023
On Thu, 10 Aug 2023 16:02:32 GMT, null <duke at openjdk.org> wrote:
> This PR fixes a bug that causes arguments with whitespaces to be split into multiple arguments during restore.
>
> It contains two commits. The first commit is refactor only. It moves all side effects from `CracRestoreParameters` to the call sites, and changes the type of `CracRestoreParameters::args` from a single string to a `GrowableArray` of strings. Serialization code is also cleaned up a bit.
>
> The second commit fixes the bug by introducing a new pseudo property, `-DCRaCJavaMainArgs`, that is set in `JavaMain`. An instance of `JavaMainArgs` (containing `argc` and `argv`) is stored as extra info of the property, which is later extracted in `Arguments::parse_options_for_restore` and passed to `crac::restore`.
>
> Potential issues:
>
> * We use `putenv` to modify environment variables, which expects `char*`. In this PR, I'm `const_cast`ing from `const char*` to `char*`, since I believe `putenv` doesn't actually modify the string. Is that OK? Maybe rewriting with `setenv` would be better?
> * `read_growable_array` is implemented by reading byte-at-a-time from the shared memory. Will it be too slow? I could rewrite it to read everything at once (like the original code did), but the current implementation is cute and I kinda want to keep it.
Would you mind rebasing the PR?
src/hotspot/share/runtime/arguments.cpp line 2287:
> 2285: }
> 2286: }
> 2287: else if (strcmp(key, "jdk.internal.crac.mainArgs") == 0) {
Nit: please use One-True-Brace-Style https://github.com/openjdk/jdk/blob/master/doc/hotspot-style.md#whitespace
-------------
PR Review: https://git.openjdk.org/crac/pull/101#pullrequestreview-1700515230
PR Review Comment: https://git.openjdk.org/crac/pull/101#discussion_r1373726907
More information about the crac-dev
mailing list