oracle/graal · error · ValueError

Expected staged GraalHost run config at '{run_config_path}'

Error message

Expected staged GraalHost run config at '{run_config_path}' but it does not exist!

What it means

Raised by run_stage_run in the staged GraalHost benchmark flow (mx_sdk_benchmark.py). Before launching GraalHost with --run_config=@<path>, the suite verifies that a staged benchmark run-config file exists at the path returned by _get_staged_benchmark_run_config_path(). If the file is missing, the run refuses to start because GraalHost cannot resolve its run configuration.

Source

Thrown at sdk/mx.sdk/mx_sdk_benchmark.py:2364

            "--endpoint-config", str(file_path),
            "--extra-config-path", str(extra_config_path),
        ]
        out = mx.OutputCapture()
        err = mx.OutputCapture()
        rc = mx.run(cmd, out=out, err=err, nonZeroIsFatal=False)
        mx.log(out.data)
        if rc != 0:
            mx.log(err.data)
            raise ChildProcessError(f"graalos-config-util finished unsuccessfully with return code {rc}!")
        return file_path

    def run_stage_run(self):
        rootfs = self._resolve_rootfs()
        build_dir = self._resolve_graalos_build_dir()
        graalhost = self._resolve_graalhost_binary(build_dir)
        run_config_path = self._get_staged_benchmark_run_config_path()
        if not run_config_path.is_file():
            raise ValueError(f"Expected staged GraalHost run config at '{run_config_path}' but it does not exist!")
        ephemeral_dir = tempfile.mkdtemp(prefix="graalhost_staged_benchmark_", dir=rootfs / "tmp")
        with self.get_stage_runner() as s:
            cmd = [
                str(graalhost),
                f"--ephemeral_dir={ephemeral_dir}",
                "--enable_resolving_env_refs",
                "--visorcalloutput=@none",
                "--log_to=file",
                f"--run_config=@{run_config_path}",
                "--run",
                self.launcher,
                str(self.staged_program_file_path),
            ]
            s.execute_command(self, cmd)


def register_graalvm_vms():
    # a simple JVM config that runs without any custom flag

View on GitHub (pinned to a66e9ccd1d)

Solutions

  1. Run the full staged pipeline (including the stage/config step that produces the run config) instead of only the run step.
  2. Verify the file printed in the message exists: ls <run_config_path>; if not, re-run the staging step that generates it.
  3. Check that the staged program file and working directory were not removed (e.g. by mx clean or a temp-dir cleanup) between staging and running.
  4. If the path itself is wrong, inspect _get_staged_benchmark_run_config_path() and the staged benchmark name/selector used to confirm they match what was staged.

Example fix

# before
mx benchmark ... -- -Dnative-image.benchmark.stages=run   # config never staged

# after
mx benchmark ... -- -Dnative-image.benchmark.stages=config,run   # stage config first, then run
Defensive patterns

Strategy: validation

Validate before calling

from pathlib import Path
run_config = suite._get_staged_benchmark_run_config_path()
assert Path(run_config).is_file(), f"stage the benchmark first; missing {run_config}"

Try / catch

try:
    suite.run_stage_run()
except ValueError as e:
    if 'staged GraalHost run config' in str(e):
        # re-run the config/stage phase, then retry once
        raise

Prevention

When it happens

Trigger: Calling the staged GraalHost benchmark run without having executed the earlier staging step (e.g. the config/stage phase of the native-image benchmark pipeline) that writes the run config into the staged working area, or when the staged program/config files were cleaned up or written to a different directory.

Common situations: Running only the RUN stage via -Dnative-image.benchmark.stages=run on a fresh checkout; CI wiping the staging directory between stages; a mismatch between the staged benchmark directory the config was written to and the one run_stage_run reads from.

Related errors


AI-assisted analysis of oracle/graal@a66e9ccd1d (2026-08-14). Data as JSON: /api/errors/ba7ef030b18f84fa. Report an issue: GitHub.