mirror of
https://github.com/zed-industries/zed.git
synced 2026-05-24 05:25:18 +00: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
94 lines
2.4 KiB
TOML
94 lines
2.4 KiB
TOML
[package]
|
|
name = "git_ui"
|
|
version = "0.1.0"
|
|
edition.workspace = true
|
|
publish.workspace = true
|
|
license = "GPL-3.0-or-later"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[lib]
|
|
name = "git_ui"
|
|
path = "src/git_ui.rs"
|
|
|
|
[features]
|
|
test-support = ["multi_buffer/test-support", "remote_connection/test-support"]
|
|
|
|
[dependencies]
|
|
agent_settings.workspace = true
|
|
alacritty_terminal.workspace = true
|
|
anyhow.workspace = true
|
|
askpass.workspace = true
|
|
buffer_diff.workspace = true
|
|
call.workspace = true
|
|
collections.workspace = true
|
|
component.workspace = true
|
|
db.workspace = true
|
|
editor.workspace = true
|
|
file_icons.workspace = true
|
|
fs.workspace = true
|
|
futures.workspace = true
|
|
futures-lite.workspace = true
|
|
fuzzy.workspace = true
|
|
fuzzy_nucleo.workspace = true
|
|
git.workspace = true
|
|
gpui.workspace = true
|
|
itertools.workspace = true
|
|
language.workspace = true
|
|
language_model.workspace = true
|
|
linkify.workspace = true
|
|
log.workspace = true
|
|
markdown.workspace = true
|
|
menu.workspace = true
|
|
multi_buffer.workspace = true
|
|
notifications.workspace = true
|
|
panel.workspace = true
|
|
picker.workspace = true
|
|
project.workspace = true
|
|
prompt_store.workspace = true
|
|
proto.workspace = true
|
|
rand.workspace = true
|
|
remote_connection.workspace = true
|
|
remote.workspace = true
|
|
schemars.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
settings.workspace = true
|
|
smallvec.workspace = true
|
|
strum.workspace = true
|
|
sysinfo.workspace = true
|
|
telemetry.workspace = true
|
|
theme.workspace = true
|
|
theme_settings.workspace = true
|
|
time.workspace = true
|
|
time_format.workspace = true
|
|
ui.workspace = true
|
|
ui_input.workspace = true
|
|
util.workspace = true
|
|
watch.workspace = true
|
|
workspace.workspace = true
|
|
zed_actions.workspace = true
|
|
zeroize.workspace = true
|
|
ztracing.workspace = true
|
|
tracing.workspace = true
|
|
[target.'cfg(windows)'.dependencies]
|
|
windows.workspace = true
|
|
|
|
[dev-dependencies]
|
|
ctor.workspace = true
|
|
editor = { workspace = true, features = ["test-support"] }
|
|
gpui = { workspace = true, features = ["test-support"] }
|
|
indoc.workspace = true
|
|
pretty_assertions.workspace = true
|
|
project = { workspace = true, features = ["test-support"] }
|
|
rand.workspace = true
|
|
settings = { workspace = true, features = ["test-support"] }
|
|
task.workspace = true
|
|
unindent.workspace = true
|
|
workspace = { workspace = true, features = ["test-support"] }
|
|
zlog.workspace = true
|
|
remote_connection = { workspace = true, features = ["test-support"] }
|
|
|
|
[package.metadata.cargo-machete]
|
|
ignored = ["tracing"]
|