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: when the asdf plugin's list-all script is killed by a signal (status.code() is None), mise reports 'error running <script>: terminated by signal' with the captured stderr. This indicates the script was aborted abnormally rather than exiting with an error code.
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 afd2eddd3a)
Solutions
- Check dmesg/journalctl for OOM kills and rerun with more memory or fewer concurrent operations.
- Reinstall the plugin (`mise plugin remove <name> && mise plugin add <name>`) to rule out a corrupted script.
- Run `mise ls-remote <plugin>` alone with MISE_DEBUG=1 to reproduce and capture the signal context.
- Inspect the plugin's list-all script for helpers that may crash (e.g. compiled binaries).
Defensive patterns
Strategy: retry
Try / catch
// detect signal termination and retry with backoff / fewer concurrency
try {
execSync('mise install erlang');
} catch (e) {
if (/terminated by signal/.test(String(e.stderr))) {
await sleep(2000);
execSync('mise install erlang'); // e.g. after fixing OOM pressure
}
} Prevention
- Give CI runners enough memory for plugin scripts; avoid parallel mise installs on small boxes.
- Check dmesg/journalctl for OOM killer activity after this error.
- Pin and reinstall plugins to rule out corrupted scripts.
When it happens
Trigger: The plugin's bin/list-all process was killed — e.g. SIGKILL from the OOM killer, SIGTERM from a timeout/CI job cancellation, or SIGSEGV in a helper invoked by the script.
Common situations: Memory-constrained CI runners OOM-killing list-all; mise process managers or watchers terminating long-running plugin scripts; corrupted plugin scripts triggering crashes.
Related errors
- error running {}: exited with code {} {}
- {tool}'s bin/install exited successfully but installed nothi
- asdf plugin '{plugin_name}' exists but '{tool_name}' is not
- Paranoid mode is enabled, refusing to install community-deve
- {ba} is not installed
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/8f267db1f358040d.
Report an issue: GitHub.