From 29afc0412ee3dbaf14d67d9800481ba415e40156 Mon Sep 17 00:00:00 2001 From: Bennet Bo Fenner Date: Tue, 30 Sep 2025 22:01:45 +0200 Subject: [PATCH] worktree: Remove unwrap in BackgroundScanner::update_ignore_status (#39191) We've seen this panic come up in the last two weeks, which might be caused by #33592. However, we are not sure what paths can cause this `unwrap()` to fail. Therefore adding some logging around this, so that the next time someone opens a bug report we can further diagnose the issue. Fixes ZED-1F6 Release Notes: - Fixed an issue where Zed could crash when including specific paths in a global `.gitignore` files --- crates/worktree/src/worktree.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/crates/worktree/src/worktree.rs b/crates/worktree/src/worktree.rs index f5b8448ba0b10da8361bd4b62a5f00e565e3034c..807aa9943129cd18eb8f5cede47adf58b6993491 100644 --- a/crates/worktree/src/worktree.rs +++ b/crates/worktree/src/worktree.rs @@ -4547,10 +4547,21 @@ impl BackgroundScanner { let mut entries_by_id_edits = Vec::new(); let mut entries_by_path_edits = Vec::new(); - let path = job + let Some(path) = job .abs_path .strip_prefix(snapshot.abs_path.as_path()) - .unwrap(); + .map_err(|_| { + anyhow::anyhow!( + "Failed to strip prefix '{}' from path '{}'", + snapshot.abs_path.as_path().display(), + job.abs_path.display() + ) + }) + .log_err() + else { + return; + }; + let Some(path) = RelPath::new(&path, PathStyle::local()).log_err() else { return; };