Skip to content

Fix race condition in OpenPathDelegate#57290

Merged
osyvokon merged 1 commit into
mainfrom
open_path_prompt_highlight_panic
May 21, 2026
Merged

Fix race condition in OpenPathDelegate#57290
osyvokon merged 1 commit into
mainfrom
open_path_prompt_highlight_panic

Conversation

@osyvokon

Copy link
Copy Markdown
Contributor

Directory entries and string matches can briefly go out of sync during async updates. When that happens, we used to highlight the wrong substring (best case), or panic if the offset happens to be mid-Unicode or out of range.

After this change, we fall back to rendering a row without highlights when matches are out of sync. The highlight will be shown on the next frame. This is a rare condition and the easiest fix, so should be acceptable.

Closes FR-11

Release Notes:

  • Fixed rare panic in the open path dialog

Directory entries and string matches can briefly go out of sync during
async updates. When that happens, we used to highlight the wrong
substring (best case), or panic if the offset happens to be mid-Unicode
or out of range.

After this change, we fall back to rendering a row without highlights
when matches are out of sync. The highlight will be shown on the next
frame. This is a rare condition and the easiest fix, so should be
acceptable.
@cla-bot cla-bot Bot added the cla-signed The user has signed the Contributor License Agreement label May 20, 2026
@zed-community-bot zed-community-bot Bot added the staff Pull requests authored by a current member of Zed staff label May 20, 2026
@osyvokon osyvokon added this pull request to the merge queue May 21, 2026
Merged via the queue into main with commit ddb847d May 21, 2026
44 checks passed
@osyvokon osyvokon deleted the open_path_prompt_highlight_panic branch May 21, 2026 04:02
zed-zippy Bot added a commit that referenced this pull request May 21, 2026
…57291) (cherry-pick to preview) (#57367)

Cherry-pick of #57291 to preview

----
HighlightedLabel would crash the application if any provided highlight
index was invalid. In theory, this should never happen. In practice,
this can happen due to race conditions at call sites.

After this change, we only panic in debug builds. In release builds, we
log an error and return a label with no highlights. The error message
includes the call site so that it's easier to fix the root cause.

Related to #57290

Part of FR-11.

Release Notes:

- N/A

Co-authored-by: Oleksiy Syvokon <oleksiy@zed.dev>
zed-zippy Bot added a commit that referenced this pull request May 21, 2026
…57291) (cherry-pick to stable) (#57366)

Cherry-pick of #57291 to stable

----
HighlightedLabel would crash the application if any provided highlight
index was invalid. In theory, this should never happen. In practice,
this can happen due to race conditions at call sites.

After this change, we only panic in debug builds. In release builds, we
log an error and return a label with no highlights. The error message
includes the call site so that it's easier to fix the root cause.

Related to #57290

Part of FR-11.

Release Notes:

- N/A

Co-authored-by: Oleksiy Syvokon <oleksiy@zed.dev>
TomPlanche pushed a commit to TomPlanche/zed that referenced this pull request Jun 2, 2026
Directory entries and string matches can briefly go out of sync during
async updates. When that happens, we used to highlight the wrong
substring (best case), or panic if the offset happens to be mid-Unicode
or out of range.

After this change, we fall back to rendering a row without highlights
when matches are out of sync. The highlight will be shown on the next
frame. This is a rare condition and the easiest fix, so should be
acceptable.

Closes FR-11

Release Notes:

- Fixed rare panic in the open path dialog
TomPlanche pushed a commit to TomPlanche/zed that referenced this pull request Jun 2, 2026
…ed-industries#57291)

HighlightedLabel would crash the application if any provided highlight
index was invalid. In theory, this should never happen. In practice,
this can happen due to race conditions at call sites.

After this change, we only panic in debug builds. In release builds, we
log an error and return a label with no highlights. The error message
includes the call site so that it's easier to fix the root cause.

Related to zed-industries#57290

Part of FR-11.

Release Notes:

- N/A
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-signed The user has signed the Contributor License Agreement staff Pull requests authored by a current member of Zed staff

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants