Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🐞 Crash when deleting text #196

Open
Wouter01 opened this issue Jun 14, 2023 · 5 comments
Open

🐞 Crash when deleting text #196

Wouter01 opened this issue Jun 14, 2023 · 5 comments
Labels
bug Something isn't working

Comments

@Wouter01
Copy link
Member

Wouter01 commented Jun 14, 2023

Description

I deleted a bunch of text from a file (select text + backspace), this caused CodeEdit to crash with the following error:

Thread 57: Fatal error: Duplicate elements of type 'LanguageLayer' were found in a Set.
This usually means either that the type violates Hashable's requirements, or
that members of such a set were mutated after insertion.

at editState.touchedLayers.insert(layer) (line 63 in TreeSitterClient+Edit)

To Reproduce

Open file, delete bunch of text. I'm not sure if it's easily reproducible

Expected Behavior

No crash

Version Information

CodeEditTextView: 0.6.4
macOS: 14.0 beta 1
Xcode: 15.0 beta 1

Additional Context

I attached a video showing the issue. It crashes when I press backspace.
I'm not sure, but it seems to only happen when I delete text that is at the start of the file. I haven't seen it happen when I delete text in the middle of the file.

Screenshots

Screen.Recording.2023-06-14.at.20.19.00.mov

No response

@Wouter01 Wouter01 added the bug Something isn't working label Jun 14, 2023
@nicholasss
Copy link

Should there be debugging for beta versions of Xcode and macOS - with future changes and all?

It may not apply to this, due to the error text.

@thecoolwinter
Copy link
Collaborator

This should be a simple fix, it just needs a check to the editState if the layer has been marked as touched yet. Someone could maybe look at the hashable implementation on LanguageLayer but it should just be hashing a unique UUID.

@thecoolwinter
Copy link
Collaborator

Should there be debugging for beta versions of Xcode and macOS - with future changes and all?

It may not apply to this, due to the error text.

Could you clarify? Do you mean debugging in the editor?

@TheNightmanCodeth
Copy link

I'm also experiencing this. It seems like adding a "guard set doesn't contain what we're adding" or similar would fix this

@thecoolwinter
Copy link
Collaborator

I have a hunch this is fixed with #263. My guess is that two async operations were inserting into the same dictionary and causing a conflict that way. We'll keep it open for a bit and if it doesn't re-appear I'll close this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Status: 🆕 New
Development

No branches or pull requests

4 participants