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

hitting unreachable code when opening files #5640

Closed
Emilgardis opened this issue Aug 1, 2020 · 6 comments · Fixed by #5651
Closed

hitting unreachable code when opening files #5640

Emilgardis opened this issue Aug 1, 2020 · 6 comments · Fixed by #5651

Comments

@Emilgardis
Copy link
Contributor

OS: Windows 10.
rustc: nightly-x86_64-pc-windows-gnu rustc 1.47.0-nightly (a7eff7913 2020-07-28)

I get repeating unreachable panics when I open a file. This seems to repeat for a while and then suddenly stops.
I have debug info set to 1, verbose output and experimental set to false

I've edited https://github.com/rust-analyzer/rust-analyzer/blob/5af32aeb2b83c7ae8adf3e088bf4f3691aa45eb1/crates/ra_proc_macro_srv/src/proc_macro/bridge/rpc.rs#L105

to link

    t => unreachable!("could not decode with type {}: got {:?} - tags={:?}", stringify!($name), t, stringify!(
        match u8::decode(r, s) {
            $(tag::$variant => {
                $(let $field = DecodeMut::decode(r, s);)*
                $name::$variant $(($field))*
            })*
        }
    )),

Steps to reproduce:

  • With VSC open rust-analyzer/rust-analyzer local repo, without any files in editor.
  • Browse to crates\rust-analyzer\src\bin\main.rs and open an editor tab.
  • It's possible from here to also just restart ra and the panic will trigger again

The following panic repeatedly hits.

