oracle/graal · error · ChildProcessError

graalos-config-util finished unsuccessfully with return code

Error message

graalos-config-util finished unsuccessfully with return code {rc}!

What it means

Raised after the harness runs graalos-config-util as a subprocess (mx.run with nonZeroIsFatal=False): a nonzero return code means config generation failed. The harness logs captured stderr first, then raises ChildProcessError with the return code so the benchmark aborts instead of running with a missing/partial endpoint config.

Source

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

        file_path = self._get_staged_benchmark_run_config_path()
        binsweep = self._require_executable(build_dir / "binsweep" / "home" / "bin" / "binsweep", "binsweep")

        extra_config_path = self._create_staged_benchmark_fs_mapping_file()
        config_util = self._resolve_graalos_config_util()
        cmd = [
            str(config_util),
            "--host-dir", str(rootfs),
            "--binsweep", str(binsweep),
            "--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}",

View on GitHub (pinned to a66e9ccd1d)

Solutions

  1. Read the logged stderr line directly above the exception — it contains the tool's real error message; fix that root cause (paths, config contents).
  2. Update/reinstall graalos-config-util to the version matching this mx SDK revision.
  3. Validate the extra-config-path JSON and the binsweep/rootfs inputs by running graalos-config-util manually with the same arguments shown in the failure.

Example fix

# before (tool fails opaquely inside mx)
mx benchmark polybench-graalhost
# ChildProcessError: graalos-config-util finished unsuccessfully with return code 1!

# after (reproduce manually to see stderr, fix inputs, then rerun)
graalos-config-util --host-dir "$ROOTFS" --binsweep <binsweep> \
  --endpoint-config /tmp/t.json --extra-config-path <extra>   # fix reported issue
mx benchmark polybench-graalhost
Defensive patterns

Strategy: retry

Validate before calling

import subprocess
rc = subprocess.run(['graalos-config-util', '--help'], capture_output=True).returncode
assert rc == 0, 'graalos-config-util is broken; fix/reinstall before benchmarking'

Try / catch

try/except ChildProcessError; capture mx's logged stderr (printed just before the raise), fix the tool's reported problem (paths/config), then retry the run stage.

Prevention

When it happens

Trigger: The graalos-config-util invocation with --host-dir/--binsweep/--endpoint-config/--extra-config-path fails: bad ROOTFS layout, missing binsweep input, invalid extra config JSON, or a version mismatch between the tool and the harness arguments.

Common situations: ROOTFS missing files the tool expects to sweep; corrupted or schema-mismatched extra config; older graalos-config-util on PATH that does not know the flags; disk-full during config write.

Related errors


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