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

  1. Re-run the full staged pipeline (image stage then run stage) so the guest launcher is generated under the image output dir.
  2. Verify the guest/host VM pairing in the benchmark command matches (host must be PolyBenchEmscriptenHostVm and guest PolyBenchEmscriptenGuestVm).
  3. 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

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


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