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

ICE internal error: entered unreachable code visitor.rs #6043

Open
matthiaskrgr opened this issue Jan 25, 2024 · 4 comments
Open

ICE internal error: entered unreachable code visitor.rs #6043

matthiaskrgr opened this issue Jan 25, 2024 · 4 comments
Assignees
Labels
bug Panic, non-idempotency, invalid code, etc.

Comments

@matthiaskrgr
Copy link
Member

trait Trait {
    fn foo(&self) -> u32 { 0 }
}

struct F;

impl Trait for S {
    reuse to_reuse::foo { self }
    reuse <F as Trait>::foo;
}

rustfmt 1.7.0-nightly (7ffc697 2024-01-24)

thread 'main' panicked at src/tools/rustfmt/src/visitor.rs:674:18:
internal error: entered unreachable code
stack backtrace:
   0:     0x7fc73d42be86 - std::backtrace_rs::backtrace::libunwind::trace::h65dcfe0719cb4191
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/../../backtrace/src/backtrace/libunwind.rs:104:5
   1:     0x7fc73d42be86 - std::backtrace_rs::backtrace::trace_unsynchronized::h4bc41f6b71b06b7a
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7fc73d42be86 - std::sys_common::backtrace::_print_fmt::h60c6f19a391ed5dc
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/sys_common/backtrace.rs:68:5
   3:     0x7fc73d42be86 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h1740aea989e54934
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7fc73d47e740 - core::fmt::rt::Argument::fmt::heb4dd44c49f74b16
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/core/src/fmt/rt.rs:142:9
   5:     0x7fc73d47e740 - core::fmt::write::h50d3db56423ee6d9
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/core/src/fmt/mod.rs:1120:17
   6:     0x7fc73d41f84f - std::io::Write::write_fmt::hd452428cb27ad2ee
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/io/mod.rs:1810:15
   7:     0x7fc73d42bc64 - std::sys_common::backtrace::_print::h320a7f6668a2f2da
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/sys_common/backtrace.rs:47:5
   8:     0x7fc73d42bc64 - std::sys_common::backtrace::print::hc3deb3f523c9c62a
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/sys_common/backtrace.rs:34:9
   9:     0x7fc73d42e9f7 - std::panicking::default_hook::{{closure}}::h785f274313249010
  10:     0x7fc73d42e759 - std::panicking::default_hook::haf9862715dd397f9
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/panicking.rs:292:9
  11:     0x7fc73a14c99c - std[bfcaba45ac95563e]::panicking::update_hook::<alloc[8ea4dcc019e99709]::boxed::Box<rustc_driver_impl[385ba20d6b752673]::install_ice_hook::{closure#0}>>::{closure#0}
  12:     0x7fc73d42f146 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hb17665c06c8a6aea
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/alloc/src/boxed.rs:2030:9
  13:     0x7fc73d42f146 - std::panicking::rust_panic_with_hook::h8e4b0da96c90e358
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/panicking.rs:785:13
  14:     0x7fc73d42ee59 - std::panicking::begin_panic_handler::{{closure}}::h1acf90bacec3e9e1
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/panicking.rs:651:13
  15:     0x7fc73d42c386 - std::sys_common::backtrace::__rust_end_short_backtrace::h824689dc556a7ab2
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/sys_common/backtrace.rs:171:18
  16:     0x7fc73d42ebe4 - rust_begin_unwind
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/panicking.rs:647:5
  17:     0x7fc73d47ae45 - core::panicking::panic_fmt::h021009ee6f01eba5
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/core/src/panicking.rs:72:14
  18:     0x7fc73d47af03 - core::panicking::panic::hbf1fe34e079bf0aa
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/core/src/panicking.rs:144:5
  19:     0x55640ce5691a - <rustfmt_nightly[b15dc3e924fa1352]::visitor::FmtVisitor>::visit_assoc_item
  20:     0x55640ce5bef4 - <rustfmt_nightly[b15dc3e924fa1352]::visitor::FmtVisitor>::with_context::<<rustfmt_nightly[b15dc3e924fa1352]::visitor::FmtVisitor>::visit_item::{closure#0}>
  21:     0x55640ce557bb - <rustfmt_nightly[b15dc3e924fa1352]::visitor::FmtVisitor>::visit_item
  22:     0x55640ce38a69 - <rustfmt_nightly[b15dc3e924fa1352]::visitor::FmtVisitor>::visit_items_with_reordering
  23:     0x55640ce597fb - <rustfmt_nightly[b15dc3e924fa1352]::visitor::FmtVisitor>::format_separate_mod
  24:     0x55640ccca232 - <rustfmt_nightly[b15dc3e924fa1352]::Session<std[bfcaba45ac95563e]::io::stdio::Stdout>>::format_input_inner::{closure#0}
  25:     0x55640cce0477 - rustfmt[4f1f2b051c0c3a3e]::format_and_emit_report::<std[bfcaba45ac95563e]::io::stdio::Stdout>
  26:     0x55640ccdec44 - rustfmt[4f1f2b051c0c3a3e]::execute
  27:     0x55640ccd9d14 - rustfmt[4f1f2b051c0c3a3e]::main
  28:     0x55640ccc3bf3 - std[bfcaba45ac95563e]::sys_common::backtrace::__rust_begin_short_backtrace::<fn(), ()>
  29:     0x55640ccc5de9 - std[bfcaba45ac95563e]::rt::lang_start::<()>::{closure#0}
  30:     0x7fc73d40fff1 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h389c4eb12d80bd7a
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/core/src/ops/function.rs:284:13
  31:     0x7fc73d40fff1 - std::panicking::try::do_call::h52e77b4ed8af2089
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/panicking.rs:554:40
  32:     0x7fc73d40fff1 - std::panicking::try::hb5f9ac1d853ae913
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/panicking.rs:518:19
  33:     0x7fc73d40fff1 - std::panic::catch_unwind::h8a97a2bd6b461080
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/panic.rs:142:14
  34:     0x7fc73d40fff1 - std::rt::lang_start_internal::{{closure}}::h69577ea4d6906c00
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/rt.rs:148:48
  35:     0x7fc73d40fff1 - std::panicking::try::do_call::hb02fe2faabc7bb65
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/panicking.rs:554:40
  36:     0x7fc73d40fff1 - std::panicking::try::h0237f38e141ac74e
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/panicking.rs:518:19
  37:     0x7fc73d40fff1 - std::panic::catch_unwind::hc1b6eb273118c749
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/panic.rs:142:14
  38:     0x7fc73d40fff1 - std::rt::lang_start_internal::h6acc28113b76b5ad
                               at /rustc/5bd5d214effd494f4bafb29b3a7a2f6c2070ca5c/library/std/src/rt.rs:148:20
  39:     0x55640cce16a5 - main
  40:     0x7fc737158cd0 - <unknown>
  41:     0x7fc737158d8a - __libc_start_main
  42:     0x55640ccb3189 - <unknown>
  43:                0x0 - <unknown>

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

note: we would appreciate a bug report: https://github.com/rust-lang/rustfmt/issues/new?labels=bug

note: please attach the file at `/home/matthias/vcs/github/glacier2/fixed/rustc-ice-2024-01-25T17_36_49-1858855.txt` to your bug report

query stack during panic:
end of query stack
@ytmimi
Copy link
Contributor

ytmimi commented Jan 25, 2024

@matthiaskrgr what is reuse?

@matthiaskrgr
Copy link
Member Author

@ytmimi
Copy link
Contributor

ytmimi commented Jan 25, 2024

Yeah, I think you're right. I'm pretty sure we don't handle the new ast::AssocItemKind::Delegation variant.

@ytmimi
Copy link
Contributor

ytmimi commented Jan 25, 2024

Pretty sure this is where we hit the panic!:

rustfmt/src/visitor.rs

Lines 632 to 671 in bf96731

match (&ai.kind, visitor_kind) {
(ast::AssocItemKind::Const(..), AssocTraitItem(_)) => {
self.visit_static(&StaticParts::from_trait_item(ai))
}
(ast::AssocItemKind::Const(..), AssocImplItem(_)) => {
self.visit_static(&StaticParts::from_impl_item(ai))
}
(ast::AssocItemKind::Fn(ref fn_kind), _) => {
let ast::Fn {
defaultness,
ref sig,
ref generics,
ref body,
} = **fn_kind;
if let Some(ref body) = body {
let inner_attrs = inner_attributes(&ai.attrs);
let fn_ctxt = visit::FnCtxt::Assoc(assoc_ctxt);
self.visit_fn(
visit::FnKind::Fn(fn_ctxt, ai.ident, sig, &ai.vis, generics, Some(body)),
&sig.decl,
ai.span,
defaultness,
Some(&inner_attrs),
);
} else {
let indent = self.block_indent;
let rewrite =
self.rewrite_required_fn(indent, ai.ident, sig, &ai.vis, generics, ai.span);
self.push_rewrite(ai.span, rewrite);
}
}
(ast::AssocItemKind::Type(ref ty_alias), _) => {
self.visit_ty_alias_kind(ty_alias, visitor_kind, ai.span);
}
(ast::AssocItemKind::MacCall(ref mac), _) => {
self.visit_mac(mac, Some(ai.ident), MacroPosition::Item);
}
_ => unreachable!(),
}
}

We'll likely need to wait until the next subtree sync before a fix can be released for this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Panic, non-idempotency, invalid code, etc.
Projects
None yet
Development

No branches or pull requests

2 participants