{"record":{"id":"ed752946a3bf59af","repo":"jdx/mise","slug":"engine-bin-exited-abnormally-status","errorCode":null,"errorMessage":"{engine_bin} exited abnormally: {status:?}","messagePattern":"(.+?) exited abnormally: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/oci/run.rs","lineNumber":220,"sourceCode":"                Ok(out) if out.status.success() => {}\n                Ok(out) => {\n                    // Don't fail the overall command — just note it; a\n                    // failing rmi usually means the image is still in use\n                    // (e.g. another concurrent run) or was already deleted.\n                    let stderr = String::from_utf8_lossy(&out.stderr);\n                    debug!(\"{engine_bin} rmi {image_ref} failed: {stderr}\");\n                }\n                Err(e) => debug!(\"failed to spawn {engine_bin} rmi: {e}\"),\n            }\n        }\n\n        let status = run_result?;\n        if let Some(code) = status.code() {\n            if code != 0 {\n                return Err(crate::request_exit(code));\n            }\n        } else if !status.success() {\n            bail!(\"{engine_bin} exited abnormally: {status:?}\");\n        }\n        Ok(())\n    }\n}\n\nfn select_engine(requested: Engine) -> Result<Engine> {\n    match requested {\n        Engine::Podman => {\n            if file::which(\"podman\").is_some() {\n                Ok(Engine::Podman)\n            } else {\n                bail!(\"--engine podman requested but `podman` was not found on PATH\")\n            }\n        }\n        Engine::Docker => {\n            if file::which(\"docker\").is_none() {\n                bail!(\"--engine docker requested but `docker` was not found on PATH\");\n            }","sourceCodeStart":202,"sourceCodeEnd":238,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/cli/oci/run.rs#L202-L238","documentation":"After `mise oci run` launches the container engine, mise checks the exit status. If the engine process terminated without an exit code (killed by a signal, e.g. SIGKILL/SIGSEGV) and was unsuccessful, mise reports the raw ExitStatus instead of an exit code to propagate. Normal non-zero exit codes are forwarded as-is via request_exit, so this error indicates an abnormal termination.","triggerScenarios":"The selected engine binary (docker/podman) is killed by a signal during `mise oci run` — status.code() is None while success() is false.","commonSituations":"OOM killer terminating a docker daemon mid-run, podman receiving SIGTERM/SIGKILL from the shell or cgroup limits, or a crashed engine binary.","solutions":["Rerun the command; transient kills (OOM) may not recur","Check `dmesg`/journalctl for OOM or signal kills of docker/podman","Increase memory limits or reduce container workload","Verify the engine daemon is healthy (`docker info` / `podman info`)"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"mise oci run ... || { rc=$?; if [ $rc -gt 128 ]; then echo \"engine killed by signal $((rc-128))\"; fi; }","preventionTips":["Monitor dmesg/journalctl for OOM kills of docker/podman","Ensure the engine daemon is running and healthy before batch runs","Set adequate memory limits for containers launched from OCI images"],"tags":["oci","process","docker","signal"],"backgroundTag":"unexpected-response-shape","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}