astral-sh/ruff-vscode

Ruff Langauge Server crash

david-waterworth opened this issue · 7 comments

Sorry I cannot create code snippet for this, but I noticed these messages in my log. I think they occurred when I was dragging a vscode notebooks cell from one position to another (i.e. if I started with cells #1,#2 and #3 then I'm grabbing #2 with my mouse and moving it after #3)

I'm running ruff==0.5.6 with ruff extension version v2024.36.0 in vscode 1.92.0 on ubuntu 22.04

024-08-07 16:20:18.190 [info] panicked at crates/ruff_source_file/src/line_index.rs:176:13:
index out of bounds: the len is 1 but the index is 16

2024-08-07 16:20:18.245 [info]    0: <unknown>
   1: <unknown>
   2: <unknown>
   3: <unknown>
   4: <unknown>
   5: <unknown>
   6: <unknown>
   7: <unknown>
   8: <unknown>
   9: <unknown>
  10: <unknown>
  11: <unknown>
  12: <unknown>
  13: <unknown>
  14: start_thread
             at ./nptl/pthread_create.c:442:8
  15: __GI___clone3
             at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Interesting, the reproduction steps seems similar to astral-sh/ruff#12575 but here it's a panic instead. I think it's going to be a bit difficult to reproduce this without a code snippet.

It's most likely occurring in this function (https://github.com/astral-sh/ruff/blob/1a8fd7fb91e110a1e559f7f028b710986df10666/crates/ruff_server/src/edit/range.rs#L174-L207).

Does all the three cells contain Python code? Are there any cells that were markdown instead?

Yeah there were markdown and python cells, I think the one I was dragging was Python.

I'm playing around with a mix of markdown / code cells and moving them around randomly but I don't see crash :(

Huh, this did give me the following (unrelated) panic though:

2024-08-07 15:37:33.967 [info] panicked at crates/ruff_server/src/server/api/requests/format.rs:67:10:
format should only be called on text documents or notebook cells

2024-08-07 15:37:33.975 [info]    0: std::backtrace::Backtrace::force_capture
   1: ruff_server::server::Server::run
   2: std::panicking::rust_panic_with_hook
   3: <std::panicking::begin_panic_handler::StaticStrPayload as core::panic::PanicPayload>::take_box
   4: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
   5: _rust_begin_unwind
   6: core::panicking::panic_fmt
   7: core::option::expect_failed
   8: <ruff_server::server::api::requests::format::Format as ruff_server::server::api::traits::BackgroundDocumentRequestHandler>::run_with_snapshot
   9: ruff_server::session::Session::take_snapshot
  10: ruff_python_trivia::pragmas::is_pragma_comment
  11: <ruff_server::server::api::requests::hover::Hover as ruff_server::server::api::traits::BackgroundDocumentRequestHandler>::run_with_snapshot
  12: <ruff_server::server::api::requests::hover::Hover as ruff_server::server::api::traits::BackgroundDocumentRequestHandler>::run_with_snapshot
  13: std::sys::pal::unix::thread::Thread::new
  14: __pthread_joiner_wake

And, then the editor hangs at "Saving 'issue.ipynb'"

Haven't managed to repeat it today, but instead I got this (which I cannot replicate at this stage either)

2024-08-08 08:42:03.415 [info] panicked at crates/ruff_server/src/server/api/requests/hover.rs:36:10:
hover should only be called on text documents or notebook cells

2024-08-08 08:42:03.470 [info]    0: ruff_server::server::Server::run::{{closure}}
   1: std::panicking::rust_panic_with_hook
   2: std::panicking::begin_panic_handler::{{closure}}
   3: std::sys_common::backtrace::__rust_end_short_backtrace
   4: rust_begin_unwind
   5: core::panicking::panic_fmt
   6: core::option::expect_failed
   7: <ruff_server::server::api::requests::hover::Hover as ruff_server::server::api::traits::
2024-08-08 08:42:03.470 [info] BackgroundDocumentRequestHandler>::run_with_snapshot
   8: core::ops::function::FnOnce::call_once{{vtable.shim}}
   9: core::ops::function::FnOnce::call_once{{vtable.shim}}
  10: std::sys_common::backtrace::__rust_begin_short_backtrace
  11: core::ops::function::FnOnce::call_once{{vtable.shim}}
  12: std::sys::pal::unix::thread::Thread::new::thread_start
  13: start_thread
             at ./nptl/pthread_create.c:442:8
  14: __GI___clone3
             at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Yeah, I got that as well which I'm tracking it in #575