zed-industries/zed · error · std::io::Error

stderr closed

Error message

stderr closed

What it means

Fires in execute_proxy when reading the remote server's stderr forwarding socket returns 0 bytes, i.e. the server closed the stderr socket connection. This indicates the remote server process exited or its stderr pipe ended, so the proxy can no longer forward server diagnostics.

Source

Thrown at crates/remote_server/src/server.rs:959

        let mut stderr = smol::Unblock::new(std::io::stderr());
        let mut stream = UnixStream::connect(&server_paths.stderr_socket)
            .await
            .with_context(|| {
                format!(
                    "Failed to connect to stderr socket {}",
                    server_paths.stderr_socket.display()
                )
            })?;
        let mut stderr_buffer = vec![0; 2048];
        loop {
            match stream
                .read(&mut stderr_buffer)
                .await
                .context("reading stderr")?
            {
                0 => {
                    let error =
                        std::io::Error::new(std::io::ErrorKind::UnexpectedEof, "stderr closed");
                    Err(anyhow!(error))?;
                }
                n => {
                    stderr.write_all(&stderr_buffer[..n]).await?;
                    stderr.flush().await?;
                }
            }
        }
    });

    if let Err(forwarding_result) = gpui::block_on(async move {
        futures::select! {
            result = stdin_task.fuse() => result.map_err(ExecuteProxyError::StdinTask),
            result = stdout_task.fuse() => result.map_err(ExecuteProxyError::StdoutTask),
            result = stderr_task.fuse() => result.map_err(ExecuteProxyError::StderrTask),
        }
    }) {
        log::error!("encountered error while forwarding messages: {forwarding_result:#}",);

View on GitHub (pinned to 9d272b0363)

Solutions

  1. Check whether the remote server process crashed by inspecting its log files on the remote host
  2. Reconnect to restart the server and re-establish the stderr socket
  3. Verify the stderr socket file was not deleted or corrupted in the server data directory
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at crates/remote_server/src/server.rs:959 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of zed-industries/zed@9d272b0363 (2026-08-20). Data as JSON: /api/errors/edbbf9bab37be54d. Report an issue: GitHub.