Rust-clippy: ICE While Checking the Rust Compiler

Created on 26 Nov 2020  路  7Comments  路  Source: rust-lang/rust-clippy

Code

Trying to run ./x.py clippy on the rust repo leads to an ICE, due to some code in library/core. Isolating the specific example

Meta

  • cargo clippy -V: clippy 0.0.212 (21dea46 2020-11-18)
  • rustc -Vv:
rustc 1.49.0-beta.1 (21dea46d8 2020-11-18)
binary: rustc
commit-hash: 21dea46d8347c8b4117c5567949703f0fbb51649
commit-date: 2020-11-18
host: x86_64-unknown-linux-gnu
release: 1.49.0-beta.1

Error output

thread 'rustc' panicked at 'called `Option::unwrap()` on a `None` value', src/tools/clippy/clippy_lints/src/methods/mod.rs:3904:68
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust-clippy/issues/new

note: Clippy version: clippy 0.0.212 (21dea46 2020-11-18)

query stack during panic:
#0 [analysis] running analysis passes on this crate
end of query stack


Backtrace

thread 'rustc' panicked at 'called `Option::unwrap()` on a `None` value', src/tools/clippy/clippy_lints/src/methods/mod.rs:3904:68 stack backtrace: 0: rust_begin_unwind at /rustc/21dea46d8347c8b4117c5567949703f0fbb51649/library/std/src/panicking.rs:495:5 1: core::panicking::panic_fmt at /rustc/21dea46d8347c8b4117c5567949703f0fbb51649/library/core/src/panicking.rs:92:14 2: core::panicking::panic at /rustc/21dea46d8347c8b4117c5567949703f0fbb51649/library/core/src/panicking.rs:50:5 3: <clippy_lints::methods::Methods as rustc_lint::passes::LateLintPass>::check_expr 4: <rustc_lint::late::LateLintPassObjects as rustc_lint::passes::LateLintPass>::check_expr 5: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_expr 6: rustc_hir::intravisit::walk_expr 7: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_expr 8: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_nested_body 9: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_fn 10: rustc_hir::intravisit::walk_trait_item 11: rustc_hir::intravisit::Visitor::visit_nested_trait_item 12: rustc_hir::intravisit::walk_item 13: rustc_hir::intravisit::Visitor::visit_nested_item 14: rustc_hir::intravisit::walk_item 15: rustc_hir::intravisit::Visitor::visit_nested_item 16: rustc_hir::intravisit::walk_item 17: rustc_hir::intravisit::Visitor::visit_nested_item 18: rustc_hir::intravisit::walk_item 19: rustc_hir::intravisit::Visitor::visit_nested_item 20: rustc_hir::intravisit::walk_crate 21: rustc_lint::late::late_lint_pass_crate 22: rustc_session::utils::<impl rustc_session::session::Session>::time 23: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once 24: rustc_session::utils::<impl rustc_session::session::Session>::time 25: rustc_interface::passes::analysis 26: rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::analysis>::compute 27: rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps 28: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl 29: rustc_data_structures::stack::ensure_sufficient_stack 30: rustc_query_system::query::plumbing::get_query_impl 31: rustc_interface::passes::QueryContext::enter 32: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter 33: rustc_span::with_source_map 34: rustc_interface::interface::create_compiler_and_run 35: rustc_span::with_session_globals note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.


L-bug L-crash

All 7 comments

Thanks for your report! This might have been fixed by https://github.com/rust-lang/rust-clippy/pull/6304.

Yep, this has fixed it. Thanks for noticing @giraffate. And thanks for all the triage work you're doing for Clippy in general! :heart: :crab:

@giraffate @flip1995
I updated clippy and it is still not fixed for me.
New output:

thread 'rustc' panicked at 'called `Option::unwrap()` on a `None` value', src/tools/clippy/clippy_lints/src/methods/mod.rs:3904:68
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust-clippy/issues/new

