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 switching to fresh buffers with Ctrl+I / Ctrl+O #3758

Closed
Jummit opened this issue Sep 9, 2022 · 1 comment
Closed

Crash when switching to fresh buffers with Ctrl+I / Ctrl+O #3758

Jummit opened this issue Sep 9, 2022 · 1 comment
Labels
C-bug Category: This is a bug

Comments

@Jummit
Copy link
Contributor

Jummit commented Sep 9, 2022

Summary

When opening a new buffer with :open, writing something in it and switching around with Ctrl+I and Ctrl+O I got this error:

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Char index out of bounds: char index 85, Rope/RopeSlice char length 44', /home/jummit/.local/share/cargo/registry/src/github.com-1ecc6299db9ec823/ropey-1.5.0/src/slice.rs:349:41

Reproduction Steps

I tried this:

  1. hx
  2. open an existing file
  3. open a non-existent file with :open
  4. switch with ctrl+o, ctrl+i
  5. crash

Helix log

~/.cache/helix/helix.log
2022-09-09T00:37:18.904 helix_term::application [WARN] lsp position out of bounds - Diagnostic { range: Range { start: Position { line: 257, character: 48 }, end: Position { line: 257, character: 55 } }, severity: Some(Error), code: Some(String("E0433")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("doc.rust-lang.org")), port: None, path: "/error-index.html", query: None, fragment: Some("E0433") } }), source: Some("rustc"), message: "failed to resolve: use of undeclared type `FromStr`\nuse of undeclared type `FromStr`", related_information: None, tags: None, data: None }
2022-09-09T00:37:18.904 helix_term::application [WARN] lsp position out of bounds - Diagnostic { range: Range { start: Position { line: 255, character: 8 }, end: Position { line: 258, character: 9 } }, severity: Some(Error), code: Some(String("E0308")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("doc.rust-lang.org")), port: None, path: "/error-index.html", query: None, fragment: Some("E0308") } }), source: Some("rustc"), message: "mismatched types\nexpected enum `Result<Event, ParserError>`\n   found enum `ParserError`", related_information: Some([DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/.local/share/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", query: None, fragment: None }, range: Range { start: Position { line: 39, character: 34 }, end: Position { line: 39, character: 44 } } }, message: "Actual error occurred here" }, DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/.local/share/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", query: None, fragment: None }, range: Range { start: Position { line: 39, character: 34 }, end: Position { line: 39, character: 34 } } }, message: "try wrapping the expression in `Err`: `Err(`, `)`" }]), tags: None, data: None }
2022-09-09T00:37:18.904 helix_term::application [WARN] lsp position out of bounds - Diagnostic { range: Range { start: Position { line: 255, character: 8 }, end: Position { line: 258, character: 9 } }, severity: Some(Error), code: Some(String("E0369")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("doc.rust-lang.org")), port: None, path: "/error-index.html", query: None, fragment: Some("E0369") } }), source: Some("rustc"), message: "binary operation `==` cannot be applied to type `Result<Event, ParserError>`", related_information: Some([DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/.local/share/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", query: None, fragment: None }, range: Range { start: Position { line: 39, character: 31 }, end: Position { line: 39, character: 33 } } }, message: "Actual error occurred here" }, DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/.local/share/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", query: None, fragment: None }, range: Range { start: Position { line: 39, character: 21 }, end: Position { line: 39, character: 30 } } }, message: "Result<Event, ParserError>" }, DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/.local/share/rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/macros/mod.rs", query: None, fragment: None }, range: Range { start: Position { line: 39, character: 34 }, end: Position { line: 39, character: 44 } } }, message: "Result<Event, ParserError>" }, DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/Programming/rust/project/src/lib.rs", query: None, fragment: None }, range: Range { start: Position { line: 87, character: 0 }, end: Position { line: 87, character: 16 } } }, message: "an implementation of `PartialEq` might be missing for `ParserError`" }, DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/Programming/rust/project/src/lib.rs", query: None, fragment: None }, range: Range { start: Position { line: 87, character: 0 }, end: Position { line: 87, character: 0 } } }, message: "consider annotating `ParserError` with `#[derive(PartialEq)]`: `#[derive(PartialEq)]\n`" }]), tags: None, data: None }
2022-09-09T00:37:42.217 helix_term::application [WARN] lsp position out of bounds - Diagnostic { range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } }, severity: Some(Error), code: Some(String("E0308")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("doc.rust-lang.org")), port: None, path: "/error-index.html", query: None, fragment: Some("E0308") } }), source: Some("rustc"), message: "mismatched types\nexpected reference `&_`\n        found enum `ParserError`", related_information: Some([DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/Programming/rust/project/src/lib.rs", query: None, fragment: None }, range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } } }, message: "consider borrowing here: `&ParserError::InvalidInteger(())`" }]), tags: None, data: None }
2022-09-09T00:37:42.218 helix_term::application [WARN] lsp position out of bounds - Diagnostic { range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } }, severity: Some(Hint), code: Some(String("E0308")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("doc.rust-lang.org")), port: None, path: "/error-index.html", query: None, fragment: Some("E0308") } }), source: Some("rustc"), message: "consider borrowing here: `&ParserError::InvalidInteger(())`", related_information: Some([DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/Programming/rust/project/src/lib.rs", query: None, fragment: None }, range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } } }, message: "original diagnostic" }]), tags: None, data: None }
2022-09-09T00:37:53.182 helix_term::application [WARN] lsp position out of bounds - Diagnostic { range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } }, severity: Some(Error), code: Some(String("E0308")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("doc.rust-lang.org")), port: None, path: "/error-index.html", query: None, fragment: Some("E0308") } }), source: Some("rustc"), message: "mismatched types\nexpected reference `&_`\n        found enum `ParserError`", related_information: Some([DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/Programming/rust/project/src/lib.rs", query: None, fragment: None }, range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } } }, message: "consider borrowing here: `&ParserError::InvalidInteger(())`" }]), tags: None, data: None }
2022-09-09T00:37:53.182 helix_term::application [WARN] lsp position out of bounds - Diagnostic { range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } }, severity: Some(Hint), code: Some(String("E0308")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("doc.rust-lang.org")), port: None, path: "/error-index.html", query: None, fragment: Some("E0308") } }), source: Some("rustc"), message: "consider borrowing here: `&ParserError::InvalidInteger(())`", related_information: Some([DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/Programming/rust/project/src/lib.rs", query: None, fragment: None }, range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } } }, message: "original diagnostic" }]), tags: None, data: None }
2022-09-09T00:37:55.571 helix_term::application [WARN] lsp position out of bounds - Diagnostic { range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } }, severity: Some(Error), code: Some(String("E0308")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("doc.rust-lang.org")), port: None, path: "/error-index.html", query: None, fragment: Some("E0308") } }), source: Some("rustc"), message: "mismatched types\nexpected reference `&_`\n        found enum `ParserError`", related_information: Some([DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/Programming/rust/project/src/lib.rs", query: None, fragment: None }, range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } } }, message: "consider borrowing here: `&ParserError::InvalidInteger(())`" }]), tags: None, data: None }
2022-09-09T00:37:55.572 helix_term::application [WARN] lsp position out of bounds - Diagnostic { range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } }, severity: Some(Hint), code: Some(String("E0308")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("doc.rust-lang.org")), port: None, path: "/error-index.html", query: None, fragment: Some("E0308") } }), source: Some("rustc"), message: "consider borrowing here: `&ParserError::InvalidInteger(())`", related_information: Some([DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/Programming/rust/project/src/lib.rs", query: None, fragment: None }, range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } } }, message: "original diagnostic" }]), tags: None, data: None }
2022-09-09T00:37:55.751 helix_term::application [WARN] lsp position out of bounds - Diagnostic { range: Range { start: Position { line: 256, character: 53 }, end: Position { line: 256, character: 55 } }, severity: Some(Error), code: Some(String("E0308")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("doc.rust-lang.org")), port: None, path: "/error-index.html", query: None, fragment: Some("E0308") } }), source: Some("rustc"), message: "mismatched types\nexpected struct `ParseIntError`, found `()`", related_information: None, tags: None, data: None }
2022-09-09T00:37:55.751 helix_term::application [WARN] lsp position out of bounds - Diagnostic { range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } }, severity: Some(Error), code: Some(String("E0308")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("doc.rust-lang.org")), port: None, path: "/error-index.html", query: None, fragment: Some("E0308") } }), source: Some("rustc"), message: "mismatched types\nexpected reference `&_`\n        found enum `ParserError`", related_information: Some([DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/Programming/rust/project/src/lib.rs", query: None, fragment: None }, range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } } }, message: "consider borrowing here: `&ParserError::InvalidInteger(())`" }]), tags: None, data: None }
2022-09-09T00:37:55.751 helix_term::application [WARN] lsp position out of bounds - Diagnostic { range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } }, severity: Some(Hint), code: Some(String("E0308")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("doc.rust-lang.org")), port: None, path: "/error-index.html", query: None, fragment: Some("E0308") } }), source: Some("rustc"), message: "consider borrowing here: `&ParserError::InvalidInteger(())`", related_information: Some([DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/Programming/rust/project/src/lib.rs", query: None, fragment: None }, range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } } }, message: "original diagnostic" }]), tags: None, data: None }
2022-09-09T00:37:55.865 helix_term::application [WARN] lsp position out of bounds - Diagnostic { range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } }, severity: Some(Error), code: Some(String("E0308")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("doc.rust-lang.org")), port: None, path: "/error-index.html", query: None, fragment: Some("E0308") } }), source: Some("rustc"), message: "mismatched types\nexpected reference `&_`\n        found enum `ParserError`", related_information: Some([DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/Programming/rust/project/src/lib.rs", query: None, fragment: None }, range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } } }, message: "consider borrowing here: `&ParserError::InvalidInteger(())`" }]), tags: None, data: None }
2022-09-09T00:37:55.865 helix_term::application [WARN] lsp position out of bounds - Diagnostic { range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } }, severity: Some(Hint), code: Some(String("E0308")), code_description: Some(CodeDescription { href: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("doc.rust-lang.org")), port: None, path: "/error-index.html", query: None, fragment: Some("E0308") } }), source: Some("rustc"), message: "consider borrowing here: `&ParserError::InvalidInteger(())`", related_information: Some([DiagnosticRelatedInformation { location: Location { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/jummit/Programming/rust/project/src/lib.rs", query: None, fragment: None }, range: Range { start: Position { line: 256, character: 25 }, end: Position { line: 256, character: 56 } } }, message: "original diagnostic" }]), tags: None, data: None }

Platform

Linux

Terminal Emulator

qterm

Helix Version

helix 22.08.1 (44b4479)

@Jummit Jummit added the C-bug Category: This is a bug label Sep 9, 2022
@Jummit
Copy link
Contributor Author

Jummit commented Sep 9, 2022

Duplicate of #2489

@Jummit Jummit closed this as completed Sep 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Category: This is a bug
Projects
None yet
Development

No branches or pull requests

1 participant