elijah-potter / harper

The Grammar Checker for Developers
https://writewithharper.com
Apache License 2.0
1.38k stars 24 forks source link

`harper-ls` panics when entering a comment in an empty file #229

Open mcecode opened 4 days ago

mcecode commented 4 days ago

How to reproduce:

  1. Create and open an empty file, say file.js.
  2. Add a comment (//) on the first line.
  3. Get something like this on the output logs:

    thread 'main' panicked at harper-core/src/span.rs:58:38:
    called `Option::unwrap()` on a `None` value
    stack backtrace:
       0:     0x57cd6587e8f5 - <unknown>
       1:     0x57cd658a81db - <unknown>
       2:     0x57cd6587bd2f - <unknown>
       3:     0x57cd6587fc71 - <unknown>
       4:     0x57cd6587f94c - <unknown>
       5:     0x57cd658802d1 - <unknown>
       6:     0x57cd65880103 - <unknown>
       7:     0x57cd6587edb9 - <unknown>
       8:     0x57cd6587fdc4 - <unknown>
       9:     0x57cd65289b93 - <unknown>
      10:     0x57cd65289c1c - <unknown>
      11:     0x57cd65289af9 - <unknown>
      12:     0x57cd657de72f - <unknown>
      13:     0x57cd657ddc4d - <unknown>
      14:     0x57cd653e40c9 - <unknown>
      15:     0x57cd654147d6 - <unknown>
      16:     0x57cd65355493 - <unknown>
      17:     0x57cd65357eb6 - <unknown>
      18:     0x57cd65336754 - <unknown>
      19:     0x57cd6537ec08 - <unknown>
      20:     0x57cd653dc2d9 - <unknown>
      21:     0x57cd653b62f1 - <unknown>
      22:     0x57cd653b62f1 - <unknown>
      23:     0x57cd65420fd2 - <unknown>
      24:     0x57cd65381201 - <unknown>
      25:     0x57cd6541d44e - <unknown>
      26:     0x57cd653f17ce - <unknown>
      27:     0x57cd653e3597 - <unknown>
      28:     0x57cd65381fc1 - <unknown>
      29:     0x57cd653bb016 - <unknown>
      30:     0x57cd653b8c28 - <unknown>
      31:     0x57cd65423d43 - <unknown>
      32:     0x57cd6541695d - <unknown>
      33:     0x57cd65873440 - <unknown>
      34:     0x57cd653be9f5 - <unknown>
      35:     0x798eeb229d90 - <unknown>
      36:     0x798eeb229e40 - __libc_start_main
      37:     0x57cd6528c11e - <unknown>
      38:                0x0 - <unknown>

    Note, there's a long backtrace because I set RUST_BACKTRACE to full.

I'm not sure if this is a problem with the VSCode integration, so it'd be nice if someone using another editor can chime in to say if they can reproduce.

mcecode commented 4 days ago

Seems like it also occurs when adding a comment at the end of the file:

print("Hello, World!")
--

Or when adding a comment at the end of the line at the end of the file:

print("Hello, World!") --
mcecode commented 4 days ago

Upon testing, it occurs for these languages:

But not in these:

It also doesn't seem to affect HTML and Markdown files, but the comments on those files don't get checked so that might be expected.

I can't check for Python and Bash/Sh at the moment because the VSCode extension has a problem with sending/communicating those to harper-ls, which is what I was working on when I discovered this bug.

elijah-potter commented 4 days ago

Thanks for the incredibly detailed report. I'm actually unable to replicate the issue in either integration tests, in Neovim or in VSCode. Would you mind making sure you're using the latest version of the VSCode plugin (or perhaps pull and recompile, if that's your m.o.).

If the problem persists, reinstall the binary with debug symbols enabled and give us your backtrace again.

Should be something like:

cargo install --path harper-ls --debug
mcecode commented 3 days ago

Hi, yup, I'm using the latest version of the VSCode extension/harper-ls, 0.12.0.

I compiled the latest commit with debug symbols enabled, here's the backtrace:

thread 'main' panicked at harper-core/src/span.rs:58:38:
called `Option::unwrap()` on a `None` value
stack backtrace:
   0:     0x572dd83c92fa - std::backtrace_rs::backtrace::libunwind::trace::h99efb0985cae5d78
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/../../backtrace/src/backtrace/libunwind.rs:116:5
   1:     0x572dd83c92fa - std::backtrace_rs::backtrace::trace_unsynchronized::he2c1aa63b3f7fad8
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x572dd83c92fa - std::sys::backtrace::_print_fmt::h8a221d40f5e0f88b
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/sys/backtrace.rs:66:9
   3:     0x572dd83c92fa - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h304520fd6a30aa07
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/sys/backtrace.rs:39:26
   4:     0x572dd83f30fb - core::fmt::rt::Argument::fmt::h5da9c218ec984eaf
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/fmt/rt.rs:177:76
   5:     0x572dd83f30fb - core::fmt::write::hf5713710ce10ff22
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/fmt/mod.rs:1178:21
   6:     0x572dd83c5df3 - std::io::Write::write_fmt::hda708db57927dacf
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/io/mod.rs:1823:15
   7:     0x572dd83ca662 - std::sys::backtrace::BacktraceLock::print::hbcdbec4d97c91528
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/sys/backtrace.rs:42:9
   8:     0x572dd83ca662 - std::panicking::default_hook::{{closure}}::he1ad87607d0c11c5
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:266:22
   9:     0x572dd83ca2ce - std::panicking::default_hook::h81c8cd2e7c59ee33
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:293:9
  10:     0x572dd83caeef - std::panicking::rust_panic_with_hook::had2118629c312a4a
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:797:13
  11:     0x572dd83caba3 - std::panicking::begin_panic_handler::{{closure}}::h7fa5985d111bafa2
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:664:13
  12:     0x572dd83c97d9 - std::sys::backtrace::__rust_end_short_backtrace::h704d151dbefa09c5
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/sys/backtrace.rs:170:18
  13:     0x572dd83ca864 - rust_begin_unwind
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:662:5
  14:     0x572dd77922d3 - core::panicking::panic_fmt::h3eea515d05f7a35e
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/panicking.rs:74:14
  15:     0x572dd779235c - core::panicking::panic::h102d65dbfa674afe
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/panicking.rs:148:5
  16:     0x572dd7792239 - core::option::unwrap_failed::hfd32652cc6017653
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/option.rs:2015:5
  17:     0x572dd8206334 - core::option::Option<T>::unwrap::h731ee728247f0b7f
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/option.rs:965:21
  18:     0x572dd8206334 - harper_core::span::Span::get_content::h9f94cb0f9cc73a6e
                               at /home/runner/work/harper/harper/harper-core/src/span.rs:58:9
  19:     0x572dd82104a4 - harper_core::patterns::sequence_pattern::SequencePattern::then_any_word_in::{{closure}}::hee241d43ad6adc86
                               at /home/runner/work/harper/harper/harper-core/src/patterns/sequence_pattern.rs:93:33
  20:     0x572dd82115d3 - <F as harper_core::patterns::Pattern>::matches::h22cd535334b0b096
                               at /home/runner/work/harper/harper/harper-core/src/patterns/mod.rs:89:12
  21:     0x572dd8210800 - <harper_core::patterns::sequence_pattern::SequencePattern as harper_core::patterns::Pattern>::matches::h589efe4c1051dcd5
                               at /home/runner/work/harper/harper/harper-core/src/patterns/sequence_pattern.rs:112:32
  22:     0x572dd7b9c252 - harper_core::linting::pattern_linter::<impl harper_core::linting::Linter for L>::lint::h6260e3207a1c840a
                               at /home/runner/work/harper/harper/harper-core/src/linting/pattern_linter.rs:35:33
  23:     0x572dd7a6c3dd - <harper_core::linting::lint_group::LintGroup<T> as harper_core::linting::Linter>::lint::h1d4f09e30d0e3a31
                               at /home/runner/work/harper/harper/harper-core/src/linting/lint_group.rs:95:47
  24:     0x572dd7b4c3b1 - harper_ls::backend::Backend::generate_diagnostics::{{closure}}::h3e03e6c3099ce053
                               at /home/runner/work/harper/harper/harper-ls/src/backend.rs:274:21
  25:     0x572dd7b4c98b - harper_ls::backend::Backend::publish_diagnostics::{{closure}}::hfb7b5113e5a0991c
                               at /home/runner/work/harper/harper/harper-ls/src/backend.rs:285:58
  26:     0x572dd7b53210 - <harper_ls::backend::Backend as tower_lsp::LanguageServer>::did_change::{{closure}}::he119fe097c623f5f
                               at /home/runner/work/harper/harper/harper-ls/src/backend.rs:396:61
  27:     0x572dd7ad24f3 - <core::pin::Pin<P> as core::future::future::Future>::poll::h38e931695ed50a4e
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/future/future.rs:123:9
  28:     0x572dd7a22059 - tower_lsp::generated::register_lsp_methods::did_change::{{closure}}::h420f55a9956979cf
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tower-lsp-0.20.0/src/lib.rs:112:1
  29:     0x572dd79dd7d4 - tower_lsp::jsonrpc::router::Router<S,E>::method::{{closure}}::{{closure}}::{{closure}}::h2e7f680a564a2dd4
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tower-lsp-0.20.0/src/jsonrpc/router.rs:58:64
  30:     0x572dd7ad24f3 - <core::pin::Pin<P> as core::future::future::Future>::poll::h38e931695ed50a4e
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/future/future.rs:123:9
  31:     0x572dd79eefed - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::h399ecf949c69d7d8
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/future/future/map.rs:55:37
  32:     0x572dd7996a61 - <futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll::h424fe2ee8c77b198
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/lib.rs:86:13
  33:     0x572dd7ad2ccf - <core::pin::Pin<P> as core::future::future::Future>::poll::hac84917f9a87d30d
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/future/future.rs:123:9
  34:     0x572dd7ad2ccf - <core::pin::Pin<P> as core::future::future::Future>::poll::hac84917f9a87d30d
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/future/future.rs:123:9
  35:     0x572dd7ad2ccf - <core::pin::Pin<P> as core::future::future::Future>::poll::hac84917f9a87d30d
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/future/future.rs:123:9
  36:     0x572dd7918eee - <tower_lsp::service::LspService<S> as tower_service::Service<tower_lsp::jsonrpc::request::Request>>::call::{{closure}}::h0c68c7b55605b30a
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tower-lsp-0.20.0/src/service.rs:124:32
  37:     0x572dd7ad2ccf - <core::pin::Pin<P> as core::future::future::Future>::poll::hac84917f9a87d30d
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/future/future.rs:123:9
  38:     0x572dd7ac55ba - <F as futures_core::future::TryFuture>::try_poll::h7e92dc2d7fed79d1
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-core-0.3.31/src/future.rs:92:9
  39:     0x572dd7918a61 - <futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll::h839d4067920d9197
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/future/try_future/into_future.rs:34:9
  40:     0x572dd79ef5f5 - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::h43c4674a40cc35ff
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/future/future/map.rs:55:37
  41:     0x572dd79975d1 - <futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll::hde72055107df7d64
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/lib.rs:86:13
  42:     0x572dd7a35531 - <futures_util::future::try_future::UnwrapOrElse<Fut,F> as core::future::future::Future>::poll::h3a4bcdc5fafb37ad
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/lib.rs:86:13
  43:     0x572dd7a36177 - <futures_util::stream::futures_unordered::FuturesUnordered<Fut> as futures_core::stream::Stream>::poll_next::hbc7eade77fdfe85d
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/stream/futures_unordered/mod.rs:528:17
  44:     0x572dd7a3ab90 - futures_util::stream::stream::StreamExt::poll_next_unpin::h417bd443957e6fb9
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/stream/stream/mod.rs:1638:9
  45:     0x572dd78b2516 - <futures_util::stream::stream::buffer_unordered::BufferUnordered<St> as futures_core::stream::Stream>::poll_next::h08ef8da042c08a79
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/stream/stream/buffer_unordered.rs:75:15
  46:     0x572dd797afa0 - <futures_util::stream::stream::filter_map::FilterMap<St,Fut,F> as futures_core::stream::Stream>::poll_next::hea4a7d555c69fc1f
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/stream/stream/filter_map.rs:79:47
  47:     0x572dd791750c - <futures_util::stream::stream::map::Map<St,F> as futures_core::stream::Stream>::poll_next::h54f04627e6b97f00
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/stream/stream/map.rs:58:26
  48:     0x572dd78d4fd3 - <futures_util::stream::stream::fuse::Fuse<S> as futures_core::stream::Stream>::poll_next::h74a99dbd24e96215
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/stream/stream/fuse.rs:53:27
  49:     0x572dd78ecfdb - <futures_util::stream::stream::forward::Forward<St,Si,Item> as core::future::future::Future>::poll::h29f8b3c47d1f03a4
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/stream/stream/forward.rs:59:19
  50:     0x572dd7b172b3 - <futures_util::stream::stream::Forward<St,Si> as core::future::future::Future>::poll::h5c769596482711c0
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/lib.rs:86:13
  51:     0x572dd79eff23 - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::h44b09a4f68864275
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/future/future/map.rs:55:37
  52:     0x572dd7997603 - <futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll::hde8671f7194c7baf
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/lib.rs:86:13
  53:     0x572dd7b5bcdf - <futures_util::future::maybe_done::MaybeDone<Fut> as core::future::future::Future>::poll::hfe730ef9c7c31321
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/future/maybe_done.rs:95:38
  54:     0x572dd7b91e8a - tower_lsp::transport::Server<I,O,L>::serve::{{closure}}::{{closure}}::h8b5b75a618eb78ca
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/async_await/join_mod.rs:95:13
  55:     0x572dd78d4ab8 - <futures_util::future::poll_fn::PollFn<F> as core::future::future::Future>::poll::h14f6efe0fb308ae4
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.31/src/future/poll_fn.rs:56:9
  56:     0x572dd7b8f63c - tower_lsp::transport::Server<I,O,L>::serve::{{closure}}::h93a78c73ef8e2fd0
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tower-lsp-0.20.0/src/transport.rs:163:9
  57:     0x572dd7b97106 - harper_ls::main::{{closure}}::h1a26b29b1b4550cd
                               at /home/runner/work/harper/harper/harper-ls/src/main.rs:53:59
  58:     0x572dd798975f - tokio::runtime::park::CachedParkThread::block_on::{{closure}}::h17cb3613975d968f
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/park.rs:281:63
  59:     0x572dd79887b7 - tokio::runtime::coop::with_budget::h35602da8d6c6111c
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/coop.rs:107:5
  60:     0x572dd79887b7 - tokio::runtime::coop::budget::he73b10686dda15b7
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/coop.rs:73:5
  61:     0x572dd79887b7 - tokio::runtime::park::CachedParkThread::block_on::h07f6f4a49ec6b873
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/park.rs:281:31
  62:     0x572dd7989a53 - tokio::runtime::context::blocking::BlockingRegionGuard::block_on::h5a3e7f7857227f76
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/context/blocking.rs:66:9
  63:     0x572dd7b3b6b8 - tokio::runtime::scheduler::multi_thread::MultiThread::block_on::{{closure}}::h5a7dc460f7e76b9d
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/scheduler/multi_thread/mod.rs:87:13
  64:     0x572dd7a14b9d - tokio::runtime::context::runtime::enter_runtime::h9c664715c16f9aa3
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/context/runtime.rs:65:16
  65:     0x572dd7b3b623 - tokio::runtime::scheduler::multi_thread::MultiThread::block_on::h7c12c5f94f701a89
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/scheduler/multi_thread/mod.rs:86:9
  66:     0x572dd7aa59ee - tokio::runtime::runtime::Runtime::block_on_inner::h92e400a641c51ab6
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/runtime.rs:363:45
  67:     0x572dd7aa5c66 - tokio::runtime::runtime::Runtime::block_on::h84cf226d2a5e10e9
                               at /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/runtime.rs:335:13
  68:     0x572dd7b969fe - harper_ls::main::hb40c74d32a668a21
                               at /home/runner/work/harper/harper/harper-ls/src/main.rs:50:5
  69:     0x572dd7addc3b - core::ops::function::FnOnce::call_once::h21eed307c804f150
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/ops/function.rs:250:5
  70:     0x572dd7a4638e - std::sys::backtrace::__rust_begin_short_backtrace::h09b57d067ad92c1e
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/sys/backtrace.rs:154:18
  71:     0x572dd79c5b01 - std::rt::lang_start::{{closure}}::h4f4547187be0f334
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/rt.rs:164:18
  72:     0x572dd83bd650 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h08ecba131ab90ec4
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/ops/function.rs:284:13
  73:     0x572dd83bd650 - std::panicking::try::do_call::hf33a59fd8ce953f4
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:554:40
  74:     0x572dd83bd650 - std::panicking::try::h5005ce80ce949fd8
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:518:19
  75:     0x572dd83bd650 - std::panic::catch_unwind::hfbae19e2e2c5b7ed
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panic.rs:345:14
  76:     0x572dd83bd650 - std::rt::lang_start_internal::{{closure}}::ha0331c3690741813
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/rt.rs:143:48
  77:     0x572dd83bd650 - std::panicking::try::do_call::hcdcbdb616b4d0295
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:554:40
  78:     0x572dd83bd650 - std::panicking::try::h3f2f1725a07d2256
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:518:19
  79:     0x572dd83bd650 - std::panic::catch_unwind::h51869e04b56b2dc3
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panic.rs:345:14
  80:     0x572dd83bd650 - std::rt::lang_start_internal::h4d90db0530245041
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/rt.rs:143:20
  81:     0x572dd79c5ada - std::rt::lang_start::h14a5c69ffbe68c30
                               at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/rt.rs:163:17
  82:     0x572dd7b97b4e - main
  83:     0x77bf27429d90 - <unknown>
  84:     0x77bf27429e40 - __libc_start_main
  85:     0x572dd7792e4e - _start
  86:                0x0 - <unknown>
mcecode commented 3 days ago

Here's a video of me reproducing the issue:

harper-issue-229-1.webm