mmtk / mmtk-core

Memory Management ToolKit
https://www.mmtk.io
Other
374 stars 69 forks source link

Clippy bug in 1.72: forcing query with already existing `DepNode` #929

Closed qinsoon closed 1 year ago

qinsoon commented 1 year ago

This started to appear on Rust stable (1.72) after 66e8cb8ae7dc40b9ca504f1775d2bb236b087473 is merged. It failed when we tried to check style for all the features.

++ for_all_features 'cargo clippy'
++ cargo clippy --features vm_space,ro_space,code_space,vo_bit,is_mmtk_object,object_pinning,immix_non_moving,immix_smaller_block,immix_zero_on_release,sanity,analysis,nogc_lock_free,nogc_no_zeroing,single_worker,extreme_assertions,nogc_multi_space,work_packet_stats,malloc_counted_size,count_live_bytes_in_gc
   Compiling mmtk v0.19.0 (/home/runner/work/mmtk-core/mmtk-core)
thread 'rustc' panicked at 'forcing query with already existing `DepNode`
- query-key: (ByRef { alloc: ConstAllocation { .. }, offset: Size(0 bytes) }, util::metadata::side_metadata::global::SideMetadataSpec)
- dep-node: try_destructure_mir_constant_for_diagnostics(8ee85db3da0b8d25-401d3d57adad2b0d)', /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/compiler/rustc_query_system/src/dep_graph/graph.rs:351:9
stack backtrace:
   0: 0xee2eda78 - std::backtrace_rs::backtrace::libunwind::trace::ha70eea129e7d2a5b
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1: 0xee2eda78 - std::backtrace_rs::backtrace::trace_unsynchronized::hf2790414cd064fa3
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2: 0xee2eda78 - std::sys_common::backtrace::_print_fmt::h20ee8058fc5e04f2
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/std/src/sys_common/backtrace.rs:65:5
   3: 0xee2eda78 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h58d518f543159de3
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/std/src/sys_common/backtrace.rs:44:22
   4: 0xee353940 - core::fmt::rt::Argument::fmt::he75d9d0eb5a029aa
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/fmt/rt.rs:138:9
   5: 0xee353940 - core::fmt::write::h987f34a58eca8dd1
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/fmt/mod.rs:1094:21
   6: 0xee2e0e8d - std::io::Write::write_fmt::h2cfa48842b7a2ff9
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/std/src/io/mod.rs:1714:15
   7: 0xee2ed88f - std::sys_common::backtrace::_print::ha0a9f9ec697dc419
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/std/src/sys_common/backtrace.rs:47:5
   8: 0xee2ed88f - std::sys_common::backtrace::print::hf942f2ccdf9d3ad3
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/std/src/sys_common/backtrace.rs:34:9
   9: 0xee2f03ce - std::panicking::default_hook::{{closure}}::he1e48cebbd0e82cc
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/std/src/panicking.rs:269:22
  10: 0xee2f0141 - std::panicking::default_hook::h06560cc01213988c
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/std/src/panicking.rs:288:9
  11: 0xee2b181c - core::ops::function::Fn::call::hb10e9f424c5f28b0
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/ops/function.rs:79:5
  12: 0xeeb37309 - rustc_driver_impl[1172afe80aba862a]::install_ice_hook::{closure#0}
  13: 0xee2f0c3f - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h48cdcb91d51272b4
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/alloc/src/boxed.rs:2007:9
  14: 0xee2f0c3f - std::panicking::rust_panic_with_hook::h30252ba29e857cf4
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/std/src/panicking.rs:709:13
  15: 0xee2f09ac - std::panicking::begin_panic_handler::{{closure}}::h6498c274e8e6e233
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/std/src/panicking.rs:597:13
  16: 0xee2edf15 - std::sys_common::backtrace::__rust_end_short_backtrace::h9a1a56ab25f65660
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/std/src/sys_common/backtrace.rs:151:18
  17: 0xee2f06a2 - rust_begin_unwind
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/std/src/panicking.rs:593:5
  18: 0xee2aeb25 - core::panicking::panic_fmt::h68c7ebc5f78d740a
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/panicking.rs:67:14
  19: 0xf2e8d318 - rustc_query_system[25087abe48ce79b3]::query::plumbing::try_execute_query::<rustc_query_impl[fad54e99a352df03]::DynamicConfig<rustc_query_system[25087abe48ce79b3]::query::caches::DefaultCache<(rustc_middle[4da1f22c666fd593]::mir::interpret::value::ConstValue, rustc_middle[4da1f22c666fd593]::ty::Ty), rustc_middle[4da1f22c666fd593]::query::erase::Erased<[u8; 12usize]>>, false, false, false>, rustc_query_impl[fad54e99a352df03]::plumbing::QueryCtxt, true>
  20: 0xf2c2021f - rustc_query_impl[fad54e99a352df03]::query_impl::try_destructure_mir_constant_for_diagnostics::get_query_incr::__rust_end_short_backtrace
  21: 0x56b7642d - clippy_utils[f412eda6244949d3]::consts::field_of_struct
  22: 0x56b725cd - <clippy_utils[f412eda6244949d3]::consts::ConstEvalLateContext>::expr
  23: 0x56b70ce3 - clippy_utils[f412eda6244949d3]::consts::constant_simple
  24: 0x56a8cdba - clippy_lints[21fafd3b5a6aeb5f]::operators::identity_op::check
  25: 0x568a6b37 - <clippy_lints[21fafd3b5a6aeb5f]::operators::Operators as rustc_lint[3a9b49d9fa11ea76]::passes::LateLintPass>::check_expr
  26: 0xf37e8991 - <rustc_lint[3a9b49d9fa11ea76]::late::RuntimeCombinedLateLintPass as rustc_lint[3a9b49d9fa11ea76]::passes::LateLintPass>::check_expr
  27: 0xeed256ad - <rustc_lint[3a9b49d9fa11ea76]::late::LateContextAndPass<rustc_lint[3a9b49d9fa11ea76]::late::RuntimeCombinedLateLintPass> as rustc_hir[800ed4f110abd428]::intravisit::Visitor>::visit_expr
  28: 0xeeca3b93 - rustc_hir[800ed4f110abd428]::intravisit::walk_body::<rustc_lint[3a9b49d9fa11ea76]::late::LateContextAndPass<rustc_lint[3a9b49d9fa11ea76]::late::RuntimeCombinedLateLintPass>>
  29: 0xeed25e6f - <rustc_lint[3a9b49d9fa11ea76]::late::LateContextAndPass<rustc_lint[3a9b49d9fa11ea76]::late::RuntimeCombinedLateLintPass> as rustc_hir[800ed4f110abd428]::intravisit::Visitor>::visit_nested_body
  30: 0xeeca4a05 - rustc_hir[800ed4f110abd428]::intravisit::walk_item::<rustc_lint[3a9b49d9fa11ea76]::late::LateContextAndPass<rustc_lint[3a9b49d9fa11ea76]::late::RuntimeCombinedLateLintPass>>
  31: 0xeed27f9e - <rustc_lint[3a9b49d9fa11ea76]::late::LateContextAndPass<rustc_lint[3a9b49d9fa11ea76]::late::RuntimeCombinedLateLintPass> as rustc_hir[800ed4f110abd428]::intravisit::Visitor>::visit_nested_item
  32: 0xeeca4c4e - rustc_hir[800ed4f110abd428]::intravisit::walk_item::<rustc_lint[3a9b49d9fa11ea76]::late::LateContextAndPass<rustc_lint[3a9b49d9fa11ea76]::late::RuntimeCombinedLateLintPass>>
  33: 0xeed27f9e - <rustc_lint[3a9b49d9fa11ea76]::late::LateContextAndPass<rustc_lint[3a9b49d9fa11ea76]::late::RuntimeCombinedLateLintPass> as rustc_hir[800ed4f110abd428]::intravisit::Visitor>::visit_nested_item
  34: 0xeeca4c4e - rustc_hir[800ed4f110abd428]::intravisit::walk_item::<rustc_lint[3a9b49d9fa11ea76]::late::LateContextAndPass<rustc_lint[3a9b49d9fa11ea76]::late::RuntimeCombinedLateLintPass>>
  35: 0xeed27f9e - <rustc_lint[3a9b49d9fa11ea76]::late::LateContextAndPass<rustc_lint[3a9b49d9fa11ea76]::late::RuntimeCombinedLateLintPass> as rustc_hir[800ed4f110abd428]::intravisit::Visitor>::visit_nested_item
  36: 0xeed2249b - rustc_lint[3a9b49d9fa11ea76]::late::late_lint_crate::<rustc_lint[3a9b49d9fa11ea76]::BuiltinCombinedLateLintPass>
  37: 0xeecda661 - <rustc_session[c1b535b10516fa25]::session::Session>::time::<(), rustc_lint[3a9b49d9fa11ea76]::late::check_crate<rustc_lint[3a9b49d9fa11ea76]::BuiltinCombinedLateLintPass, rustc_interface[62f1da0fa23c6cc2]::passes::analysis::{closure#5}::{closure#1}::{closure#2}::{closure#0}::{closure#0}>::{closure#0}::{closure#0}>
  38: 0xeecdaaa1 - <rustc_session[c1b535b10516fa25]::session::Session>::time::<(), rustc_interface[62f1da0fa23c6cc2]::passes::analysis::{closure#5}::{closure#1}::{closure#2}::{closure#0}>
  39: 0xeed072c5 - <core[76df6b3651442529]::panic::unwind_safe::AssertUnwindSafe<rustc_interface[62f1da0fa23c6cc2]::passes::analysis::{closure#5}::{closure#1}> as core[76df6b3651442529]::ops::function::FnOnce<()>>::call_once
  40: 0xeecdc4cd - <rustc_session[c1b535b10516fa25]::session::Session>::time::<(), rustc_interface[62f1da0fa23c6cc2]::passes::analysis::{closure#5}>
  41: 0xeed5153d - rustc_interface[62f1da0fa23c6cc2]::passes::analysis
  42: 0xf2bc0f8f - rustc_query_impl[fad54e99a352df03]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[fad54e99a352df03]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[4da1f22c666fd593]::query::erase::Erased<[u8; 1usize]>>
  43: 0xf2ddfa1a - <rustc_query_impl[fad54e99a352df03]::query_impl::analysis::dynamic_query::{closure#2} as core[76df6b3651442529]::ops::function::FnOnce<(rustc_middle[4da1f22c666fd593]::ty::context::TyCtxt, ())>>::call_once
  44: 0xf2e23287 - rustc_query_system[25087abe48ce79b3]::query::plumbing::try_execute_query::<rustc_query_impl[fad54e99a352df03]::DynamicConfig<rustc_query_system[25087abe48ce79b3]::query::caches::SingleCache<rustc_middle[4da1f22c666fd593]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[fad54e99a352df03]::plumbing::QueryCtxt, true>
  45: 0xf2d08923 - rustc_query_impl[fad54e99a352df03]::query_impl::analysis::get_query_incr::__rust_end_short_backtrace
  46: 0xeeb909dd - <rustc_middle[4da1f22c666fd593]::ty::context::GlobalCtxt>::enter::<rustc_driver_impl[1172afe80aba862a]::run_compiler::{closure#1}::{closure#2}::{closure#4}, core[76df6b3651442529]::result::Result<(), rustc_span[b5574735174ee799]::ErrorGuaranteed>>
  47: 0xeeb75976 - <rustc_interface[62f1da0fa23c6cc2]::queries::QueryResult<&rustc_middle[4da1f22c666fd593]::ty::context::GlobalCtxt>>::enter::<core[76df6b3651442529]::result::Result<(), rustc_span[b5574735174ee799]::ErrorGuaranteed>, rustc_driver_impl[1172afe80aba862a]::run_compiler::{closure#1}::{closure#2}::{closure#4}>
  48: 0xeeb433ee - <rustc_interface[62f1da0fa23c6cc2]::interface::Compiler>::enter::<rustc_driver_impl[1172afe80aba862a]::run_compiler::{closure#1}::{closure#2}, core[76df6b3651442529]::result::Result<core[76df6b3651442529]::option::Option<rustc_interface[62f1da0fa23c6cc2]::queries::Linker>, rustc_span[b5574735174ee799]::ErrorGuaranteed>>
  49: 0xeeb74608 - rustc_span[b5574735174ee799]::set_source_map::<core[76df6b3651442529]::result::Result<(), rustc_span[b5574735174ee799]::ErrorGuaranteed>, rustc_interface[62f1da0fa23c6cc2]::interface::run_compiler<core[76df6b3651442529]::result::Result<(), rustc_span[b5574735174ee799]::ErrorGuaranteed>, rustc_driver_impl[1172afe80aba862a]::run_compiler::{closure#1}>::{closure#0}::{closure#0}>
  50: 0xeeb69e98 - <scoped_tls[4006e75f543c45e4]::ScopedKey<rustc_span[b5574735174ee799]::SessionGlobals>>::set::<rustc_interface[62f1da0fa23c6cc2]::interface::run_compiler<core[76df6b3651442529]::result::Result<(), rustc_span[b5574735174ee799]::ErrorGuaranteed>, rustc_driver_impl[1172afe80aba862a]::run_compiler::{closure#1}>::{closure#0}, core[76df6b3651442529]::result::Result<(), rustc_span[b5574735174ee799]::ErrorGuaranteed>>
  51: 0xeeb5ee33 - std[8318b20a33bd2287]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[62f1da0fa23c6cc2]::util::run_in_thread_pool_with_globals<rustc_interface[62f1da0fa23c6cc2]::interface::run_compiler<core[76df6b3651442529]::result::Result<(), rustc_span[b5574735174ee799]::ErrorGuaranteed>, rustc_driver_impl[1172afe80aba862a]::run_compiler::{closure#1}>::{closure#0}, core[76df6b3651442529]::result::Result<(), rustc_span[b5574735174ee799]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[76df6b3651442529]::result::Result<(), rustc_span[b5574735174ee799]::ErrorGuaranteed>>
  52: 0xeeb988ca - <<std[8318b20a33bd2287]::thread::Builder>::spawn_unchecked_<rustc_interface[62f1da0fa23c6cc2]::util::run_in_thread_pool_with_globals<rustc_interface[62f1da0fa23c6cc2]::interface::run_compiler<core[76df6b3651442529]::result::Result<(), rustc_span[b5574735174ee799]::ErrorGuaranteed>, rustc_driver_impl[1172afe80aba862a]::run_compiler::{closure#1}>::{closure#0}, core[76df6b3651442529]::result::Result<(), rustc_span[b5574735174ee799]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[76df6b3651442529]::result::Result<(), rustc_span[b5574735174ee799]::ErrorGuaranteed>>::{closure#1} as core[76df6b3651442529]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  53: 0xee2fb76b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h3b648595c157383b
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/alloc/src/boxed.rs:1993:9
  54: 0xee2fb76b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::he4fd5407a55440e4
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/alloc/src/boxed.rs:1993:9
  55: 0xee2fb76b - std::sys::unix::thread::Thread::new::thread_start::h83939deda7afa123
                       at /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/std/src/sys/unix/thread.rs:108:17
  56: 0xedf5cb91 - <unknown>
  57: 0xedff[96](https://github.com/mmtk/mmtk-core/actions/runs/6022411034/job/16337106486#step:7:97)4c - <unknown>
  58:        0x0 - <unknown>

error: 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: rustc 1.72.0 (5680fa18f 2023-08-23) running on i686-unknown-linux-gnu

note: compiler flags: --crate-type rlib -C embed-bitcode=no -C debuginfo=2 -C incremental=[REDACTED]

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [try_destructure_mir_constant_for_diagnostics] destructuring MIR constant
#1 [analysis] running analysis passes on this crate
end of query stack
note: Clippy version: clippy 0.1.72 (5680fa1 2023-08-23)

error: could not compile `mmtk` (lib)

Before the PR, clippy with Rust 1.72 failed at the step of checking with default features (one step before checking with all the features), complaining that clippy::cast_ref_to_mut is renamed.

RUSTFLAGS='-D warnings'
++ cargo clippy
   Compiling proc-macro2 v1.0.[6](https://github.com/mmtk/mmtk-core/actions/runs/6021389477/job/16334181544#step:7:7)6
   Compiling unicode-ident v1.0.11
   Compiling libc v0.2.14[7](https://github.com/mmtk/mmtk-core/actions/runs/6021389477/job/16334181544#step:7:8)
   Compiling autocfg v1.1.0
   Compiling quote v1.0.33
   Compiling syn v2.0.29
   Compiling jobserver v0.1.26
   Compiling cc v1.0.[8](https://github.com/mmtk/mmtk-core/actions/runs/6021389477/job/16334181544#step:7:9)3
   Compiling pkg-config v0.3.27
    Checking cfg-if v1.0.0
   Compiling crossbeam-utils v0.8.16
   Compiling vcpkg v0.2.15
   Compiling tinyvec_macros v0.1.1
   Compiling thiserror v1.0.47
   Compiling tinyvec v1.6.0
   Compiling libz-sys v1.1.12
   Compiling thiserror-impl v1.0.47
   Compiling memoffset v0.[9](https://github.com/mmtk/mmtk-core/actions/runs/6021389477/job/16334181544#step:7:10).0
    Checking scopeguard v1.2.0
   Compiling serde v1.0.188
   Compiling unicode-normalization v0.1.22
   Compiling serde_derive v1.0.188
   Compiling crossbeam-epoch v0.9.15
   Compiling ucd-trie v0.1.6
   Compiling version_check v0.9.4
   Compiling percent-encoding v2.3.0
   Compiling unicode-bidi v0.3.13
   Compiling idna v0.4.0
   Compiling form_urlencoded v1.2.0
   Compiling pest v2.7.2
   Compiling libgit2-sys v0.14.2+1.5.1
   Compiling semver v1.0.18
   Compiling syn v1.0.[10](https://github.com/mmtk/mmtk-core/actions/runs/6021389477/job/16334181544#step:7:11)9
   Compiling semver-parser v0.10.2
   Compiling url v2.4.1
   Compiling toml v0.5.[11](https://github.com/mmtk/mmtk-core/actions/runs/6021389477/job/16334181544#step:7:12)
   Compiling semver v0.11.0
    Checking crossbeam-deque v0.8.3
   Compiling proc-macro-error-attr v1.0.4
    Checking crossbeam-channel v0.5.8
   Compiling log v0.4.20
   Compiling bitflags v1.3.2
   Compiling rayon-core v1.11.0
   Compiling rustix v0.38.10
    Checking memchr v2.6.1
    Checking aho-corasick v1.0.5
    Checking num_cpus v1.16.0
   Compiling cargo-lock v8.0.3
   Compiling rustc_version v0.3.3
   Compiling proc-macro-error v1.0.4
   Compiling lock_api v0.4.10
    Checking regex-syntax v0.7.5
   Compiling rustversion v1.0.14
   Compiling crossbeam-queue v0.3.8
    Checking bitflags v2.4.0
    Checking linux-raw-sys v0.4.5
    Checking either v1.9.0
    Checking regex-automata v0.3.7
   Compiling atomic-traits v0.3.0
   Compiling num-traits v0.2.16
    Checking regex v1.9.4
    Checking rayon v1.7.0
    Checking is-terminal v0.4.9
   Compiling enum-map-derive v0.[13](https://github.com/mmtk/mmtk-core/actions/runs/6021389477/job/16334181544#step:7:14).0
   Compiling heck v0.4.1
    Checking termcolor v1.2.0
    Checking once_cell v1.18.0
    Checking humantime v2.1.0
    Checking sysinfo v0.29.9
    Checking env_logger v0.10.0
   Compiling strum_macros v0.24.3
    Checking enum-map v2.6.1
    Checking crossbeam v0.8.2
    Checking spin v0.9.8
   Compiling mmtk-macros v0.19.0 (/home/runner/work/mmtk-core/mmtk-core/macros)
    Checking itertools v0.10.5
   Compiling delegate v0.9.0
    Checking lazy_static v1.4.0
    Checking static_assertions v1.1.0
    Checking atomic v0.5.3
    Checking downcast-rs v1.2.0
    Checking atomic_refcell v0.1.11
    Checking strum v0.24.1
    Checking probe v0.5.1
   Compiling git2 v0.[16](https://github.com/mmtk/mmtk-core/actions/runs/6021389477/job/16334181544#step:7:17).1
   Compiling built v0.6.0
   Compiling mmtk v0.19.0 (/home/runner/work/mmtk-core/mmtk-core)
error: unnecessary `pub(self)`
  --> src/scheduler/mod.rs:10:1
   |
10 | pub(self) mod work_counter;
   | ^^^^^^^^^ help: remove it
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_pub_self
   = note: `-D clippy::needless-pub-self` implied by `-D warnings`

error: lint `clippy::cast_ref_to_mut` has been renamed to `invalid_reference_casting`
  --> src/scheduler/gc_work.rs:49:[17](https://github.com/mmtk/mmtk-core/actions/runs/6021389477/job/16334181544#step:7:18)
   |
[49](https://github.com/mmtk/mmtk-core/actions/runs/6021389477/job/16334181544#step:7:50) |         #[allow(clippy::cast_ref_to_mut)]
   |                 ^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `invalid_reference_casting`
   |
   = note: `-D renamed-and-removed-lints` implied by `-D warnings`
k-sareen commented 1 year ago

https://github.com/rust-lang/rust/issues/83085#issuecomment-1694191299

qinsoon commented 1 year ago

Disabling incremental build can work around this issue: https://github.com/mmtk/mmtk-core/pull/938.