helix icon indicating copy to clipboard operation
helix copied to clipboard

thread 'main' panicked at 'Positions [(70, After), (71, Before)] are out of range for changeset len 1!', helix-core/src/transaction.rs:478:9

Open quesada opened this issue 11 months ago • 7 comments

Summary

Crash while editing

Reproduction Steps

Editing a scratch buffer and pressing esc is the closest I could get to isolate the bug; but this is not deterministic. It happened with 3 vsplits, 2 showing the same file, one with a scratch buffer.

Helix log

~/.cache/helix/helix.log
tail ~/.cache/helix/helix.log
2024-03-07T09:13:53.256 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:53 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:53.256 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:53.375 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:53 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:53.375 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:53.511 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:53 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:53.511 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:53.743 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:53 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:53.743 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:14:32.284 helix_core::syntax [ERROR] TS parser failed, disabling TS for the current buffer: Err(Cancelled)
2024-03-07T10:32:27.009 helix_core::syntax [ERROR] TS parser failed, disabling TS for the current buffer: Err(Cancelled)
q@sirius ~/S/L/pages> tail -50  ~/.cache/helix/helix.log
2024-03-07T09:13:49.127 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:49 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:49.128 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:49.271 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:49 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:49.271 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:49.439 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:49 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:49.439 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:49.567 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:49 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:49.567 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:49.808 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:49 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:49.808 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:49.984 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:49 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:49.984 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:50.080 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:50 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:50.080 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:51.183 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:51 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:51.183 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:51.310 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:51 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:51.310 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:51.391 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:51 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:51.391 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:51.512 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:51 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:51.512 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:51.984 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:51 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:51.984 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:52.056 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:52 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:52.056 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:52.160 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:52 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:52.160 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:52.336 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:52 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:52.336 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:52.456 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:52 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:52.456 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:52.616 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:52 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:52.616 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:52.736 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:52 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:52.736 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:53.024 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:53 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:53.025 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:53.128 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:53 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:53.128 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:53.256 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:53 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:53.256 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:53.375 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:53 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:53.375 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:53.511 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:53 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:53.511 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:13:53.743 helix_lsp::transport [ERROR] ltex err <- "Mar 07, 2024 9:13:53 AM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment\n"
2024-03-07T09:13:53.743 helix_lsp::transport [ERROR] ltex err <- "WARNING: Skipping text check as LanguageTool has not been initialized\n"
2024-03-07T09:14:32.284 helix_core::syntax [ERROR] TS parser failed, disabling TS for the current buffer: Err(Cancelled)
2024-03-07T10:32:27.009 helix_core::syntax [ERROR] TS parser failed, disabling TS for the current buffer: Err(Cancelled)```

</details>


### Platform

Linux

### Terminal Emulator

Kitty

### Installation Method

source

### Helix Version

helix 23.10 (b93fae9c)

quesada avatar Mar 07 '24 09:03 quesada

pleas provide a panic backtrace or this is not actionable, this kind of panic message could be caused by ahyting

pascalkuthe avatar Mar 07 '24 11:03 pascalkuthe

I got a similar panic, with a (minimal) stacktrace. Hope this helps.

thread 'main' panicked at 'Positions [(150004, After), (150004, After)] are out of range for changeset len 149909!', helix-core/src/transaction.rs:461:9
stack backtrace:
   0: _rust_begin_unwind
   1: core::panicking::panic_fmt
   2: helix_core::transaction::ChangeSet::update_positions
   3: helix_core::selection::Selection::map_no_normalize
   4: helix_view::view::View::apply
   5: helix_view::document::Document::append_changes_to_history
   6: <helix_term::ui::editor::EditorView as helix_term::compositor::Component>::handle_event
   7: helix_term::compositor::Compositor::handle_event
   8: helix_term::application::Application::run::{{closure}}
   9: tokio::runtime::park::CachedParkThread::block_on
  10: tokio::runtime::runtime::Runtime::block_on
  11: hx::main
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Version: helix 23.10 (f6021dd0)

NickNick avatar Mar 13 '24 20:03 NickNick

Here is one way to reproduce it (current master at commit: 6c4d986).

thread 'main' panicked at 'Positions [(7, Before)] are out of range for changeset len 4!', helix-core/src/transaction.rs:478:9

Test Document

a
b

Steps to Reproduce

  1. <C-w>s # hsplit
  2. ]<space> # add_newline_below
  3. % # select_all
  4. 2G # goto_line
  5. ms/ # surround_add
  6. :rla<ret> # reload_all
  7. % # select_all
  8. J # join_selection

trink avatar Mar 14 '24 17:03 trink

This happened to me without using splits. IIRC it started happening after I updated my normal_mode binding to also add a jumplist entry.

[keys.insert]
C-s = ["normal_mode", ":w", "save_selection"]
esc = ["normal_mode", "save_selection"]

stacktrace:

thread 'main' panicked at 'Positions [(2129, After), (2130, Before)] are out of range for changeset len 2119!', hel
ix-core/src/transaction.rs:478:9
    stack backtrace:
       0: rust_begin_unwind
                 at /rustc/90c541806f23a127002de5b4038be731ba1458ca/library/std/src/panicking.rs:578:5
       1: core::panicking::panic_fmt
                 at /rustc/90c541806f23a127002de5b4038be731ba1458ca/library/core/src/panicking.rs:67:14
       2: helix_core::transaction::ChangeSet::update_positions
       3: helix_core::selection::Selection::map_no_normalize
       4: helix_view::view::View::apply
       5: helix_view::document::Document::append_changes_to_history
       6: <helix_term::ui::editor::EditorView as helix_term::compositor::Component>::handle_event
       7: helix_term::compositor::Compositor::handle_event
       8: helix_term::application::Application::run::{{closure}}
       9: tokio::runtime::park::CachedParkThread::block_on
      10: tokio::runtime::context::runtime::enter_runtime
      11: tokio::runtime::runtime::Runtime::block_on
      12: hx::main

helix 23.4 6a214af1

I'll try to get a minimal repro.

SecretPocketCat avatar Apr 08 '24 09:04 SecretPocketCat