{"record":{"id":"5f022049ddbaa791","repo":"oracle/graal","slug":"description-path-does-not-exist","errorCode":null,"errorMessage":"{description} '{path}' does not exist!","messagePattern":"(.+?) '(.+?)' does not exist!","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"sdk/mx.sdk/mx_sdk_benchmark.py","lineNumber":2260,"sourceCode":"        if not build_dir.is_dir():\n            raise ValueError(f\"Environment variable 'GRAALOS_BUILD' points to '{build_dir}' which is not a directory!\")\n        return build_dir\n\n    @staticmethod\n    def _resolve_rootfs() -> Path:\n        \"\"\"Verifies that the ROOTFS env var is set and points to a directory. Returns the directory path.\"\"\"\n        rootfs_env_var = os.getenv(\"ROOTFS\")\n        if rootfs_env_var is None:\n            raise ValueError(\"Environment variable 'ROOTFS' is unset! It must point to the CPython file-system root!\")\n        rootfs = Path(rootfs_env_var).resolve()\n        if not rootfs.is_dir():\n            raise ValueError(f\"Environment variable 'ROOTFS' points to '{rootfs}' which is not a directory!\")\n        return rootfs\n\n    @staticmethod\n    def _require_executable(path: Path, description: str) -> Path:\n        if not path.is_file():\n            raise ValueError(f\"{description} '{path}' does not exist!\")\n        if not os.access(path, os.X_OK):\n            raise ValueError(f\"{description} '{path}' is not executable!\")\n        return path\n\n    @staticmethod\n    def _resolve_graalhost_binary(build_dir: Path) -> Path:\n        \"\"\"Resolve the GraalHost binary from the GraalOS build directory.\"\"\"\n        return GraalHostPolyBenchStagingVm._require_executable(build_dir / \"graalhost\" / \"graalhost\", \"GraalHost binary\")\n\n    @staticmethod\n    def _resolve_graalos_config_util() -> Path:\n        \"\"\"Resolve the graalos-config-util CLI from PATH.\"\"\"\n        config_util = shutil.which(\"graalos-config-util\")\n        if config_util is None:\n            raise ValueError(\"Could not resolve 'graalos-config-util' from PATH!\")\n        return GraalHostPolyBenchStagingVm._require_executable(Path(config_util).resolve(), \"graalos-config-util\")\n\n    def _get_staged_benchmark_run_config_path(self) -> Path:","sourceCodeStart":2242,"sourceCodeEnd":2278,"githubUrl":"https://github.com/oracle/graal/blob/a66e9ccd1d7bf2552883939aa0788dfd0e294aab/sdk/mx.sdk/mx_sdk_benchmark.py#L2242-L2278","documentation":"Generic guard inside _require_executable: for a described tool path (GraalHost binary, graalos-config-util) the file must exist (is_file()); otherwise ValueError '{description} {path} does not exist!'. It is used whenever the harness resolves concrete binaries needed for staging/running GraalHost benchmarks.","triggerScenarios":"GRAALOS_BUILD/graalhost/graalhost missing because the GraalOS build did not produce the binary, or a graalos-config-util resolved from PATH but deleted/being a dangling symlink; also paths into a partially cleaned build tree.","commonSituations":"Incomplete or failed GraalOS build; build artifacts removed by mx clean; running the benchmark on a machine that never built graalhost but only set the env vars.","solutions":["Build the missing artifact (GraalOS graalhost target) so GRAALOS_BUILD/graalhost/graalhost exists and is a regular file.","For graalos-config-util, reinstall it or fix PATH so it resolves to a real file.","Verify manually: ls -la \"$GRAALOS_BUILD/graalhost/graalhost\"."],"exampleFix":"# before\n$GRAALOS_BUILD/graalhost/graalhost  # absent -> 'GraalHost binary ... does not exist!'\n\n# after\n$ ninja -C \"$GRAALOS_BUILD\" graalhost && mx benchmark polybench-graalhost","handlingStrategy":"validation","validationCode":"from pathlib import Path\ngh = Path(os.environ['GRAALOS_BUILD']) / 'graalhost' / 'graalhost'\nassert gh.is_file(), f'missing GraalHost binary at {gh}; build it first'","typeGuard":null,"tryCatchPattern":"try/except ValueError; the message embeds both description and path — use it to drive a rebuild step then retry.","preventionTips":["Preflight-check required binaries after any mx clean or workspace refresh.","Treat partial build trees as a smell: verify expected artifacts exist before benchmarking."],"tags":["mx","benchmark","graalos","path-validation","executable"],"backgroundTag":null,"analyzedSha":"a66e9ccd1d7bf2552883939aa0788dfd0e294aab","analyzedAt":"2026-08-14T13:58:47.161Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}