thread 'main' panicked at 'internal error: entered unreachable code: could not decode with type TokenStreamBuilder: got 7 - tags="match u8 :: decode(r, s)\n{\n    tag :: drop => { TokenStreamBuilder :: drop } tag :: new =>\n    { TokenStreamBuilder :: new } tag :: push =>\n    { TokenStreamBuilder :: push } tag :: build =>\n    { TokenStreamBuilder :: build }\n}"', crates\ra_proc_macro_srv\src\proc_macro\bridge\mod.rs:252:5
stack backtrace:
   0: backtrace::backtrace::dbghelp::trace
             at C:\Users\runneradmin\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.46\src\backtrace/dbghelp.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at C:\Users\runneradmin\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.46\src\backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print_fmt
             at library\std\src\sys_common/backtrace.rs:78
   3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
             at library\std\src\sys_common/backtrace.rs:59
   4: core::fmt::write
             at library\core\src\fmt/mod.rs:1117
   5: std::io::Write::write_fmt
             at library\std\src\io/mod.rs:1510
   6: std::sys_common::backtrace::_print
             at library\std\src\sys_common/backtrace.rs:62
   7: std::sys_common::backtrace::print
             at library\std\src\sys_common/backtrace.rs:49
   8: std::panicking::default_hook::{{closure}}
             at library\std\src/panicking.rs:198
   9: std::panicking::default_hook
             at library\std\src/panicking.rs:217
  10: std::panicking::rust_panic_with_hook
             at library\std\src/panicking.rs:526
  11: rust_begin_unwind
             at library\std\src/panicking.rs:437
  12: std::panicking::begin_panic_fmt
             at library\std\src/panicking.rs:391
  13: <ra_proc_macro_srv::proc_macro::bridge::api_tags::Method as ra_proc_macro_srv::proc_macro::bridge::rpc::DecodeMut<S>>::decode
             at crates\ra_proc_macro_srv\src\proc_macro\bridge/rpc.rs:0
  14: <ra_proc_macro_srv::proc_macro::bridge::server::Dispatcher<ra_proc_macro_srv::proc_macro::bridge::server::MarkedTypes<S>> as ra_proc_macro_srv::proc_macro::bridge::server::DispatcherTrait>::dispatch
             at crates\ra_proc_macro_srv\src\proc_macro\bridge/server.rs:102
  15: <ra_proc_macro_srv::proc_macro::bridge::server::SameThread as ra_proc_macro_srv::proc_macro::bridge::server::ExecutionStrategy>::run_bridge_and_client::{{closure}}
             at crates\ra_proc_macro_srv\src\proc_macro\bridge/server.rs:152
  16: <ra_proc_macro_srv::proc_macro::bridge::closure::Closure<A,R> as core::convert::From<&mut F>>::from::call
             at crates\ra_proc_macro_srv\src\proc_macro\bridge/closure.rs:20
  17: units_search
  18: units_search
  19: units_search
  20: units_search
  21: units_search
  22: units_search
  23: units_search
  24: units_search
  25: units_search
  26: units_search
  27: units_search
  28: units_search
  29: units_search
  30: units_search
  31: units_search
  32: units_search
  33: units_search
  34: units_search
  35: units_search
  36: units_search
  37: units_search
  38: units_search
  39: units_search
  40: units_search
  41: units_search
  42: units_search
  43: units_search
  44: <ra_proc_macro_srv::proc_macro::bridge::server::SameThread as ra_proc_macro_srv::proc_macro::bridge::server::ExecutionStrategy>::run_bridge_and_client
             at crates\ra_proc_macro_srv\src\proc_macro\bridge/server.rs:154
  45: ra_proc_macro_srv::proc_macro::bridge::server::run_server
             at crates\ra_proc_macro_srv\src\proc_macro\bridge/server.rs:276
  46: ra_proc_macro_srv::proc_macro::bridge::server::<impl ra_proc_macro_srv::proc_macro::bridge::client::Client<fn(ra_proc_macro_srv::proc_macro::bridge::client::TokenStream) .> ra_proc_macro_srv::proc_macro::bridge::client::TokenStream>>::run
             at crates\ra_proc_macro_srv\src\proc_macro\bridge/server.rs:289
  47: ra_proc_macro_srv::dylib::Expander::expand
             at crates\ra_proc_macro_srv\src/dylib.rs:146
  48: ra_proc_macro_srv::ProcMacroSrv::expand
             at crates\ra_proc_macro_srv\src/lib.rs:39
  49: ra_proc_macro_srv::cli::run
             at crates\ra_proc_macro_srv\src/cli.rs:14
  50: rust_analyzer::main
             at crates\rust-analyzer\src/bin/main.rs:31
  51: std::rt::lang_start::{{closure}}
             at C:\Users\Emil\.rustup\toolchains\nightly-x86_64-pc-windows-gnu\lib/rustlib/src/rust\library\std\src/rt.rs:67
  52: std::rt::lang_start_internal::{{closure}}
             at library\std\src/rt.rs:52
  53: std::panicking::try::do_call
             at library\std\src/panicking.rs:348
  54: std::panicking::try
             at library\std\src/panicking.rs:325
  55: std::panic::catch_unwind
             at library\std\src/panic.rs:394
  56: std::rt::lang_start_internal
             at library\std\src/rt.rs:51
  57: main
  58: __tmainCRTStartup
             at D:/mingwbuild/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:337
  59: mainCRTStartup
             at D:/mingwbuild/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:221
  60: units_search
  61: units_search
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

So, seems like something is expecting to get dispatch TokenStreamBuilder with a decode of 7.

