mirror of
https://github.com/zed-industries/zed.git
synced 2026-06-01 03:14:56 +07:00
Adds a `runtime_diagnostics` section to the dev-only "Show Git Job Queue" output so that when the queue gets stuck, we can tell from the dump itself whether a git subprocess is wedged (and on supported platforms, where it's wedged) without needing the user to run `ps`/`sample`/`lsof` by hand. The new section contains: - **`processes`** — every transitive descendant of the Zed process, with PID, PPID, name, executable, full argv, sysinfo status (`Run`/`Sleep`/`Stop`/`Zombie`/etc.), and elapsed runtime. Cross-platform via `sysinfo`. This is the single most useful field: it instantly answers "is there a stuck `git` child or not?" - **`linux_proc`** *(Linux only)* — for each descendant, `/proc/<pid>/wchan` (the kernel function the thread is sleeping in, e.g. `futex_wait_queue`, `pipe_read`) and `State:` from `/proc/<pid>/status`. - **`macos_git_children`** *(macOS only)* — for any descendant whose name contains `git`, a 2-second `sample` user-space stack and `lsof -p` output. Each is included only if the corresponding system binary exists; otherwise it's skipped. - Windows gets just `processes` (no portable way to grab another process's stack). ### Safety - Cross-platform: only `sysinfo` (an existing workspace dep) is on the always-compiled path. All `sample`/`lsof`/`/proc` code is behind `#[cfg(target_os = ...)]` gates, so Windows builds never see those symbols. - Every fallible step is handled individually: on error it logs a warning and the corresponding key is omitted from the JSON. The queue dump is built and shown the same way whether `gather()` returned a populated object, an empty object, or partial data. - Diagnostics gather runs under `cx.background_spawn(...)` so the macOS `sample` 2-second wait can't block the foreground. - `sample`/`lsof` output is truncated to 64 KB per process at a UTF-8 char boundary. Release Notes: - N/A |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||
| LICENSE-GPL | ||