zed-industries/zed · error

unable to find ourselves

Error message

unable to find ourselves

What it means

Error in the crashes crate's connect_and_keepalive when the current executable's own path cannot be determined (current_exe failed or returned nothing), so the crash-handler subprocess cannot be spawned from the same binary. Without it, crash reporting cannot be initialized.

Source

Thrown at crates/crashes/src/crashes.rs:77

    connect_and_keepalive(crash_init, socket_path, wait_timer, spawn)
}

/// Spawn the crash-handler subprocess, connect the IPC client, and run the
/// keepalive ping loop. This is the future returned by [`init`], so it runs on
/// whichever executor the caller polls it with.
async fn connect_and_keepalive<F, C, S, P>(
    crash_init: InitCrashHandler,
    socket_path: P,
    wait_timer: C,
    spawn: S,
) -> Arc<Client>
where
    F: Future<Output = ()> + Send + Sync + 'static,
    C: (Fn(Duration) -> F) + Send + Sync + 'static,
    S: FnOnce(Pin<Box<dyn Future<Output = ()> + Send + 'static>>),
    P: FnOnce(u32) -> PathBuf,
{
    let exe = env::current_exe().expect("unable to find ourselves");
    let socket_path = socket_path(process::id());
    let mut _crash_handler = spawn_crash_handler(&exe, &socket_path);
    info!("spawning crash handler process");
    let mut elapsed = Duration::ZERO;
    let retry_frequency = Duration::from_millis(100);
    let client = loop {
        if let Ok(client) = Client::with_name(SocketName::Path(&socket_path)) {
            info!("connected to crash handler process after {elapsed:?}");
            break client;
        }
        elapsed += retry_frequency;
        wait_timer(retry_frequency).await;
    };
    let client = Arc::new(client);

    panic::set_hook({
        let client = client.clone();
        Box::new(move |payload| {

View on GitHub (pinned to f4178619ac)

Solutions

  1. Avoid running the binary in ways that hide /proc/self/exe (deleted binaries, unusual namespaces)
  2. Ensure the executable is not deleted or moved while running
  3. Check container/sandbox restrictions on /proc access
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at crates/crashes/src/crashes.rs:77 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/9d49444f259c6c03. Report an issue: GitHub.