jdx/mise · error
error running : terminated by signal
Error message
error running {}: terminated by signal
{} What it means
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.
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
Example fix
null
Defensive patterns
Strategy: retry
Validate before calling
null
Try / catch
catch (e) {
if (/terminated by signal/.test(String(e))) {
// transient kill (OOM/timeout): retry with backoff and more memory
}
} Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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.
Understand the failure class
Background: "git command failed": what it means when a tool shells out to git and git exits non-zero — this error's family across 21 libraries.
Related errors
- error running : exited with code
- asdf plugin ' ' exists but ' ' is not available or the…
- is not installed
- Paranoid mode is enabled, refusing to install…
- 's bin/install exited successfully but installed nothing…
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/8f267db1f358040d.
Report an issue: GitHub.
Appendix: source
Thrown at src/plugins/asdf_plugin.rs:133
Settings::get().fetch_remote_versions_timeout(),
)
.wrap_err_with(|| {
let script = script_man.get_script_path(&Script::ListAll);
eyre!("Failed to run {}", display_path(script))
})?;
let stdout = String::from_utf8(result.stdout).unwrap();
let stderr = String::from_utf8(result.stderr).unwrap().trim().to_string();
let display_stderr = || {
if !stderr.is_empty() {
eprintln!("{stderr}");
}
};
if !result.status.success() {
let s = Script::ListAll;
match result.status.code() {
Some(code) => bail!("error running {}: exited with code {}\n{}", s, code, stderr),
None => bail!("error running {}: terminated by signal\n{}", s, stderr),
};
} else if Settings::get().verbose {
display_stderr();
}
Ok(stdout
.split_whitespace()
.map(|v| regex!(r"^v(\d+)").replace(v, "$1").to_string())
.collect())
}
pub(crate) fn fetch_latest_stable(
&self,
script_man: &ScriptManager,
) -> eyre::Result<Option<String>> {
let latest_stable = script_man.read(&Script::LatestStable)?.trim().to_string();
Ok(if latest_stable.is_empty() {
None
} else {View on GitHub (pinned to 533346cc37)