rustdesk/rustdesk · error
wayland socket probe answered a malformed list: {err}
Error message
wayland socket probe answered a malformed list: {err} What it means
The probe ran to success but its JSON output line could not be deserialized into Vec<WaylandDisplayInfo>, meaning the child's answer was corrupted or produced by an incompatible probe version — the parent refuses to accept a list it cannot parse.
Source
Thrown at libs/base/src/platform/linux/wayland_probe.rs:258
let mut lines = stdout.lines();
if lines.next() != Some(WAYLAND_PROBE_MAGIC) {
// Not a probe: the binary ran its normal startup. Latch, or this path would spawn one
// full consumer process per enumeration cycle.
PROBE_UNSUPPORTED.store(true, Ordering::Release);
bail!("this binary does not dispatch {WAYLAND_DISPLAY_PROBE_ARG}; probe disabled");
}
if !status.success() {
let detail = stderr.trim();
if detail.is_empty() {
// panic=abort or a signal leaves stderr empty; the status is then the only cause.
bail!("wayland socket probe failed: {status}");
}
bail!("wayland socket probe failed ({status}): {detail}");
}
let displays: Vec<WaylandDisplayInfo> =
match serde_json::from_str(lines.next().unwrap_or_default()) {
Ok(displays) => displays,
Err(err) => bail!("wayland socket probe answered a malformed list: {err}"),
};
// The child already refuses an empty list; refuse it here too, so a truncated pipe cannot
// become a cached-for-life empty enumeration.
if displays.is_empty() {
bail!("wayland socket probe returned no outputs");
}
log::debug!(
"wayland: {} output(s) via the probe subprocess",
displays.len()
);
Ok(displays)
}
/// Everything already buffered in the pipe, read strictly non-blocking and capped: a descendant
/// that escaped the probe's process group can hold a write end open, so a blocking read (even
/// after the child exits) could hang the enumeration forever. `None` means the pipe could not be
/// INSPECTED (missing handle or fcntl failure) and must not be read as evidence of anything;
/// `Some` is whatever bytes were buffered, whether or not EOF arrived.View on GitHub (pinned to 91c9fccbb0)
Solutions
- Check for a version mismatch between the parent binary and the probe serialization format
- Retry the probe; a corrupted pipe read may be transient
- Inspect the raw stdout line that failed parsing
- Rebuild/reinstall so the child and parent share the same WaylandDisplayInfo schema
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at libs/base/src/platform/linux/wayland_probe.rs:258 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- Parsing and encoding errors: unexpected token, malformed input — why parsers reject input and how to find the real culprit.
AI-assisted analysis of rustdesk/rustdesk@91c9fccbb0 (2026-09-10).
Data as JSON: /api/errors/32e07dbd82a1098d.
Report an issue: GitHub.