zed-industries/zed · error

X11 connection: Maximum request length exceeded

Error message

X11 connection: Maximum request length exceeded

What it means

Mapping arm in handle_connection_error: the client tried to send an X11 request larger than the server's maximum request length (ConnectionError::MaximumRequestLengthExceeded), typically a huge property write (e.g. a very large WM_HINTS/ChangeProperty or image put) exceeding ~16MB or the server's big-requests limit.

Source

Thrown at crates/gpui_linux/src/linux/x11/window.rs:436

        return;
    }

    hints.urgent = urgent;
    check_reply(
        || "X11 ChangeProperty for WM_HINTS urgency failed.",
        hints.set(xcb, x_window),
    )
    .log_err();
    xcb_flush(xcb);
}

/// Convert X11 connection errors to `anyhow::Error` and panic for unrecoverable errors.
pub(crate) fn handle_connection_error(err: ConnectionError) -> anyhow::Error {
    match err {
        ConnectionError::UnknownError => anyhow!("X11 connection: Unknown error"),
        ConnectionError::UnsupportedExtension => anyhow!("X11 connection: Unsupported extension"),
        ConnectionError::MaximumRequestLengthExceeded => {
            anyhow!("X11 connection: Maximum request length exceeded")
        }
        ConnectionError::FdPassingFailed => {
            panic!("X11 connection: File descriptor passing failed")
        }
        ConnectionError::ParseError(parse_error) => {
            anyhow!(parse_error).context("Parse error in X11 response")
        }
        ConnectionError::InsufficientMemory => panic!("X11 connection: Insufficient memory"),
        ConnectionError::IoError(err) => anyhow!(err).context("X11 connection: IOError"),
        _ => anyhow!(err),
    }
}

impl X11WindowState {
    pub fn new(
        handle: AnyWindowHandle,
        client: X11ClientStatePtr,
        executor: ForegroundExecutor,

View on GitHub (pinned to 9d272b0363)

Solutions

  1. Chunk large data into multiple smaller requests below the max request length
  2. Query the connection's maximum_request_length upfront and size requests accordingly
  3. Avoid shipping entire large buffers (images, long property values) in a single X11 request
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at crates/gpui_linux/src/linux/x11/window.rs:431 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/0a1912a7182224a7. Report an issue: GitHub.