{"record":{"id":"8f267db1f358040d","repo":"jdx/mise","slug":"error-running-terminated-by-signal","errorCode":null,"errorMessage":"error running {}: terminated by signal\n{}","messagePattern":"error running (.+?): terminated by signal\n(.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/plugins/asdf_plugin.rs","lineNumber":133,"sourceCode":"            Settings::get().fetch_remote_versions_timeout(),\n        )\n        .wrap_err_with(|| {\n            let script = script_man.get_script_path(&Script::ListAll);\n            eyre!(\"Failed to run {}\", display_path(script))\n        })?;\n        let stdout = String::from_utf8(result.stdout).unwrap();\n        let stderr = String::from_utf8(result.stderr).unwrap().trim().to_string();\n\n        let display_stderr = || {\n            if !stderr.is_empty() {\n                eprintln!(\"{stderr}\");\n            }\n        };\n        if !result.status.success() {\n            let s = Script::ListAll;\n            match result.status.code() {\n                Some(code) => bail!(\"error running {}: exited with code {}\\n{}\", s, code, stderr),\n                None => bail!(\"error running {}: terminated by signal\\n{}\", s, stderr),\n            };\n        } else if Settings::get().verbose {\n            display_stderr();\n        }\n\n        Ok(stdout\n            .split_whitespace()\n            .map(|v| regex!(r\"^v(\\d+)\").replace(v, \"$1\").to_string())\n            .collect())\n    }\n    pub(crate) fn fetch_latest_stable(\n        &self,\n        script_man: &ScriptManager,\n    ) -> eyre::Result<Option<String>> {\n        let latest_stable = script_man.read(&Script::LatestStable)?.trim().to_string();\n        Ok(if latest_stable.is_empty() {\n            None\n        } else {","sourceCodeStart":115,"sourceCodeEnd":151,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/plugins/asdf_plugin.rs#L115-L151","documentation":"Same code path as the exit-code variant: the asdf plugin's `list-all` script was terminated by a signal rather than exiting normally (result.status.code() is None). mise reports the script name and its stderr.","triggerScenarios":"The plugin's list-all script is killed by SIGKILL (OOM killer), SIGTERM (timeout manager), or similar while mise runs `mise ls-remote` or resolves a version for an asdf plugin.","commonSituations":"CI memory limits causing the OOM killer to terminate a memory-hungry plugin script; sandbox/timeout tooling sending SIGTERM; container killing long-running downloads in list-all.","solutions":["Check dmesg/CI logs for OOM killer or timeout events and raise memory/time limits","Re-run the command — signal kills are often transient","Update the plugin, since some plugins spawn processes that get reaped incorrectly","Switch to a native mise backend for the tool to avoid the plugin script entirely"],"exampleFix":"null","handlingStrategy":"retry","validationCode":"null","typeGuard":null,"tryCatchPattern":"catch (e) {\n  if (/terminated by signal/.test(String(e))) {\n    // transient kill (OOM/timeout): retry with backoff and more memory\n  }\n}","preventionTips":["Give CI jobs enough memory for plugin scripts","Avoid aggressive external timeouts wrapping mise commands","Keep plugins updated; report plugin scripts that spawn unkillable children","Check dmesg for oom-kill events when this recurs"],"tags":["asdf","plugin","signal","command-failed"],"backgroundTag":"git-command-failed","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"}