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
- Read the logged stderr line directly above the exception — it contains the tool's real error message; fix that root cause (paths, config contents).
- Update/reinstall graalos-config-util to the version matching this mx SDK revision.
- 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
- Pin a graalos-config-util version matching the mx SDK revision.
- Smoke-test the tool manually with the same arguments before long benchmark runs.
- Validate extra-config JSON schema and rootfs contents as part of environment setup.
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
- Could not resolve 'graalos-config-util' from PATH!
- Environment variable 'GRAALOS_BUILD' is unset! It must point
- Environment variable 'GRAALOS_BUILD' points to '{build_dir}'
- Environment variable 'ROOTFS' is unset! It must point to the
- Environment variable 'ROOTFS' points to '{rootfs}' which is
AI-assisted analysis of oracle/graal@a66e9ccd1d (2026-08-14).
Data as JSON: /api/errors/a67a2e7fc075a680.
Report an issue: GitHub.