zed-industries/zed · error
unable to spawn server process
Error message
unable to spawn server process
What it means
Fires in the crash handler setup (macOS/Unix path) when the crash-handler subprocess cannot be spawned via async_process::Command (missing executable, fork/exec failure). The panic hook cannot report crashes without this server process.
Source
Thrown at crates/crashes/src/crashes.rs:587
unsafe {
mach2::task::task_threads(task, &raw mut threads, &raw mut count);
}
let current = unsafe { mach2::mach_init::mach_thread_self() };
for i in 0..count {
let t = unsafe { *threads.add(i as usize) };
if t != current {
unsafe { mach2::thread_act::thread_resume(t) };
}
}
}
}
#[cfg(not(target_os = "windows"))]
fn spawn_crash_handler(exe: &Path, socket_name: &Path) -> async_process::Child {
async_process::Command::new(exe)
.arg("--crash-handler")
.arg(&socket_name)
.spawn()
.expect("unable to spawn server process")
}
#[cfg(target_os = "windows")]
fn spawn_crash_handler(exe: &Path, socket_name: &Path) {
use std::ffi::OsStr;
use std::iter::once;
use std::os::windows::ffi::OsStrExt;
use windows::Win32::System::Threading::{
CreateProcessW, PROCESS_CREATION_FLAGS, PROCESS_INFORMATION, STARTF_FORCEOFFFEEDBACK,
STARTUPINFOW,
};
use windows::core::PWSTR;
let mut command_line: Vec<u16> = OsStr::new(&format!(
"\"{}\" --crash-handler \"{}\"",
exe.display(),
socket_name.display()
))View on GitHub (pinned to f4178619ac)
Solutions
- Verify the crash-handler executable path exists and is executable
- Check resource limits (RLIMIT_NPROC) and fork availability
- Ensure no sandbox policy blocks process spawning at panic time
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at crates/crashes/src/crashes.rs:587 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20).
Data as JSON: /api/errors/086acbaf4a009ed0.
Report an issue: GitHub.