note: Clippy version: clippy 0.0.212 (bd26e4e 2020-11-24)

New backtrace:

thread 'rustc' panicked at 'called `Option::unwrap()` on a `None` value', src/tools/clippy/clippy_lints/src/methods/mod.rs:3904:68
stack backtrace:
   0: rust_begin_unwind
             at /rustc/bd26e4e544992e52f2080906f71b2f1e6dc1b14a/library/std/src/panicking.rs:495:5
   1: core::panicking::panic_fmt
             at /rustc/bd26e4e544992e52f2080906f71b2f1e6dc1b14a/library/core/src/panicking.rs:92:14
   2: core::panicking::panic
             at /rustc/bd26e4e544992e52f2080906f71b2f1e6dc1b14a/library/core/src/panicking.rs:50:5
   3: <clippy_lints::methods::Methods as rustc_lint::passes::LateLintPass>::check_expr
   4: <rustc_lint::late::LateLintPassObjects as rustc_lint::passes::LateLintPass>::check_expr
   5: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_expr
   6: rustc_hir::intravisit::walk_expr
   7: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_expr
   8: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_nested_body
   9: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_fn
  10: rustc_hir::intravisit::walk_trait_item
  11: rustc_hir::intravisit::Visitor::visit_nested_trait_item
  12: rustc_hir::intravisit::walk_item
  13: rustc_hir::intravisit::Visitor::visit_nested_item
  14: rustc_hir::intravisit::walk_item
  15: rustc_hir::intravisit::Visitor::visit_nested_item
  16: rustc_hir::intravisit::walk_item
  17: rustc_hir::intravisit::Visitor::visit_nested_item
  18: rustc_hir::intravisit::walk_item
  19: rustc_hir::intravisit::Visitor::visit_nested_item
  20: rustc_hir::intravisit::walk_crate
  21: rustc_lint::late::late_lint_pass_crate
  22: rustc_session::utils::<impl rustc_session::session::Session>::time
  23: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
  24: rustc_session::utils::<impl rustc_session::session::Session>::time
  25: rustc_interface::passes::analysis
  26: rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::analysis>::compute
  27: rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps
  28: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
  29: rustc_data_structures::stack::ensure_sufficient_stack
  30: rustc_query_system::query::plumbing::get_query_impl
  31: rustc_interface::passes::QueryContext::enter
  32: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter
  33: rustc_span::with_source_map
  34: rustc_interface::interface::create_compiler_and_run
  35: rustc_span::with_session_globals
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Thanks for your new report! In rust-lang/rust at bd26e4e, it looks like https://github.com/rust-lang/rust-clippy/pull/6304 wasn't still synced back to rust-lang/rust. So I guess this will be fixed if syncing back process is done.

Yeah, can't reproduce when using latest clippy from this repo on the rustc repo via x.py clippy.
I would personally close this as "fixed upstream"( = in this clippy repo).

Yeah, can't reproduce when using latest clippy from this repo on the rustc repo via x.py clippy.

How do you do this? When I tried it, I got the classic "has to have a known size at compile time" errors. I tried to run ./x.py clippy after installing it from the Clippy repo cargo +master install --path . --force.

I get the latest master toolchain rustup-toolchain-install-master -n master -f -c rustc-dev llvm-tools rust-src clippy
I compile clippy with that cargo +master build --release
I "install" that clippy into the master toolchain cd target/release; cp -f cargo-clippy clippy-driver ~/.rustup/toolchains/master/bin
I set the master toolchain as default temporarily rustup default master
Then I can use that clippy on rustc: ./x.py clippy which usually works fine then.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

phansch picture phansch  路  3Comments

vitorenesduarte picture vitorenesduarte  路  3Comments

matthiaskrgr picture matthiaskrgr  路  3Comments

Luro02 picture Luro02  路  3Comments

0e4ef622 picture 0e4ef622  路  3Comments