Fail build with MIRAI
zakrush opened this issue · comments
Issue
When building Get punic.
Compiling tracing-core v0.1.17
thread 'rustc' panicked at 'internal error: entered unreachable code', checker/src/type_visitor.rs:864:25
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.
Steps to Reproduce
Run build as described to README.md
Expected Behavior
RUN with RUST_BACKTRACE=1
thread 'rustc' panicked at 'internal error: entered unreachable code', checker/src/type_visitor.rs:864:25
stack backtrace:
0: rust_begin_unwind
at /rustc/b70888601af92f6cdc0364abab3446e418b91d36/library/std/src/panicking.rs:515:5
1: core::panicking::panic_fmt
at /rustc/b70888601af92f6cdc0364abab3446e418b91d36/library/core/src/panicking.rs:92:14
2: core::panicking::panic
at /rustc/b70888601af92f6cdc0364abab3446e418b91d36/library/core/src/panicking.rs:50:5
3: mirai::type_visitor::TypeVisitor::get_type_for_projection_element::{{closure}}
4: core::iter::traits::iterator::Iterator::fold
at /rustc/b70888601af92f6cdc0364abab3446e418b91d36/library/core/src/iter/traits/iterator.rs:2174:21
5: mirai::type_visitor::TypeVisitor::get_type_for_projection_element
at /home/dm/Job/Dir/tools/MIRAI/checker/src/type_visitor.rs:852:9
6: mirai::type_visitor::TypeVisitor::get_rustc_place_type::{{closure}}
at /home/dm/Job/Dir/tools/MIRAI/checker/src/type_visitor.rs:813:13
7: mirai::type_visitor::TypeVisitor::get_rustc_place_type
at /home/dm/Job/Dir/tools/MIRAI/checker/src/type_visitor.rs:805:5
8: mirai::block_visitor::BlockVisitor::visit_address_of
at /home/dm/Job/Dir/tools/MIRAI/checker/src/block_visitor.rs:1664:27
9: mirai::block_visitor::BlockVisitor::visit_rvalue
at /home/dm/Job/Dir/tools/MIRAI/checker/src/block_visitor.rs:1501:17
10: mirai::block_visitor::BlockVisitor::visit_assign
at /home/dm/Job/Dir/tools/MIRAI/checker/src/block_visitor.rs:152:9
11: mirai::block_visitor::BlockVisitor::visit_statement
at /home/dm/Job/Dir/tools/MIRAI/checker/src/block_visitor.rs:116:17
12: mirai::block_visitor::BlockVisitor::visit_basic_block
at /home/dm/Job/Dir/tools/MIRAI/checker/src/block_visitor.rs:88:17
13: mirai::fixed_point_visitor::FixedPointVisitor::visit_basic_block
at /home/dm/Job/Dir/tools/MIRAI/checker/src/fixed_point_visitor.rs:131:9
14: mirai::fixed_point_visitor::FixedPointVisitor::visit_blocks
at /home/dm/Job/Dir/tools/MIRAI/checker/src/fixed_point_visitor.rs:83:21
15: mirai::body_visitor::BodyVisitor::visit_body
at /home/dm/Job/Dir/tools/MIRAI/checker/src/body_visitor.rs:198:9
16: mirai::call_visitor::CallVisitor::create_and_cache_function_summary
at /home/dm/Job/Dir/tools/MIRAI/checker/src/call_visitor.rs:134:17
17: mirai::call_visitor::CallVisitor::get_function_summary
at /home/dm/Job/Dir/tools/MIRAI/checker/src/call_visitor.rs:318:21
18: mirai::call_visitor::CallVisitor::inline_indirectly_called_function
at /home/dm/Job/Dir/tools/MIRAI/checker/src/call_visitor.rs:1233:27
19: mirai::call_visitor::CallVisitor::handled_as_special_function_call
at /home/dm/Job/Dir/tools/MIRAI/checker/src/call_visitor.rs:435:17
20: mirai::block_visitor::BlockVisitor::visit_call
at /home/dm/Job/Dir/tools/MIRAI/checker/src/block_visitor.rs:674:12
21: mirai::block_visitor::BlockVisitor::visit_terminator
at /home/dm/Job/Dir/tools/MIRAI/checker/src/block_visitor.rs:279:18
22: mirai::block_visitor::BlockVisitor::visit_basic_block
at /home/dm/Job/Dir/tools/MIRAI/checker/src/block_visitor.rs:103:13
23: mirai::fixed_point_visitor::FixedPointVisitor::visit_basic_block
at /home/dm/Job/Dir/tools/MIRAI/checker/src/fixed_point_visitor.rs:131:9
24: mirai::fixed_point_visitor::FixedPointVisitor::visit_loop_body
at /home/dm/Job/Dir/tools/MIRAI/checker/src/fixed_point_visitor.rs:219:21
25: mirai::fixed_point_visitor::FixedPointVisitor::compute_fixed_point
at /home/dm/Job/Dir/tools/MIRAI/checker/src/fixed_point_visitor.rs:151:26
26: mirai::fixed_point_visitor::FixedPointVisitor::visit_blocks
at /home/dm/Job/Dir/tools/MIRAI/checker/src/fixed_point_visitor.rs:85:21
27: mirai::body_visitor::BodyVisitor::visit_body
at /home/dm/Job/Dir/tools/MIRAI/checker/src/body_visitor.rs:198:9
28: mirai::call_visitor::CallVisitor::create_and_cache_function_summary
at /home/dm/Job/Dir/tools/MIRAI/checker/src/call_visitor.rs:134:17
29: mirai::call_visitor::CallVisitor::get_function_summary
at /home/dm/Job/Dir/tools/MIRAI/checker/src/call_visitor.rs:318:21
30: mirai::block_visitor::BlockVisitor::visit_call
at /home/dm/Job/Dir/tools/MIRAI/checker/src/block_visitor.rs:677:32
31: mirai::block_visitor::BlockVisitor::visit_terminator
at /home/dm/Job/Dir/tools/MIRAI/checker/src/block_visitor.rs:279:18
32: mirai::block_visitor::BlockVisitor::visit_basic_block
at /home/dm/Job/Dir/tools/MIRAI/checker/src/block_visitor.rs:103:13
33: mirai::fixed_point_visitor::FixedPointVisitor::visit_basic_block
at /home/dm/Job/Dir/tools/MIRAI/checker/src/fixed_point_visitor.rs:131:9
34: mirai::fixed_point_visitor::FixedPointVisitor::visit_blocks
at /home/dm/Job/Dir/tools/MIRAI/checker/src/fixed_point_visitor.rs:83:21
35: mirai::body_visitor::BodyVisitor::visit_body
at /home/dm/Job/Dir/tools/MIRAI/checker/src/body_visitor.rs:198:9
36: mirai::crate_visitor::CrateVisitor::analyze_body::{{closure}}
at /home/dm/Job/Dir/tools/MIRAI/checker/src/crate_visitor.rs:162:23
37: mirai::crate_visitor::CrateVisitor::analyze_body
at /home/dm/Job/Dir/tools/MIRAI/checker/src/crate_visitor.rs:150:5
38: mirai::crate_visitor::CrateVisitor::analyze_some_bodies::{{closure}}
at /home/dm/Job/Dir/tools/MIRAI/checker/src/crate_visitor.rs:108:13
39: mirai::crate_visitor::CrateVisitor::analyze_some_bodies
at /home/dm/Job/Dir/tools/MIRAI/checker/src/crate_visitor.rs:67:5
40: mirai::callbacks::MiraiCallbacks::analyze_with_mirai::{{closure}}
at /home/dm/Job/Dir/tools/MIRAI/checker/src/callbacks.rs:288:9
41: mirai::callbacks::MiraiCallbacks::analyze_with_mirai
at /home/dm/Job/Dir/tools/MIRAI/checker/src/callbacks.rs:245:5
42: <mirai::callbacks::MiraiCallbacks as rustc_driver::Callbacks>::after_analysis::{{closure}}::{{closure}}
at /home/dm/Job/Dir/tools/MIRAI/checker/src/callbacks.rs:128:26
43: rustc_interface::passes::QueryContext::enter::{{closure}}
at /rustc/b70888601af92f6cdc0364abab3446e418b91d36/compiler/rustc_interface/src/passes.rs:780:42
44: rustc_middle::ty::context::tls::enter_context::{{closure}}
at /rustc/b70888601af92f6cdc0364abab3446e418b91d36/compiler/rustc_middle/src/ty/context.rs:1784:50
45: rustc_middle::ty::context::tls::set_tlv
at /rustc/b70888601af92f6cdc0364abab3446e418b91d36/compiler/rustc_middle/src/ty/context.rs:1768:9
46: rustc_middle::ty::context::tls::enter_context
at /rustc/b70888601af92f6cdc0364abab3446e418b91d36/compiler/rustc_middle/src/ty/context.rs:1784:9
47: rustc_interface::passes::QueryContext::enter
at /rustc/b70888601af92f6cdc0364abab3446e418b91d36/compiler/rustc_interface/src/passes.rs:780:9
48: <mirai::callbacks::MiraiCallbacks as rustc_driver::Callbacks>::after_analysis::{{closure}}
at /home/dm/Job/Dir/tools/MIRAI/checker/src/callbacks.rs:124:9
49: <mirai::callbacks::MiraiCallbacks as rustc_driver::Callbacks>::after_analysis
at /home/dm/Job/Dir/tools/MIRAI/checker/src/callbacks.rs:104:5
50: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter
51: rustc_span::with_source_map
52: rustc_interface::interface::create_compiler_and_run
53: scoped_tls::ScopedKey<T>::set
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.56.0-nightly (b70888601 2021-07-28) running on x86_64-unknown-linux-gnu
note: compiler flags: -Z always_encode_mir -C embed-bitcode=no -C debuginfo=2 --crate-type lib
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
end of query stack
error: could not compile `tracing-core`
.
Actual Results
No panic during of build
Environment
Rust version (rustc --version)
rustc --version
rustc 1.56.0-nightly (b70888601 2021-07-28)
I've seen this as well and I'm working my way up to fixing it. Meanwhile, you might be able to avoid running into it if you only do an incremental build. I.e. first build your crate just with rustc, then touch your lib.rs, then build with MIRAI. With any luck, your code won't cover the problematic MIR that causes MIRAI to crash.
BTW. It is hard for to follow your repro instructions since I have no idea where to find "Get punic".
I'm getting panic into private prodict, I can't share it.
cargo build
touch src/lib.rs
RUSTFLAGS="-Z always_encode_mir" RUSTC_WRAPPER=mirai cargo build
didn't help me.
@hermanventer I found how to Reproduce
git clone https://github.com/tokio-rs/tracing.git
git checkout -b tag tracing-subscriber-0.2.17
rustup override set nightly-2021-07-29
RUSTFLAGS="-Z always_encode_mir" RUSTC_WRAPPER=mirai cargo build
I'm getting panic into private prodict, I can't share it.
cargo build touch src/lib.rs RUSTFLAGS="-Z always_encode_mir" RUSTC_WRAPPER=mirai cargo build
didn't help me.
When you do the initial cargo build, you also have to specify RUSTFLAGS="-Z always_encode_mir".
tracing-core now compiles with MIRAI.