oracle/graal · critical · GraalError

No backend available for host architecture \"%s\"

Error message

No backend available for host architecture \"%s\"

What it means

HotSpotGraalRuntime's constructor asks the selected CompilerConfigurationFactory's BackendMap for a HotSpotBackendFactory matching the host architecture; if none is registered (factory == null), GraalError 'No backend available for host architecture "arch"' aborts Graal initialization — the compiler cannot run without a code generator for the machine it is on.

Source

Thrown at compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/HotSpotGraalRuntime.java:173

        }
        options = selectedOptions;
        config = selectedConfig;
        outputDirectory = new DiagnosticsOutputDirectory(options);
        compilationProblemsPerAction = new EnumMap<>(ExceptionAction.class);
        snippetCounterGroups = GraalOptions.SnippetCounters.getValue(options) ? new ArrayList<>() : null;
        CompilerConfiguration compilerConfiguration = compilerConfigurationFactory.createCompilerConfiguration();
        compilerConfigurationName = compilerConfigurationFactory.getName();

        this.instrumentation = compilerConfigurationFactory.createInstrumentation(options);

        CompilerConfigurationFactory.BackendMap backendMap = compilerConfigurationFactory.createBackendMap();

        JVMCIBackend hostJvmciBackend = jvmciRuntime.getHostJVMCIBackend();
        Architecture hostArchitecture = hostJvmciBackend.getTarget().arch;
        try (InitTimer t = timer("create backend:", hostArchitecture)) {
            HotSpotBackendFactory factory = backendMap.getBackendFactory(hostArchitecture);
            if (factory == null) {
                throw new GraalError("No backend available for host architecture \"%s\"", hostArchitecture);
            }
            if (replayCompilationSupport != null) {
                factory = replayCompilationSupport.decorateBackendFactory(factory, jvmciRuntime);
            }
            hostBackend = registerBackend(factory.createBackend(this, compilerConfiguration, jvmciRuntime, null));
        }

        for (JVMCIBackend jvmciBackend : jvmciRuntime.getJVMCIBackends().values()) {
            if (jvmciBackend == hostJvmciBackend) {
                continue;
            }

            Architecture gpuArchitecture = jvmciBackend.getTarget().arch;
            HotSpotBackendFactory factory = backendMap.getBackendFactory(gpuArchitecture);
            if (factory == null) {
                throw new GraalError("No backend available for specified GPU architecture \"%s\"", gpuArchitecture);
            }
            try (InitTimer t = timer("create backend:", gpuArchitecture)) {

View on GitHub (pinned to a66e9ccd1d)

Solutions

  1. Use a Graal build that includes a backend for your host architecture (or the stock JDK-embedded Graal, which always matches the machine)
  2. Switch -Dgraal.CompilerConfiguration to one whose BackendMap covers your architecture (check the factory's createBackendMap implementation)
  3. If this is your own configuration, register a HotSpotBackendFactory mapping for the host Architecture in the BackendMap
Defensive patterns

Strategy: validation

Validate before calling

// verify a backend factory exists for the host arch before enabling JVMCI (conceptually):
Architecture host = jvmciRuntime.getHostJVMCIBackend().getTarget().arch;
if (backendMap.getBackendFactory(host) == null) { /* refuse startup with a clear message */ }

Prevention

When it happens

Trigger: Running the JVMCI/Graal compiler on a host architecture for which the compiler configuration has no backend factory — e.g. a configuration that only maps AMD64/AArch64 while running on riscv64/ppc64le/s390x, or a build that omitted the arch-specific backend jar.

Common situations: Running a community/enterprise build without the backend for an exotic architecture; mis-selected CompilerConfiguration that scopes backends (e.g. a custom configuration omitting the host arch); broken installs missing backend modules.

Related errors


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