INFO [8/1/2020, 11:44:49 AM]: Extension version: 0.4.0-dev
INFO [8/1/2020, 11:44:49 AM]: Using configuration {
  lruCapacity: 30,
  files: { watcher: 'client', exclude: [] },
  notifications: { cargoTomlNotFound: true },
  cargo: {
    autoreload: true,
    noDefaultFeatures: false,
    allFeatures: false,
    features: [],
    loadOutDirsFromCheck: true,
    target: null
  },
  rustfmt: { extraArgs: [], overrideCommand: null },
  checkOnSave: {
    enable: true,
    extraArgs: [],
    command: 'clippy',
    overrideCommand: null,
    allTargets: false,
    noDefaultFeatures: null,
    allFeatures: null,
    features: null
  },
  cargoRunner: null,
  runnableEnv: null,
  inlayHints: {
    enable: true,
    typeHints: true,
    chainingHints: false,
    parameterHints: true,
    maxLength: 20
  },
  completion: {
    addCallParenthesis: true,
    addCallArgumentSnippets: true,
    postfix: { enable: true }
  },
  callInfo: { full: true },
  updates: { channel: 'nightly', askBeforeDownload: true },
  serverPath: 'C:/Users/Emil/.cargo/bin/rust-analyzer.exe',
  trace: { server: 'verbose', extension: true },
  procMacro: { enable: true },
  debug: {
    engine: 'auto',
    sourceFileMap: {
      '/rustc/<id>': '${env:USERPROFILE}/.rustup/toolchains/<toolchain-id>/lib/rustlib/src/rust'
    },
    openDebugPane: false,
    engineSettings: {}
  },
  lens: { enable: true, run: true, debug: true, implementations: true },
  hoverActions: {
    enable: true,
    implementations: true,
    run: true,
    debug: true,
    gotoTypeDef: true
  },
  linkedProjects: null,
  withSysroot: true,
  diagnostics: {
    enable: true,
    enableExperimental: false,
    warningsAsInfo: [],
    warningsAsHint: []
  }
}
INFO [8/1/2020, 11:44:49 AM]: PersistentState: {
  lastCheck: 1592251425728,
  releaseId: 27538406,
  serverVersion: '0.3.187-nightly'
}
INFO [8/1/2020, 11:44:49 AM]: Using server binary at C:/Users/Emil/.cargo/bin/rust-analyzer.exe
DEBUG [8/1/2020, 11:44:49 AM]: Checking availability of a binary at C:/Users/Emil/.cargo/bin/rust-analyzer.exe
DEBUG [8/1/2020, 11:44:49 AM]: C:/Users/Emil/.cargo/bin/rust-analyzer.exe --version: {
  status: 0,
  signal: null,
  output: [ null, 'rust-analyzer 5af32ae\n', '' ],
  pid: 1580,
  stdout: 'rust-analyzer 5af32ae\n',
  stderr: ''
}
@bjorn3
Copy link
Member

bjorn3 commented Aug 1, 2020

Nightly recently changed the unstable proc-macro abi. This is likely a symptom of this. For now you can disable proc-macro support in rust-analyzer. (rust-analyzer.procMacros I think)

@whirm
Copy link

whirm commented Sep 14, 2020

I'm getting a similar one with today's nightly.
In case it's useful:

STDERR

