rust-analyzer: Panic during MBE parsing

Running ra_cli analysis-stats on the rust-lang/rust repo currently results in the following panic:

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Expected("subtree")', src/libcore/result.rs:997:5
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:39
   1: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:70
   2: std::panicking::default_hook::{{closure}}
             at src/libstd/sys_common/backtrace.rs:58
             at src/libstd/panicking.rs:200
   3: std::panicking::default_hook
             at src/libstd/panicking.rs:215
   4: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:478
   5: std::panicking::continue_panic_fmt
             at src/libstd/panicking.rs:385
   6: rust_begin_unwind
             at src/libstd/panicking.rs:312
   7: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
   8: core::result::unwrap_failed
             at /rustc/fc50f328b0353b285421b8ff5d4100966387a997/src/libcore/macros.rs:17
   9: ra_mbe::mbe_parser::parse_subtree
             at /rustc/fc50f328b0353b285421b8ff5d4100966387a997/src/libcore/result.rs:798
             at crates/ra_mbe/src/mbe_parser.rs:92
             at crates/ra_mbe/src/mbe_parser.rs:41
  10: ra_mbe::mbe_parser::parse_subtree
             at crates/ra_mbe/src/mbe_parser.rs:52
  11: ra_mbe::mbe_parser::parse
             at crates/ra_mbe/src/mbe_parser.rs:23
             at crates/ra_mbe/src/mbe_parser.rs:11
  12: ra_mbe::MacroRules::parse
             at crates/ra_mbe/src/lib.rs:65
  13: ra_hir::ids::macro_def_query
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/ids.rs:135
  14: <salsa::runtime::Runtime<DB>>::execute_query_implementation
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:42
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:376
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/runtime.rs:319
  15: <salsa::derived::DerivedStorage<DB, Q, MP> as salsa::plumbing::QueryStorageOps<DB, Q>>::try_fetch
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:369
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:292
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:706
  16: <salsa::QueryTable<'_, DB, Q>>::get
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/lib.rs:460
  17: ra_hir::ids::HirFileId::hir_parse_query
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:23
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/ids.rs:95
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/ids.rs:66
  18: <salsa::runtime::Runtime<DB>>::execute_query_implementation
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:45
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:376
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/runtime.rs:319
  19: <salsa::derived::DerivedStorage<DB, Q, MP> as salsa::plumbing::QueryStorageOps<DB, Q>>::try_fetch
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:369
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:292
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:706
  20: <salsa::QueryTable<'_, DB, Q>>::get
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/lib.rs:460
  21: ra_hir::source_id::AstIdMap::ast_id_map_query
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:23
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/source_id.rs:91
  22: <salsa::runtime::Runtime<DB>>::execute_query_implementation
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:60
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:376
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/runtime.rs:319
  23: <salsa::derived::DerivedStorage<DB, Q, MP> as salsa::plumbing::QueryStorageOps<DB, Q>>::try_fetch
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:369
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:292
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:706
  24: <salsa::QueryTable<'_, DB, Q>>::get
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/lib.rs:460
  25: ra_hir::nameres::raw::RawItems::raw_items_with_source_map_query
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:23
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres/raw.rs:72
  26: <salsa::runtime::Runtime<DB>>::execute_query_implementation
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:69
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:376
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/runtime.rs:319
  27: <salsa::derived::DerivedStorage<DB, Q, MP> as salsa::plumbing::QueryStorageOps<DB, Q>>::try_fetch
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:369
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:292
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:706
  28: <salsa::QueryTable<'_, DB, Q>>::get
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/lib.rs:460
  29: <salsa::runtime::Runtime<DB>>::execute_query_implementation
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:23
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres/raw.rs:63
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:66
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:376
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/runtime.rs:319
  30: <salsa::derived::DerivedStorage<DB, Q, MP> as salsa::plumbing::QueryStorageOps<DB, Q>>::try_fetch
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:369
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:292
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:706
  31: <salsa::QueryTable<'_, DB, Q>>::get
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/lib.rs:460
  32: <ra_hir::nameres::collector::DefCollector<&'a DB>>::collect_macro_expansion
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:23
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres/collector.rs:375
  33: <ra_hir::nameres::collector::ModCollector<'_, &mut ra_hir::nameres::collector::DefCollector<&DB>>>::collect
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres/collector.rs:528
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres/collector.rs:413
  34: <ra_hir::nameres::collector::DefCollector<&'a DB>>::collect_macro_expansion
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres/collector.rs:376
  35: <ra_hir::nameres::collector::ModCollector<'_, &mut ra_hir::nameres::collector::DefCollector<&DB>>>::collect
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres/collector.rs:528
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres/collector.rs:413
  36: <ra_hir::nameres::collector::ModCollector<'_, &mut ra_hir::nameres::collector::DefCollector<&DB>>>::collect
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres/collector.rs:440
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres/collector.rs:406
  37: ra_hir::nameres::collector::collect_defs
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres/collector.rs:103
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres/collector.rs:47
  38: ra_hir::nameres::CrateDefMap::crate_def_map_query
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres.rs:217
  39: <salsa::runtime::Runtime<DB>>::execute_query_implementation
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:75
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:376
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/runtime.rs:319
  40: <salsa::derived::DerivedStorage<DB, Q, MP> as salsa::plumbing::QueryStorageOps<DB, Q>>::try_fetch
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:369
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:292
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:706
  41: <salsa::QueryTable<'_, DB, Q>>::get
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/lib.rs:460
  42: ra_hir::nameres::collector::collect_defs
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:23
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/code_model_impl/krate.rs:18
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/code_model_api.rs:47
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres/collector.rs:26
  43: ra_hir::nameres::CrateDefMap::crate_def_map_query
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres.rs:217
  44: <salsa::runtime::Runtime<DB>>::execute_query_implementation
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:75
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:376
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/runtime.rs:319
  45: <salsa::derived::DerivedStorage<DB, Q, MP> as salsa::plumbing::QueryStorageOps<DB, Q>>::try_fetch
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:369
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:292
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:706
  46: <salsa::QueryTable<'_, DB, Q>>::get
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/lib.rs:460
  47: ra_hir::nameres::collector::collect_defs
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:23
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/code_model_impl/krate.rs:18
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/code_model_api.rs:47
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres/collector.rs:26
  48: ra_hir::nameres::CrateDefMap::crate_def_map_query
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/nameres.rs:217
  49: <salsa::runtime::Runtime<DB>>::execute_query_implementation
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:75
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:376
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/runtime.rs:319
  50: <salsa::derived::DerivedStorage<DB, Q, MP> as salsa::plumbing::QueryStorageOps<DB, Q>>::try_fetch
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:369
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:292
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/derived.rs:706
  51: <salsa::QueryTable<'_, DB, Q>>::get
             at /home/florian/.cargo/registry/src/github.com-1ecc6299db9ec823/salsa-0.12.0/src/lib.rs:460
  52: ra_cli::analysis_stats::run
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/db.rs:23
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/code_model_impl/krate.rs:18
             at /home/florian/Projekte/opensource/rust-analyzer/crates/ra_hir/src/code_model_api.rs:47
             at crates/ra_cli/src/analysis_stats.rs:21
  53: ra_cli::main
             at crates/ra_cli/src/main.rs:54
  54: std::rt::lang_start::{{closure}}
             at /rustc/fc50f328b0353b285421b8ff5d4100966387a997/src/libstd/rt.rs:64
  55: std::panicking::try::do_call
             at src/libstd/rt.rs:49
             at src/libstd/panicking.rs:297
  56: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:87
  57: std::rt::lang_start_internal
             at src/libstd/panicking.rs:276
             at src/libstd/panic.rs:388
             at src/libstd/rt.rs:48
  58: main
  59: __libc_start_main
  60: _start

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 15 (15 by maintainers)

Commits related to this issue

Most upvoted comments

The problem also appears to happen in the Chalk repo, and hence in rust-analyzer once my PR is merged 😦