{"record":{"id":"23a02b249ebf81cd","repo":"oracle/graal","slug":"no-backend-available-for-host-architecture-s","errorCode":null,"errorMessage":"No backend available for host architecture \\\"%s\\\"","messagePattern":"No backend available for host architecture \\\\\"(.+?)\\\\\"","errorType":"exception","errorClass":"GraalError","httpStatus":null,"severity":"critical","filePath":"compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/HotSpotGraalRuntime.java","lineNumber":173,"sourceCode":"        }\n        options = selectedOptions;\n        config = selectedConfig;\n        outputDirectory = new DiagnosticsOutputDirectory(options);\n        compilationProblemsPerAction = new EnumMap<>(ExceptionAction.class);\n        snippetCounterGroups = GraalOptions.SnippetCounters.getValue(options) ? new ArrayList<>() : null;\n        CompilerConfiguration compilerConfiguration = compilerConfigurationFactory.createCompilerConfiguration();\n        compilerConfigurationName = compilerConfigurationFactory.getName();\n\n        this.instrumentation = compilerConfigurationFactory.createInstrumentation(options);\n\n        CompilerConfigurationFactory.BackendMap backendMap = compilerConfigurationFactory.createBackendMap();\n\n        JVMCIBackend hostJvmciBackend = jvmciRuntime.getHostJVMCIBackend();\n        Architecture hostArchitecture = hostJvmciBackend.getTarget().arch;\n        try (InitTimer t = timer(\"create backend:\", hostArchitecture)) {\n            HotSpotBackendFactory factory = backendMap.getBackendFactory(hostArchitecture);\n            if (factory == null) {\n                throw new GraalError(\"No backend available for host architecture \\\"%s\\\"\", hostArchitecture);\n            }\n            if (replayCompilationSupport != null) {\n                factory = replayCompilationSupport.decorateBackendFactory(factory, jvmciRuntime);\n            }\n            hostBackend = registerBackend(factory.createBackend(this, compilerConfiguration, jvmciRuntime, null));\n        }\n\n        for (JVMCIBackend jvmciBackend : jvmciRuntime.getJVMCIBackends().values()) {\n            if (jvmciBackend == hostJvmciBackend) {\n                continue;\n            }\n\n            Architecture gpuArchitecture = jvmciBackend.getTarget().arch;\n            HotSpotBackendFactory factory = backendMap.getBackendFactory(gpuArchitecture);\n            if (factory == null) {\n                throw new GraalError(\"No backend available for specified GPU architecture \\\"%s\\\"\", gpuArchitecture);\n            }\n            try (InitTimer t = timer(\"create backend:\", gpuArchitecture)) {","sourceCodeStart":155,"sourceCodeEnd":191,"githubUrl":"https://github.com/oracle/graal/blob/a66e9ccd1d7bf2552883939aa0788dfd0e294aab/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/HotSpotGraalRuntime.java#L155-L191","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Use a Graal build that includes a backend for your host architecture (or the stock JDK-embedded Graal, which always matches the machine)","Switch -Dgraal.CompilerConfiguration to one whose BackendMap covers your architecture (check the factory's createBackendMap implementation)","If this is your own configuration, register a HotSpotBackendFactory mapping for the host Architecture in the BackendMap"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// verify a backend factory exists for the host arch before enabling JVMCI (conceptually):\nArchitecture host = jvmciRuntime.getHostJVMCIBackend().getTarget().arch;\nif (backendMap.getBackendFactory(host) == null) { /* refuse startup with a clear message */ }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use Graal builds that ship backends for your target architectures","Cross-check -Dgraal.CompilerConfiguration against the host arch","Prefer the JDK's embedded Graal for non-x64/aarch64 hosts"],"tags":["graal-compiler","architecture","backend","startup"],"backgroundTag":null,"analyzedSha":"a66e9ccd1d7bf2552883939aa0788dfd0e294aab","analyzedAt":"2026-08-14T13:58:47.161Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}