thread 'main' panicked at 'internal error: entered unreachable code', crates/proc_macro_srv/src/proc_macro/bridge/mod.rs:252:5
stack backtrace:
   0: std::panicking::begin_panic
   1: <proc_macro_srv::proc_macro::bridge::api_tags::Method as proc_macro_srv::proc_macro::bridge::rpc::DecodeMut<S>>::decode
   2: <proc_macro_srv::proc_macro::bridge::server::Dispatcher<proc_macro_srv::proc_macro::bridge::server::MarkedTypes<S>> as proc_macro_srv::proc_macro::bridge::server::DispatcherTrait>::dispatch
   3: <proc_macro_srv::proc_macro::bridge::closure::Closure<A,R> as core::convert::From<&mut F>>::from::call
   4: proc_macro::bridge::closure::Closure<A,R>::call
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/closure.rs:27
   5: proc_macro::bridge::client::TokenStream::into_iter::{{closure}}
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:244
   6: proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::with::{{closure}}
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:336
   7: proc_macro::bridge::client::BridgeState::with::{{closure}}::{{closure}}
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:293
   8: proc_macro::bridge::scoped_cell::ScopedCell<T>::replace
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/scoped_cell.rs:74
   9: proc_macro::bridge::client::BridgeState::with::{{closure}}
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:291
  10: std::thread::local::LocalKey<T>::try_with
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/thread/local.rs:271
  11: std::thread::local::LocalKey<T>::with
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/thread/local.rs:247
  12: proc_macro::bridge::client::BridgeState::with
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:290
  13: proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::with
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:329
  14: proc_macro::bridge::client::TokenStream::into_iter
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:237
  15: proc_macro::token_stream::<impl core::iter::traits::collect::IntoIterator for proc_macro::TokenStream>::into_iter
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/lib.rs:252
  16: <proc_macro2::imp::TokenStream as core::iter::traits::collect::IntoIterator>::into_iter
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro2-1.0.19/src/wrapper.rs:280
  17: proc_macro2::token_stream::<impl core::iter::traits::collect::IntoIterator for proc_macro2::TokenStream>::into_iter
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro2-1.0.19/src/lib.rs:1221
  18: syn::buffer::TokenBuffer::inner_new
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.36/src/buffer.rs:55
  19: syn::buffer::TokenBuffer::new2
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.36/src/buffer.rs:114
  20: <F as syn::parse::Parser>::parse2
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.36/src/parse.rs:1170
  21: syn::parse::Parser::parse
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.36/src/parse.rs:1124
  22: syn::parse_macro_input::parse
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.36/src/parse_macro_input.rs:94
  23: thiserror_impl::derive_error
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/thiserror-impl-1.0.20/src/lib.rs:17
  24: core::ops::function::FnOnce::call_once
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227
  25: proc_macro::bridge::client::Client<fn(proc_macro::TokenStream) .> proc_macro::TokenStream>::expand1::run::{{closure}}
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:409
  26: proc_macro::bridge::client::run_client::{{closure}}::{{closure}}
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:377
  27: proc_macro::bridge::scoped_cell::ScopedCell<T>::set::{{closure}}
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/scoped_cell.rs:79
  28: proc_macro::bridge::scoped_cell::ScopedCell<T>::replace
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/scoped_cell.rs:74
  29: proc_macro::bridge::scoped_cell::ScopedCell<T>::set
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/scoped_cell.rs:79
  30: proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::enter::{{closure}}
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:325
  31: std::thread::local::LocalKey<T>::try_with
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:271
  32: std::thread::local::LocalKey<T>::with
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:247
  33: proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::enter
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:325
  34: proc_macro::bridge::client::run_client::{{closure}}
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:370
  35: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:308
  36: std::panicking::try::do_call
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:381
  37: __rust_try
  38: std::panicking::try
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:345
  39: std::panic::catch_unwind
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:382
  40: proc_macro::bridge::client::run_client
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:369
  41: proc_macro::bridge::client::Client<fn(proc_macro::TokenStream) .> proc_macro::TokenStream>::expand1::run
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:409
  42: proc_macro_srv::proc_macro::bridge::server::run_server
  43: proc_macro_srv::dylib::Expander::expand
  44: proc_macro_srv::cli::run
  45: rust_analyzer::main
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
[ERROR rust_analyzer::main_loop] duplicate DidOpenTextDocument: /var/data/projects/playground-projects/substrate/substrate-node-template/lib/ldap/src/tree.rs
[ERROR rust_analyzer::main_loop] duplicate DidOpenTextDocument: /var/data/projects/playground-projects/substrate/substrate-node-template/lib/ldap/src/lib.rs
[ERROR rust_analyzer::main_loop] duplicate DidOpenTextDocument: /var/data/projects/playground-projects/substrate/substrate-node-template/lib/ldap/src/lib.rs
thread 'main' panicked at 'Invalid request
Method: shutdown
 error: invalid type: map, expected unit', /cargo/registry/src/github.com-1ecc6299db9ec823/lsp-server-0.3.4/src/msg.rs:163:17
