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

Crate using windows crate as dependency fails to build using parallel compilation #83446

Closed
rylev opened this issue Mar 24, 2021 · 1 comment
Closed
Labels
A-parallel-queries Area: Parallel query execution E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

Comments

@rylev
Copy link
Member

rylev commented Mar 24, 2021

I built a stage2 compiler locally using 5b33de3 with parallel-compiler = true. I then tried compiling this code which uses the windows crate using the following cargo invocation: cargo +stage2 rustc -v -- -Z threads=2. This lead to the following error:

thread 'rustc' panicked at 'forcing query with already existing `DepNode`
- query-key: DefId(0:212365 ~ bindings[1e33]::windows::ui::composition::{impl#366})
- dep-node: hir_attrs(af94ef94cd884db-755310723ccea34d)', 

thread 'rustc' panicked at 'forcing query with already existing `DepNode`
- query-key: DefId(0:212365 ~ bindings[1e33]::windows::ui::composition::{impl#366})
- dep-node: hir_attrs(af94ef94cd884db-755310723ccea34d)', C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\query\plumbing.rs:612:5
stack backtrace:
   0: std::panicking::begin_panic_handler
             at C:\Users\ryanl\Code\rust\library\std\src\panicking.rs:493
   1: std::panicking::begin_panic_fmt
             at C:\Users\ryanl\Code\rust\library\std\src\panicking.rs:435
   2: rustc_query_system::query::plumbing::force_query_with_job<rustc_query_system::query::caches::DefaultCache<rustc_span::def_id::LocalDefId, rustc_middle::hir::AttributeMap>,rustc_query_impl::plumbing::QueryCtxt>
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\query\plumbing.rs:612
   3: rustc_query_system::query::plumbing::try_execute_query
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\query\plumbing.rs:496
   4: rustc_query_system::query::plumbing::get_query_impl<rustc_query_impl::plumbing::QueryCtxt,rustc_query_system::query::caches::DefaultCache<rustc_span::def_id::LocalDefId, rustc_middle::hir::AttributeMap>>
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\query\plumbing.rs:671
   5: rustc_query_system::query::plumbing::get_query<rustc_query_impl::queries::hir_attrs,rustc_query_impl::plumbing::QueryCtxt>
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\query\plumbing.rs:782
   6: rustc_middle::ty::query::TyCtxtAt::hir_attrs
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\query\mod.rs:205
   7: rustc_middle::ty::context::TyCtxt::hir_attrs
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\query\mod.rs:186
   8: rustc_middle::hir::map::Map::attrs
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\hir\map\mod.rs:848
   9: rustc_interface::proc_macro_decls::{{impl}}::visit_item
             at C:\Users\ryanl\Code\rust\compiler\rustc_interface\src\proc_macro_decls.rs:28
  10: rustc_hir::hir::Crate::visit_all_item_likes<rustc_interface::proc_macro_decls::Finder>
             at C:\Users\ryanl\Code\rust\compiler\rustc_hir\src\hir.rs:717
  11: rustc_interface::proc_macro_decls::proc_macro_decls_static
             at C:\Users\ryanl\Code\rust\compiler\rustc_interface\src\proc_macro_decls.rs:16
  12: rustc_query_system::dep_graph::graph::{{impl}}::with_task_impl::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\dep_graph\graph.rs:277
  13: rustc_middle::dep_graph::{{impl}}::with_deps::{{closure}}::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\dep_graph\mod.rs:76
  14: rustc_middle::ty::context::tls::enter_context::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1726
  15: rustc_rayon_core::tlv::with<closure-0,core::option::Option<rustc_span::def_id::DefId>>
             at C:\Users\ryanl\.cargo\registry\src\github.jparrowsec.cn-1ecc6299db9ec823\rustc-rayon-core-0.3.1\src\tlv.rs:19
  16: rustc_middle::ty::context::tls::set_tlv
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1684
  17: rustc_middle::ty::context::tls::enter_context
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1726
  18: rustc_middle::dep_graph::{{impl}}::with_deps::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\dep_graph\mod.rs:76
  19: rustc_middle::ty::context::tls::with_context::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1754
  20: rustc_middle::ty::context::tls::with_context_opt
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1743
  21: rustc_middle::ty::context::tls::with_context
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1754
  22: rustc_middle::dep_graph::{{impl}}::with_deps<closure-0,core::option::Option<rustc_span::def_id::DefId>>
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\dep_graph\mod.rs:73
  23: rustc_query_system::dep_graph::graph::DepGraph::with_task_impl<rustc_middle::dep_graph::dep_node::DepKind,rustc_query_impl::plumbing::QueryCtxt,rustc_span::def_id::CrateNum,core::option::Option<rustc_span::def_id::DefId>,fn(mut rustc_middle::ich::hcx::Sta
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\dep_graph\graph.rs:277
  24: rustc_query_system::dep_graph::graph::DepGraph::with_task
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\dep_graph\graph.rs:247
  25: rustc_query_system::query::plumbing::force_query_with_job::{{closure}}::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\query\plumbing.rs:634
  26: stacker::maybe_grow
             at C:\Users\ryanl\.cargo\registry\src\github.jparrowsec.cn-1ecc6299db9ec823\stacker-0.1.12\src\lib.rs:55
  27: rustc_data_structures::stack::ensure_sufficient_stack<tuple<core::option::Option<rustc_span::def_id::DefId>, rustc_query_system::dep_graph::graph::DepNodeIndex>,closure-0>
             at C:\Users\ryanl\Code\rust\compiler\rustc_data_structures\src\stack.rs:16
  28: rustc_query_impl::plumbing::{{impl}}::start_query::{{closure}}::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_impl\src\plumbing.rs:169
  29: rustc_middle::ty::context::tls::enter_context::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1726
  30: rustc_rayon_core::tlv::with<closure-0,tuple<core::option::Option<rustc_span::def_id::DefId>, rustc_query_system::dep_graph::graph::DepNodeIndex>>
             at C:\Users\ryanl\.cargo\registry\src\github.jparrowsec.cn-1ecc6299db9ec823\rustc-rayon-core-0.3.1\src\tlv.rs:19
  31: rustc_middle::ty::context::tls::set_tlv
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1684
  32: rustc_middle::ty::context::tls::enter_context
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1726
  33: rustc_query_impl::plumbing::{{impl}}::start_query::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_impl\src\plumbing.rs:168
  34: rustc_middle::ty::context::tls::with_related_context::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1770
  35: rustc_middle::ty::context::tls::with_context::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1754
  36: rustc_middle::ty::context::tls::with_context_opt
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1743
  37: rustc_middle::ty::context::tls::with_context
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1754
  38: rustc_middle::ty::context::tls::with_related_context
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1767
  39: rustc_query_impl::plumbing::{{impl}}::start_query
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_impl\src\plumbing.rs:157
  40: rustc_query_system::query::plumbing::force_query_with_job::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\query\plumbing.rs:624
  41: rustc_query_system::query::plumbing::with_diagnostics
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\query\plumbing.rs:328
  42: rustc_query_system::query::plumbing::force_query_with_job<rustc_query_system::query::caches::DefaultCache<rustc_span::def_id::CrateNum, core::option::Option<rustc_span::def_id::DefId>>,rustc_query_impl::plumbing::QueryCtxt>
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\query\plumbing.rs:623
  43: rustc_query_system::query::plumbing::try_execute_query
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\query\plumbing.rs:496
  44: rustc_query_system::query::plumbing::get_query_impl<rustc_query_impl::plumbing::QueryCtxt,rustc_query_system::query::caches::DefaultCache<rustc_span::def_id::CrateNum, core::option::Option<rustc_span::def_id::DefId>>>
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\query\plumbing.rs:671
  45: rustc_query_system::query::plumbing::get_query<rustc_query_impl::queries::proc_macro_decls_static,rustc_query_impl::plumbing::QueryCtxt>
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\query\plumbing.rs:782
  46: rustc_middle::ty::query::TyCtxtAt::proc_macro_decls_static
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\query\mod.rs:205
  47: rustc_middle::ty::context::TyCtxt::proc_macro_decls_static
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\query\mod.rs:186
  48: rustc_interface::proc_macro_decls::find
             at C:\Users\ryanl\Code\rust\compiler\rustc_interface\src\proc_macro_decls.rs:9
  49: rustc_interface::passes::analysis::{{closure}}::{{closure}}::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_interface\src\passes.rs:860
  50: rustc_data_structures::profiling::VerboseTimingGuard::run
             at C:\Users\ryanl\Code\rust\compiler\rustc_data_structures\src\profiling.rs:573
  51: rustc_session::session::Session::time<core::option::Option<rustc_span::def_id::DefId>,closure-3>
             at C:\Users\ryanl\Code\rust\compiler\rustc_session\src\utils.rs:10
  52: std::panicking::try::do_call
             at C:\Users\ryanl\Code\rust\library\std\src\panicking.rs:379
  53: std::panicking::try<tuple<>,std::panic::AssertUnwindSafe<closure-0>>
             at C:\Users\ryanl\Code\rust\library\std\src\panicking.rs:343
  54: std::panic::catch_unwind<std::panic::AssertUnwindSafe<closure-0>,tuple<>>
             at C:\Users\ryanl\Code\rust\library\std\src\panic.rs:431
  55: rustc_rayon_core::unwind::halt_unwinding
             at C:\Users\ryanl\.cargo\registry\src\github.jparrowsec.cn-1ecc6299db9ec823\rustc-rayon-core-0.3.1\src\unwind.rs:17
  56: rustc_rayon_core::scope::ScopeBase::execute_job_closure
             at C:\Users\ryanl\.cargo\registry\src\github.jparrowsec.cn-1ecc6299db9ec823\rustc-rayon-core-0.3.1\src\scope\mod.rs:569
  57: rustc_rayon_core::scope::ScopeBase::complete<closure-0,tuple<>>
             at C:\Users\ryanl\.cargo\registry\src\github.jparrowsec.cn-1ecc6299db9ec823\rustc-rayon-core-0.3.1\src\scope\mod.rs:542
  58: rustc_rayon_core::scope::scope::{{closure}}
             at C:\Users\ryanl\.cargo\registry\src\github.jparrowsec.cn-1ecc6299db9ec823\rustc-rayon-core-0.3.1\src\scope\mod.rs:298
  59: rustc_rayon_core::registry::in_worker<closure-0,tuple<>>
             at C:\Users\ryanl\.cargo\registry\src\github.jparrowsec.cn-1ecc6299db9ec823\rustc-rayon-core-0.3.1\src\registry.rs:847
  60: rustc_rayon_core::scope::scope
             at C:\Users\ryanl\.cargo\registry\src\github.jparrowsec.cn-1ecc6299db9ec823\rustc-rayon-core-0.3.1\src\scope\mod.rs:296
  61: rustc_interface::passes::analysis::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_interface\src\passes.rs:908
  62: rustc_data_structures::profiling::VerboseTimingGuard::run
             at C:\Users\ryanl\Code\rust\compiler\rustc_data_structures\src\profiling.rs:573
  63: rustc_session::session::Session::time<tuple<>,closure-0>
             at C:\Users\ryanl\Code\rust\compiler\rustc_session\src\utils.rs:10
  64: rustc_interface::passes::analysis
             at C:\Users\ryanl\Code\rust\compiler\rustc_interface\src\passes.rs:830
  65: rustc_query_system::dep_graph::graph::{{impl}}::with_task_impl::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\dep_graph\graph.rs:277
  66: rustc_middle::dep_graph::{{impl}}::with_deps::{{closure}}::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\dep_graph\mod.rs:76
  67: rustc_middle::ty::context::tls::enter_context::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1726
  68: rustc_rayon_core::tlv::with<closure-0,core::result::Result<tuple<>, rustc_errors::ErrorReported>>
             at C:\Users\ryanl\.cargo\registry\src\github.jparrowsec.cn-1ecc6299db9ec823\rustc-rayon-core-0.3.1\src\tlv.rs:19
  69: rustc_middle::ty::context::tls::set_tlv
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1684
  70: rustc_middle::ty::context::tls::enter_context
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1726
  71: rustc_middle::dep_graph::{{impl}}::with_deps::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\dep_graph\mod.rs:76
  72: rustc_middle::ty::context::tls::with_context::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1754
  73: rustc_middle::ty::context::tls::with_context_opt
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1743
  74: rustc_middle::ty::context::tls::with_context
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1754
  75: rustc_middle::dep_graph::{{impl}}::with_deps<closure-0,bool>
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\dep_graph\mod.rs:73
  76: rustc_query_system::dep_graph::graph::DepGraph::with_task_impl<rustc_middle::dep_graph::dep_node::DepKind,rustc_query_impl::plumbing::QueryCtxt,rustc_span::def_id::CrateNum,rustc_target::spec::PanicStrategy,fn(mut rustc_middle::ich::hcx::StableHashingCont
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\dep_graph\graph.rs:277
  77: rustc_query_system::dep_graph::graph::DepGraph::with_eval_always_task<rustc_middle::dep_graph::dep_node::DepKind,rustc_query_impl::plumbing::QueryCtxt,rustc_span::def_id::CrateNum,bool,fn(mut rustc_middle::ich::hcx::StableHashingContext*, bool*) -> core::
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\dep_graph\graph.rs:421
  78: rustc_query_system::query::plumbing::force_query_with_job::{{closure}}::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_system\src\query\plumbing.rs:626
  79: stacker::maybe_grow
             at C:\Users\ryanl\.cargo\registry\src\github.jparrowsec.cn-1ecc6299db9ec823\stacker-0.1.12\src\lib.rs:55
  80: rustc_data_structures::stack::ensure_sufficient_stack<tuple<core::result::Result<tuple<>, rustc_errors::ErrorReported>, rustc_query_system::dep_graph::graph::DepNodeIndex>,closure-0>
             at C:\Users\ryanl\Code\rust\compiler\rustc_data_structures\src\stack.rs:16
  81: rustc_query_impl::plumbing::{{impl}}::start_query::{{closure}}::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_query_impl\src\plumbing.rs:169
  82: rustc_middle::ty::context::tls::enter_context::{{closure}}
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1726
  83: rustc_rayon_core::tlv::with<closure-0,tuple<core::result::Result<tuple<>, rustc_errors::ErrorReported>, rustc_query_system::dep_graph::graph::DepNodeIndex>>
             at C:\Users\ryanl\.cargo\registry\src\github.jparrowsec.cn-1ecc6299db9ec823\rustc-rayon-core-0.3.1\src\tlv.rs:19
  84: rustc_middle::ty::context::tls::set_tlv
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1684
  85: rustc_middle::ty::context::tls::enter_context
             at C:\Users\ryanl\Code\rust\compiler\rustc_middle\src\ty\context.rs:1726
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose 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/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.53.0-dev running on x86_64-pc-windows-msvc

note: compiler flags: -Z threads=2 -C embed-bitcode=no -C debuginfo=2 -C incremental --crate-type lib

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

query stack during panic:
#0 [proc_macro_decls_static] looking up the derive registrar for a crate
#1 [analysis] running analysis passes on this crate
end of query stack
error: could not compile `bindings`

This panic message is similar to the error message in #82991 which also surfaces when cross compiling this code with a non-parallel compiler.

This happens when running with -Z threads=N where N >= 2 (well only tested with 2 and 4).

@rylev rylev added I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ A-parallel-queries Area: Parallel query execution E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example labels Mar 24, 2021
@apiraino
Copy link
Contributor

Perhaps a duplicate #83085. Closing as duplicate in favor of that (which has a patch for fixing the issue in progress)

@apiraino apiraino closed this as not planned Won't fix, can't repro, duplicate, stale Dec 22, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-parallel-queries Area: Parallel query execution E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
Projects
None yet
Development

No branches or pull requests

2 participants