oracle/graal · error · ValueError
Guest launcher '{guest_launcher}' does not resolve to a file
Error message
Guest launcher '{guest_launcher}' does not resolve to a file! What it means
Raised by the Emscripten host VM in run_stage_run: the guest VM's launcher path (produced by vm.guest_launcher(self)) must be an existing file, because the host will exec it to run the staged program. A missing file means the guest image/staging stage did not produce the expected launcher, and a ValueError aborts the stage.
Source
Thrown at sdk/mx.sdk/mx_sdk_benchmark.py:2090
cmd = [self.launcher, str(self.staged_program_file_path)]
s.execute_command(self, cmd)
def get_stage_runner(self) -> SimpleStageRunner:
return SimpleStageRunner(self.stages_info, self.bmSuite, self.stages_context)
class PolyBenchEmscriptenHostVm(PolyBenchStagingVm):
"""Host VM that implements Emscripten used for running staged PolyBench programs through a guest-provided launcher."""
def run_stage_run(self):
vm = bm_exec_context().get("vm")
if not isinstance(vm, PolyBenchEmscriptenGuestVm):
mx.abort(f"{self.__class__.__name__} expects a PolyBenchEmscriptenGuestVm guest VM in the execution context.")
if vm.host_vm() != self:
mx.abort(f"Guest VM '{vm.name()}:{vm.config_name()}' is not hosted by '{self.name()}:{self.config_name()}'.")
guest_launcher = vm.guest_launcher(self)
if not Path(guest_launcher).is_file():
raise ValueError(f"Guest launcher '{guest_launcher}' does not resolve to a file!")
with self.get_stage_runner() as s:
cmd = [self.launcher, guest_launcher, str(self.staged_program_file_path)]
s.execute_command(self, cmd)
class PolyBenchEmscriptenGuestVm(mx_benchmark.GuestVm):
"""Abstract PolyBench Guest VM entry for running on an Emscripten host VM."""
def __init__(self, host_vm=None):
super().__init__(host_vm)
self._guest_run_on_java_home_value = None
self._guest_run_on_java_home_set = False
def guest_launcher(self, host_vm: PolyBenchEmscriptenHostVm) -> str:
"""
Return the launcher executable that the Emscripten host should invoke for this guest.
The returned path must resolve to a file and is used as the first command element.
"""
raise NotImplementedError()View on GitHub (pinned to a66e9ccd1d)
Solutions
- Re-run the full staged pipeline (image stage then run stage) so the guest launcher is generated under the image output dir.
- Verify the guest/host VM pairing in the benchmark command matches (host must be PolyBenchEmscriptenHostVm and guest PolyBenchEmscriptenGuestVm).
- Check that the output directory was not cleaned between stages; inspect vm.guest_launcher(self) return value manually.
Example fix
# before mx benchmark polybench-js -- --stages=run # launcher not yet generated # after mx benchmark polybench-js -- --stages=image,run
Defensive patterns
Strategy: validation
Validate before calling
launcher_path = Path(guest_vm.guest_launcher(host_vm))
if not launcher_path.is_file():
sys.exit(f"guest launcher missing at {launcher_path}; run the image stage first") Try / catch
try/except ValueError around the run stage; if raised, re-run the image stage then retry the run stage once.
Prevention
- Always run stages as image,run in one invocation for staged benchmarks.
- Do not clean output dirs between stages.
- Assert guest/host VM pairing before starting long benchmark jobs.
When it happens
Trigger: Running the 'run' stage of a PolyBench Emscripten benchmark where the guest VM (e.g. a GraalWasm/GraalJS guest) did not generate its launcher file, or the guest_launcher() path points into a clean/rotated output directory.
Common situations: Running the run stage without a prior successful image stage (staged-benchmark output missing), stale output dirs from previous runs, or a mismatch between guest and host VM configs in the mx benchmark invocation.
Related errors
- Launcher '{self.launcher}' does not resolve to an executable
- Expected staged GraalHost run config at '{run_config_path}'
- unexpected tuple size for jvmci variant {variant} (size must
- Native Image benchmarks do not support additional options, b
- Environment variable 'GRAALOS_BUILD' is unset! It must point
AI-assisted analysis of oracle/graal@a66e9ccd1d (2026-08-14).
Data as JSON: /api/errors/cc031363fc615572.
Report an issue: GitHub.