stack backtrace:
   0: rust_begin_unwind
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/panicking.rs:483
   1: std::panicking::begin_panic_fmt
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/panicking.rs:437
   2: lsp_server::msg::Request::extract::{{closure}}
   3: lsp_server::msg::Request::extract
   4: rust_analyzer::dispatch::RequestDispatcher::on_sync
   5: rust_analyzer::main_loop::<impl rust_analyzer::global_state::GlobalState>::handle_event
   6: rust_analyzer::main_loop::<impl rust_analyzer::global_state::GlobalState>::run
   7: rust_analyzer::main_loop::main_loop
   8: rust_analyzer::main
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread 'main' panicked at 'internal error: entered unreachable code', crates/proc_macro_srv/src/proc_macro/bridge/mod.rs:252:5
stack backtrace:
   0: std::panicking::begin_panic
   1: <proc_macro_srv::proc_macro::bridge::api_tags::Method as proc_macro_srv::proc_macro::bridge::rpc::DecodeMut<S>>::decode
   2: <proc_macro_srv::proc_macro::bridge::server::Dispatcher<proc_macro_srv::proc_macro::bridge::server::MarkedTypes<S>> as proc_macro_srv::proc_macro::bridge::server::DispatcherTrait>::dispatch
   3: <proc_macro_srv::proc_macro::bridge::closure::Closure<A,R> as core::convert::From<&mut F>>::from::call
   4: proc_macro::bridge::closure::Closure<A,R>::call
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/closure.rs:27
   5: proc_macro::bridge::client::TokenStream::into_iter::{{closure}}
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:244
   6: proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::with::{{closure}}
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:336
   7: proc_macro::bridge::client::BridgeState::with::{{closure}}::{{closure}}
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:293
   8: proc_macro::bridge::scoped_cell::ScopedCell<T>::replace
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/scoped_cell.rs:74
   9: proc_macro::bridge::client::BridgeState::with::{{closure}}
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:291
  10: std::thread::local::LocalKey<T>::try_with
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/thread/local.rs:271
  11: std::thread::local::LocalKey<T>::with
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/thread/local.rs:247
  12: proc_macro::bridge::client::BridgeState::with
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:290
  13: proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::with
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:329
  14: proc_macro::bridge::client::TokenStream::into_iter
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:237
  15: proc_macro::token_stream::<impl core::iter::traits::collect::IntoIterator for proc_macro::TokenStream>::into_iter
             at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/lib.rs:252
  16: <proc_macro2::imp::TokenStream as core::iter::traits::collect::IntoIterator>::into_iter
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro2-1.0.19/src/wrapper.rs:280
  17: proc_macro2::token_stream::<impl core::iter::traits::collect::IntoIterator for proc_macro2::TokenStream>::into_iter
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro2-1.0.19/src/lib.rs:1221
  18: syn::buffer::TokenBuffer::inner_new
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.36/src/buffer.rs:55
  19: syn::buffer::TokenBuffer::new2
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.36/src/buffer.rs:114
  20: <F as syn::parse::Parser>::parse2
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.36/src/parse.rs:1170
  21: syn::parse::Parser::parse
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.36/src/parse.rs:1124
  22: syn::parse_macro_input::parse
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.36/src/parse_macro_input.rs:94
  23: thiserror_impl::derive_error
             at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/thiserror-impl-1.0.20/src/lib.rs:17
  24: core::ops::function::FnOnce::call_once
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227
  25: proc_macro::bridge::client::Client<fn(proc_macro::TokenStream) .> proc_macro::TokenStream>::expand1::run::{{closure}}
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:409
  26: proc_macro::bridge::client::run_client::{{closure}}::{{closure}}
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:377
  27: proc_macro::bridge::scoped_cell::ScopedCell<T>::set::{{closure}}
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/scoped_cell.rs:79
  28: proc_macro::bridge::scoped_cell::ScopedCell<T>::replace
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/scoped_cell.rs:74
  29: proc_macro::bridge::scoped_cell::ScopedCell<T>::set
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/scoped_cell.rs:79
  30: proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::enter::{{closure}}
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:325
  31: std::thread::local::LocalKey<T>::try_with
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:271
  32: std::thread::local::LocalKey<T>::with
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:247
  33: proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::enter
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:325
  34: proc_macro::bridge::client::run_client::{{closure}}
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:370
  35: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:308
  36: std::panicking::try::do_call
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:381
  37: __rust_try
  38: std::panicking::try
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:345
  39: std::panic::catch_unwind
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:382
  40: proc_macro::bridge::client::run_client
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:369
  41: proc_macro::bridge::client::Client<fn(proc_macro::TokenStream) .> proc_macro::TokenStream>::expand1::run
             at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:409
  42: proc_macro_srv::proc_macro::bridge::server::run_server
  43: proc_macro_srv::dylib::Expander::expand
  44: proc_macro_srv::cli::run
  45: rust_analyzer::main
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread 'main' panicked at 'internal error: entered unreachable code', crates/proc_macro_srv/src/proc_macro/bridge/mod.rs:252:5
stack backtrace:
   0:     0x55555621d790 - std::backtrace_rs::backtrace::libunwind::trace::h14e81b0c16b543a7
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/../../backtrace/src/backtrace/libunwind.rs:96
   1:     0x55555621d790 - std::backtrace_rs::backtrace::trace_unsynchronized::hc9e39e172835ff32
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/../../backtrace/src/backtrace/mod.rs:66
   2:     0x55555621d790 - std::sys_common::backtrace::_print_fmt::h31994df1c8c77b8f
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/sys_common/backtrace.rs:79
   3:     0x55555621d790 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::he74e98acff43ec99
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/sys_common/backtrace.rs:58
   4:     0x555556244dfc - core::fmt::write::h1857a60b204f1b6a
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/core/src/fmt/mod.rs:1080
   5:     0x555556218957 - std::io::Write::write_fmt::hea6289e6649ff508
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/io/mod.rs:1517
   6:     0x55555621fb40 - std::sys_common::backtrace::_print::h8cc65937fea24014
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/sys_common/backtrace.rs:61
   7:     0x55555621fb40 - std::sys_common::backtrace::print::hff6a0ebb96535e34
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/sys_common/backtrace.rs:48
   8:     0x55555621fb40 - std::panicking::default_hook::{{closure}}::h71b9700c5dda1b1d
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/panicking.rs:208
   9:     0x55555621f88c - std::panicking::default_hook::h0c46e634c06c69b6
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/panicking.rs:227
  10:     0x5555562201a3 - std::panicking::rust_panic_with_hook::he52576a0c2093334
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/panicking.rs:577
  11:     0x5555556f01b4 - std::panicking::begin_panic::{{closure}}::h91c884491959fa2e
  12:     0x5555556f014c - std::sys_common::backtrace::__rust_end_short_backtrace::h2d7298cca288fa8a
  13:     0x5555557132cc - std::panicking::begin_panic::h008813ebfa75c32d
  14:     0x5555556d5d8e - <proc_macro_srv::proc_macro::bridge::api_tags::Method as proc_macro_srv::proc_macro::bridge::rpc::DecodeMut<S>>::decode::h2c68b5a659b04f15
  15:     0x5555556e1f9a - <proc_macro_srv::proc_macro::bridge::server::Dispatcher<proc_macro_srv::proc_macro::bridge::server::MarkedTypes<S>> as proc_macro_srv::proc_macro::bridge::server::DispatcherTrait>::dispatch::h0f61f62af72a67b1
  16:     0x5555556d3073 - <proc_macro_srv::proc_macro::bridge::closure::Closure<A,R> as core::convert::From<&mut F>>::from::call::h2e62e23e95537744
  17:     0x7ffff54a799e - proc_macro::bridge::closure::Closure<A,R>::call::hcc3533761e2dbb65
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/closure.rs:27
  18:     0x7ffff54a799e - proc_macro::bridge::client::TokenStream::into_iter::{{closure}}::h6b8d8e373accd292
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:244
  19:     0x7ffff54a799e - proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::with::{{closure}}::h2acf84fa62dd9f4c
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:336
  20:     0x7ffff54a799e - proc_macro::bridge::client::BridgeState::with::{{closure}}::{{closure}}::h231fef2bd4ab4fbb
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:293
  21:     0x7ffff54a799e - proc_macro::bridge::scoped_cell::ScopedCell<T>::replace::h1defa453477e0a8e
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/scoped_cell.rs:74
  22:     0x7ffff54a799e - proc_macro::bridge::client::BridgeState::with::{{closure}}::h5e66e135a49af667
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:291
  23:     0x7ffff54a799e - std::thread::local::LocalKey<T>::try_with::h287c7989a007b920
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/thread/local.rs:271
  24:     0x7ffff54a799e - std::thread::local::LocalKey<T>::with::hef1305b088ee9d32
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/thread/local.rs:247
  25:     0x7ffff54a799e - proc_macro::bridge::client::BridgeState::with::ha8c0fb9ea948d664
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:290
  26:     0x7ffff54a799e - proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::with::hd3d047ed41803afa
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:329
  27:     0x7ffff54a799e - proc_macro::bridge::client::TokenStream::into_iter::hcb4163f99079a385
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/bridge/client.rs:237
  28:     0x7ffff54a799e - proc_macro::token_stream::<impl core::iter::traits::collect::IntoIterator for proc_macro::TokenStream>::into_iter::h87e483ef566d3e71
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/proc_macro/src/lib.rs:252
  29:     0x7ffff5479f7c - <proc_macro2::imp::TokenStream as core::iter::traits::collect::IntoIterator>::into_iter::he09cb5e85dd1d13b
                               at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro2-1.0.19/src/wrapper.rs:280
  30:     0x7ffff548a109 - proc_macro2::token_stream::<impl core::iter::traits::collect::IntoIterator for proc_macro2::TokenStream>::into_iter::h50c0ffbcb2c30da5
                               at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro2-1.0.19/src/lib.rs:1221
  31:     0x7ffff5412e8b - syn::buffer::TokenBuffer::inner_new::h95581bbf5f276e88
                               at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.36/src/buffer.rs:55
  32:     0x7ffff5413acd - syn::buffer::TokenBuffer::new2::h5c0e4a6bef8d5f4e
                               at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.36/src/buffer.rs:114
  33:     0x7ffff5258c33 - <F as syn::parse::Parser>::parse2::h01b8aa0a5e3ed1d4
                               at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.36/src/parse.rs:1170
  34:     0x7ffff5258b8a - syn::parse::Parser::parse::hef281ddf40270dc2
                               at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.36/src/parse.rs:1124
  35:     0x7ffff5257258 - syn::parse_macro_input::parse::hb098e8cf868ed6d6
                               at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.36/src/parse_macro_input.rs:94
  36:     0x7ffff526f592 - serde_derive::derive_serialize::hf3fca14f8b24b754
                               at /home/whirm/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_derive-1.0.116/src/lib.rs:80
  37:     0x7ffff525b335 - core::ops::function::FnOnce::call_once::h6e0a3463cade47af
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227
  38:     0x7ffff516ba46 - proc_macro::bridge::client::Client<fn(proc_macro::TokenStream) .> proc_macro::TokenStream>::expand1::run::{{closure}}::h55fde961eb46d6dc
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:409
  39:     0x7ffff516b07f - proc_macro::bridge::client::run_client::{{closure}}::{{closure}}::hbd6846670b43429f
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:377
  40:     0x7ffff5248bf8 - proc_macro::bridge::scoped_cell::ScopedCell<T>::set::{{closure}}::h1bd24fdc8edbf370
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/scoped_cell.rs:79
  41:     0x7ffff524941a - proc_macro::bridge::scoped_cell::ScopedCell<T>::replace::h48d88f71114e0437
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/scoped_cell.rs:74
  42:     0x7ffff5248bd1 - proc_macro::bridge::scoped_cell::ScopedCell<T>::set::h48bfb5f5a6404a0f
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/scoped_cell.rs:79
  43:     0x7ffff516b8af - proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::enter::{{closure}}::he1afde07b1e7b42b
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:325
  44:     0x7ffff51f1e3a - std::thread::local::LocalKey<T>::try_with::hdce34893121131d5
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:271
  45:     0x7ffff51f183d - std::thread::local::LocalKey<T>::with::h482dd16665ad2ca7
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:247
  46:     0x7ffff52498cc - proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::enter::h2e2877f93dc0200b
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:325
  47:     0x7ffff516aed4 - proc_macro::bridge::client::run_client::{{closure}}::hd6f12000ade46d10
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:370
  48:     0x7ffff5256e12 - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hd83f0785fb225cf3
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:308
  49:     0x7ffff516bdc0 - std::panicking::try::do_call::he3a23a3f4ead4cf7
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:381
  50:     0x7ffff51775ad - __rust_try
  51:     0x7ffff516bce0 - std::panicking::try::hf2374814efb91f05
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:345
  52:     0x7ffff5257212 - std::panic::catch_unwind::h38c35dac317a5217
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:382
  53:     0x7ffff516adbb - proc_macro::bridge::client::run_client::hd58d1588dd105646
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:369
  54:     0x7ffff516ba01 - proc_macro::bridge::client::Client<fn(proc_macro::TokenStream) .> proc_macro::TokenStream>::expand1::run::h45c10b60c87a3d25
                               at /home/whirm/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs:409
  55:     0x5555556e1b0a - proc_macro_srv::proc_macro::bridge::server::run_server::h14448ded993b6b2f
  56:     0x555555719c89 - proc_macro_srv::dylib::Expander::expand::h97b8b1dee27f404b
  57:     0x5555556d430e - proc_macro_srv::cli::run::hd25a4b7913f8ce77
  58:     0x5555556bc401 - rust_analyzer::main::hec5d8824a7f27e4f
  59:     0x5555556b6a43 - std::sys_common::backtrace::__rust_begin_short_backtrace::hb3ac26b749a0274b
  60:     0x5555556cd0b9 - std::rt::lang_start::{{closure}}::h1fc83e348e559f5c
  61:     0x555556220671 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h009d20b8a620bf60
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/core/src/ops/function.rs:259
  62:     0x555556220671 - std::panicking::try::do_call::h09431c39e2107c90
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/panicking.rs:381
  63:     0x555556220671 - std::panicking::try::he27cf60b958af343
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/panicking.rs:345
  64:     0x555556220671 - std::panic::catch_unwind::h7b646b0041dc5591
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/panic.rs:382
  65:     0x555556220671 - std::rt::lang_start_internal::hdad6c98af1e4747e
                               at /rustc/7402a394471a6738a40fea7d4f1891666e5a80c5/library/std/src/rt.rs:51
  66:     0x5555556be982 - main
  67:     0x7ffff7d94cca - __libc_start_main
  68:     0x55555568a659 - <unknown>
thread panicked while panicking. aborting.

Process rust-analyzer stderr finished

Thanks for this awesome project and let me know if I can provide any aditional info!

@lnicola
Copy link
Member

lnicola commented Sep 14, 2020

@whirm can you try #5651?

@whirm
Copy link

whirm commented Sep 14, 2020

@whirm can you try #5651?

on it

@whirm
Copy link

whirm commented Sep 14, 2020

@whirm can you try #5651?

It spent some time consuming 100% of one core for a while (not sure how long as I went for lunch after a few minutes).

After that, it doesn't seem to crash anymore.

I'll keep running this version and update this issue if I find any errors.

Thanks @lnicola!

@whirm
Copy link

whirm commented Sep 17, 2020

@whirm can you try #5651?

FYI I've been using your branch since and no crashes happened.

@bors bors bot closed this as completed in e6a05e6 Oct 8, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants