Error codes
Every failure of a Session, an installer or a command session is an
ExecutionError: invalid input throws one with INVALID_INPUT, and a host or
core failure rejects with one. A guest that
exits, even with a nonzero exit code, is not an error: its run resolves with
the exitCode. Every code is in the exported ERROR_CODES, and error.code
is always one of them.
An ExecutionError carries:
code, one of the codes below.stdoutandstderr, the bytes the guest wrote before the failure (empty when it never ran). They are new arrays and never shared.runId, for a failed guest run.cause, when the run failed inside the Worker: the first four errors of the original cause chain, by name, with the message only of an engineRangeError, a WebAssembly error or the core’sPaludariumError(runtime architecture). Caller data such as paths or env values stays in the Worker.
A failed or cancelled run leaves the Session’s files and working directory as they were, and a failed install keeps the old registration.
| Code | Raised when |
|---|---|
INVALID_INPUT |
An argument breaks its rules: a malformed option, path, guest, catalog or command line, checked before anything starts. An install also refuses a download whose size, archive, ELF or digest is wrong. |
ASSET_LOAD |
The package Worker or a core file is missing, or does not match the SHA-256 in assets/paludarium/build-info.json; for an install, an HTTP, CORS, redirect, body or network failure. |
UNSUPPORTED_ENV |
The platform lacks something: Node.js older than 26; in a browser, no Worker, SharedArrayBuffer or cross-origin isolation, a Worker URL on another origin, or network without network.relay; for an install, a host without crypto.subtle, fetch or DecompressionStream. |
CORE_INIT |
The emulator core failed to start. |
EXECUTION |
The run failed inside the Worker or between it and the Session, for example a WebAssembly trap or a message the Session could not accept. |
SNAPSHOT |
The Worker did not return a complete, valid snapshot of the files after the run, so nothing from that run is kept. |
TIMEOUT |
A run outlasted timeoutMs (600000 ms by default; no limit by default with stdin), or an install outlasted its 120 s fetch or 180 s total limit. |
ABORTED |
The caller’s AbortSignal was aborted, before or during the operation, or reset cancelled it. |
BUSY |
Another run, install or command already holds the Session. |
DISPOSED |
The Session was disposed. |
NOT_FOUND |
The guest or tool is not registered, or a path does not exist. |
NOT_FILE |
A path that must be a regular file is not one (readFile, cat, cp without -r), or a working directory is not a directory. |
The install API and the command API give the order in which they check these and their own conditions.