Repository navigation
cannot create local mono-item for DefId #73537
Copy link
Copy link
Closed
Labels
A-codegenArea: Code generationArea: Code generationC-bugCategory: This is a bug.Category: This is a bug.E-needs-mcveCall for participation: This issue has a repro, but needs a Minimal Complete and Verifiable ExampleCall for participation: This issue has a repro, but needs a Minimal Complete and Verifiable ExampleE-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.Call for participation: An issue has been fixed and does not reproduce, but no test has been added.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️I-monomorphizationIssue: An error at monomorphization time.Issue: An error at monomorphization time.P-mediumMedium priorityMedium priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
Branch ice of the Amadeus repo triggers an ICE. The ICE can be avoided by adding #[inline(always)] to the function identified in the error message.
git clone https://github.com/constellation-rs/amadeus.git
cd amadeus
git checkout ice
cargo +nightly-2020-06-10 test --features "aws"Meta
With nightly-2019-10-15 two functions triggered this (see the most recent commit on the ice branch). With nightly-2020-06-10 only one triggers it. My guess is inlining heuristics or similar have changed, making one of the functions inline thus avoiding triggering the ICE?
Error output
error: internal compiler error: src/librustc_mir/monomorphize/collector.rs:766: cannot create local mono-item for DefId(112:77 ~ amadeus_aws[d447]::cloudfront[0]::{{impl}}[2]::from_line[0])
Backtrace
$ RUST_BACKTRACE=1 cargo test --features "aws"
Compiling amadeus v0.2.0 (/Users/alecmocatta/Documents/deploy/amadeus)
error: internal compiler error: src/librustc_mir/monomorphize/collector.rs:766: cannot create local mono-item for DefId(112:77 ~ amadeus_aws[d447]::cloudfront[0]::{{impl}}[2]::from_line[0])
thread 'rustc' panicked at 'Box<Any>', src/librustc_errors/lib.rs:907:9
stack backtrace:
0: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
1: core::fmt::write
2: std::io::Write::write_fmt
3: std::panicking::default_hook::{{closure}}
4: std::panicking::default_hook
5: rustc_driver::report_ice
6: std::panicking::rust_panic_with_hook
7: std::panicking::begin_panic
8: rustc_errors::HandlerInner::bug
9: rustc_errors::Handler::bug
10: rustc_middle::util::bug::opt_span_bug_fmt::{{closure}}
11: rustc_middle::ty::context::tls::with_opt::{{closure}}
12: rustc_middle::ty::context::tls::with_opt
13: rustc_middle::util::bug::opt_span_bug_fmt
14: rustc_middle::util::bug::bug_fmt
15: rustc_mir::monomorphize::collector::should_monomorphize_locally
16: <rustc_mir::monomorphize::collector::MirNeighborCollector as rustc_middle::mir::visit::Visitor>::visit_terminator_kind
17: rustc_mir::monomorphize::collector::collect_neighbours
18: rustc_data_structures::stack::ensure_sufficient_stack
19: rustc_mir::monomorphize::collector::collect_items_rec
20: rustc_mir::monomorphize::collector::collect_items_rec
21: rustc_mir::monomorphize::collector::collect_items_rec
22: rustc_mir::monomorphize::collector::collect_items_rec
23: rustc_mir::monomorphize::collector::collect_items_rec
24: rustc_mir::monomorphize::collector::collect_items_rec
25: rustc_mir::monomorphize::collector::collect_items_rec
26: rustc_mir::monomorphize::collector::collect_items_rec
27: rustc_mir::monomorphize::collector::collect_items_rec
28: rustc_mir::monomorphize::collector::collect_items_rec
29: rustc_mir::monomorphize::collector::collect_items_rec
30: rustc_mir::monomorphize::collector::collect_items_rec
31: rustc_mir::monomorphize::collector::collect_items_rec
32: rustc_mir::monomorphize::collector::collect_items_rec
33: rustc_mir::monomorphize::collector::collect_items_rec
34: rustc_mir::monomorphize::collector::collect_items_rec
35: rustc_mir::monomorphize::collector::collect_items_rec
36: rustc_mir::monomorphize::collector::collect_items_rec
37: rustc_mir::monomorphize::collector::collect_items_rec
38: rustc_mir::monomorphize::collector::collect_items_rec
39: rustc_mir::monomorphize::collector::collect_items_rec
40: rustc_mir::monomorphize::collector::collect_items_rec
41: rustc_mir::monomorphize::collector::collect_items_rec
42: rustc_mir::monomorphize::collector::collect_items_rec
43: rustc_mir::monomorphize::collector::collect_items_rec
44: rustc_mir::monomorphize::collector::collect_items_rec
45: rustc_mir::monomorphize::collector::collect_items_rec
46: rustc_mir::monomorphize::collector::collect_items_rec
47: rustc_mir::monomorphize::collector::collect_items_rec
48: rustc_mir::monomorphize::collector::collect_items_rec
49: rustc_mir::monomorphize::collector::collect_items_rec
50: rustc_mir::monomorphize::collector::collect_items_rec
51: rustc_mir::monomorphize::collector::collect_items_rec
52: rustc_mir::monomorphize::collector::collect_items_rec
53: rustc_mir::monomorphize::collector::collect_items_rec
54: rustc_mir::monomorphize::collector::collect_items_rec
55: rustc_mir::monomorphize::collector::collect_items_rec
56: rustc_mir::monomorphize::collector::collect_items_rec
57: rustc_mir::monomorphize::collector::collect_items_rec
58: rustc_mir::monomorphize::collector::collect_items_rec
59: rustc_mir::monomorphize::collector::collect_items_rec
60: rustc_mir::monomorphize::collector::collect_items_rec
61: rustc_mir::monomorphize::collector::collect_items_rec
62: rustc_mir::monomorphize::collector::collect_items_rec
63: rustc_mir::monomorphize::collector::collect_items_rec
64: rustc_mir::monomorphize::collector::collect_items_rec
65: rustc_mir::monomorphize::collector::collect_items_rec
66: rustc_mir::monomorphize::collector::collect_items_rec
67: rustc_mir::monomorphize::collector::collect_items_rec
68: rustc_mir::monomorphize::collector::collect_items_rec
69: rustc_mir::monomorphize::collector::collect_items_rec
70: rustc_mir::monomorphize::collector::collect_items_rec
71: rustc_mir::monomorphize::collector::collect_items_rec
72: rustc_mir::monomorphize::collector::collect_items_rec
73: rustc_mir::monomorphize::collector::collect_items_rec
74: rustc_mir::monomorphize::collector::collect_items_rec
75: rustc_mir::monomorphize::collector::collect_items_rec
76: rustc_mir::monomorphize::collector::collect_items_rec
77: rustc_mir::monomorphize::collector::collect_items_rec
78: rustc_mir::monomorphize::collector::collect_items_rec
79: rustc_mir::monomorphize::collector::collect_items_rec
80: rustc_mir::monomorphize::collector::collect_items_rec
81: rustc_mir::monomorphize::collector::collect_items_rec
82: rustc_mir::monomorphize::collector::collect_items_rec
83: rustc_mir::monomorphize::collector::collect_items_rec
84: rustc_mir::monomorphize::collector::collect_items_rec
85: rustc_mir::monomorphize::collector::collect_items_rec
86: rustc_mir::monomorphize::collector::collect_items_rec
87: rustc_mir::monomorphize::collector::collect_items_rec
88: rustc_mir::monomorphize::collector::collect_items_rec
89: rustc_mir::monomorphize::collector::collect_items_rec
90: rustc_mir::monomorphize::collector::collect_items_rec
91: rustc_mir::monomorphize::collector::collect_items_rec
92: rustc_mir::monomorphize::collector::collect_items_rec
93: rustc_mir::monomorphize::collector::collect_items_rec
94: rustc_mir::monomorphize::collector::collect_items_rec
95: rustc_mir::monomorphize::collector::collect_items_rec
96: rustc_mir::monomorphize::collector::collect_items_rec
97: rustc_mir::monomorphize::collector::collect_items_rec
98: rustc_mir::monomorphize::collector::collect_items_rec
99: rustc_mir::monomorphize::collector::collect_items_rec
100: rustc_mir::monomorphize::collector::collect_items_rec
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports
note: rustc 1.46.0-nightly (feb3536eb 2020-06-09) running on x86_64-apple-darwin
note: compiler flags: -C embed-bitcode=no -C debuginfo=2 -C incremental -C target-cpu=native
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
#0 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
error: aborting due to previous error
error: could not compile `amadeus`.
To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: internal compiler error: src/librustc_mir/monomorphize/collector.rs:766: cannot create local mono-item for DefId(112:77 ~ amadeus_aws[d447]::cloudfront[0]::{{impl}}[2]::from_line[0])
thread 'rustc' panicked at 'Box<Any>', src/librustc_errors/lib.rs:907:9
stack backtrace:
0: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
1: core::fmt::write
2: std::io::Write::write_fmt
3: std::panicking::default_hook::{{closure}}
4: std::panicking::default_hook
5: rustc_driver::report_ice
6: std::panicking::rust_panic_with_hook
7: std::panicking::begin_panic
8: rustc_errors::HandlerInner::bug
9: rustc_errors::Handler::bug
10: rustc_middle::util::bug::opt_span_bug_fmt::{{closure}}
11: rustc_middle::ty::context::tls::with_opt::{{closure}}
12: rustc_middle::ty::context::tls::with_opt
13: rustc_middle::util::bug::opt_span_bug_fmt
14: rustc_middle::util::bug::bug_fmt
15: rustc_mir::monomorphize::collector::should_monomorphize_locally
16: <rustc_mir::monomorphize::collector::MirNeighborCollector as rustc_middle::mir::visit::Visitor>::visit_terminator_kind
17: rustc_mir::monomorphize::collector::collect_neighbours
18: rustc_data_structures::stack::ensure_sufficient_stack
19: rustc_mir::monomorphize::collector::collect_items_rec
20: rustc_mir::monomorphize::collector::collect_items_rec
21: rustc_mir::monomorphize::collector::collect_items_rec
22: rustc_mir::monomorphize::collector::collect_items_rec
23: rustc_mir::monomorphize::collector::collect_items_rec
24: rustc_mir::monomorphize::collector::collect_items_rec
25: rustc_mir::monomorphize::collector::collect_items_rec
26: rustc_mir::monomorphize::collector::collect_items_rec
27: rustc_mir::monomorphize::collector::collect_items_rec
28: rustc_mir::monomorphize::collector::collect_items_rec
29: rustc_mir::monomorphize::collector::collect_items_rec
30: rustc_mir::monomorphize::collector::collect_items_rec
31: rustc_mir::monomorphize::collector::collect_items_rec
32: rustc_mir::monomorphize::collector::collect_items_rec
33: rustc_mir::monomorphize::collector::collect_items_rec
34: rustc_mir::monomorphize::collector::collect_items_rec
35: rustc_mir::monomorphize::collector::collect_items_rec
36: rustc_mir::monomorphize::collector::collect_items_rec
37: rustc_mir::monomorphize::collector::collect_items_rec
38: rustc_mir::monomorphize::collector::collect_items_rec
39: rustc_mir::monomorphize::collector::collect_items_rec
40: rustc_mir::monomorphize::collector::collect_items_rec
41: rustc_mir::monomorphize::collector::collect_items_rec
42: rustc_mir::monomorphize::collector::collect_items_rec
43: rustc_mir::monomorphize::collector::collect_items_rec
44: rustc_mir::monomorphize::collector::collect_items_rec
45: rustc_mir::monomorphize::collector::collect_items_rec
46: rustc_mir::monomorphize::collector::collect_items_rec
47: rustc_mir::monomorphize::collector::collect_items_rec
48: rustc_mir::monomorphize::collector::collect_items_rec
49: rustc_mir::monomorphize::collector::collect_items_rec
50: rustc_mir::monomorphize::collector::collect_items_rec
51: rustc_mir::monomorphize::collector::collect_items_rec
52: rustc_mir::monomorphize::collector::collect_items_rec
53: rustc_mir::monomorphize::collector::collect_items_rec
54: rustc_mir::monomorphize::collector::collect_items_rec
55: rustc_mir::monomorphize::collector::collect_items_rec
56: rustc_mir::monomorphize::collector::collect_items_rec
57: rustc_mir::monomorphize::collector::collect_items_rec
58: rustc_mir::monomorphize::collector::collect_items_rec
59: rustc_mir::monomorphize::collector::collect_items_rec
60: rustc_mir::monomorphize::collector::collect_items_rec
61: rustc_mir::monomorphize::collector::collect_items_rec
62: rustc_mir::monomorphize::collector::collect_items_rec
63: rustc_mir::monomorphize::collector::collect_items_rec
64: rustc_mir::monomorphize::collector::collect_items_rec
65: rustc_mir::monomorphize::collector::collect_items_rec
66: rustc_mir::monomorphize::collector::collect_items_rec
67: rustc_mir::monomorphize::collector::collect_items_rec
68: rustc_mir::monomorphize::collector::collect_items_rec
69: rustc_mir::monomorphize::collector::collect_items_rec
70: rustc_mir::monomorphize::collector::collect_items_rec
71: rustc_mir::monomorphize::collector::collect_items_rec
72: rustc_mir::monomorphize::collector::collect_items_rec
73: rustc_mir::monomorphize::collector::collect_items_rec
74: rustc_mir::monomorphize::collector::collect_items_rec
75: rustc_mir::monomorphize::collector::collect_items_rec
76: rustc_mir::monomorphize::collector::collect_items_rec
77: rustc_mir::monomorphize::collector::collect_items_rec
78: rustc_mir::monomorphize::collector::collect_items_rec
79: rustc_mir::monomorphize::collector::collect_items_rec
80: rustc_mir::monomorphize::collector::collect_items_rec
81: rustc_mir::monomorphize::collector::collect_items_rec
82: rustc_mir::monomorphize::collector::collect_items_rec
83: rustc_mir::monomorphize::collector::collect_items_rec
84: rustc_mir::monomorphize::collector::collect_items_rec
85: rustc_mir::monomorphize::collector::collect_items_rec
86: rustc_mir::monomorphize::collector::collect_items_rec
87: rustc_mir::monomorphize::collector::collect_items_rec
88: rustc_mir::monomorphize::collector::collect_items_rec
89: rustc_mir::monomorphize::collector::collect_items_rec
90: rustc_mir::monomorphize::collector::collect_items_rec
91: rustc_mir::monomorphize::collector::collect_items_rec
92: rustc_mir::monomorphize::collector::collect_items_rec
93: rustc_mir::monomorphize::collector::collect_items_rec
94: rustc_mir::monomorphize::collector::collect_items_rec
95: rustc_mir::monomorphize::collector::collect_items_rec
96: rustc_mir::monomorphize::collector::collect_items_rec
97: rustc_mir::monomorphize::collector::collect_items_rec
98: rustc_mir::monomorphize::collector::collect_items_rec
99: rustc_mir::monomorphize::collector::collect_items_rec
100: rustc_mir::monomorphize::collector::collect_items_rec
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports
note: rustc 1.46.0-nightly (feb3536eb 2020-06-09) running on x86_64-apple-darwin
note: compiler flags: -C embed-bitcode=no -C debuginfo=2 -C incremental -C target-cpu=native
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
#0 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
error: aborting due to previous error
Metadata
Metadata
Assignees
Labels
A-codegenArea: Code generationArea: Code generationC-bugCategory: This is a bug.Category: This is a bug.E-needs-mcveCall for participation: This issue has a repro, but needs a Minimal Complete and Verifiable ExampleCall for participation: This issue has a repro, but needs a Minimal Complete and Verifiable ExampleE-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.Call for participation: An issue has been fixed and does not reproduce, but no test has been added.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️I-monomorphizationIssue: An error at monomorphization time.Issue: An error at monomorphization time.P-mediumMedium priorityMedium priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Activity
LeSeulArtichaut commentedon Jun 20, 2020
Let’s try to find an MCVE.
@rustbot ping cleanup
rustbot commentedon Jun 20, 2020
Hey Cleanup Crew ICE-breakers! This bug has been identified as a good
"Cleanup ICE-breaking candidate". In case it's useful, here are some
instructions for tackling these sorts of bugs. Maybe take a look?
Thanks! <3
cc @AminArria @camelid @chrissimpkins @contrun @DutchGhost @elshize @ethanboxx @h-michael @HallerPatrick @hdhoang @hellow554 @imtsuki @kanru @KarlK90 @LeSeulArtichaut @MAdrianMattocks @matheus-consoli @mental32 @nmccarty @Noah-Kennedy @pard68 @PeytonT @pierreN @Redblueflame @RobbieClarken @RobertoSnap @robjtede @SarthakSingh31 @senden9 @shekohex @sinato @spastorino @turboladen @woshilapin @yerke
spastorino commentedon Jun 24, 2020
Would be nice to find an MCVE and this also seems to be a regression, would be nice to find when this has regressed.
spastorino commentedon Jun 24, 2020
Prioritizing it as
P-criticalfor now to raise awareness until we have a better understanding of this. This was discussed briefly on this Zulip topic.hellow554 commentedon Jun 25, 2020
I was on it, but Amadeus is a massive code base and it's not easy to isolate dependencies (especially because
!needs some improvements in this regards ;) ), but I'll try it again today, to see if there's something.hellow554 commentedon Jun 25, 2020
Okay, so here's some information.
rustc 1.46.0-nightly (a37c32e2d 2020-06-11)cannot build the project, because of:rustc 1.46.0-nightly (f4fbb9311 2020-06-12)will panic with:so, that's a different ICE?
And again starting with
rustc 1.46.0-nightly (2d8bd9b74 2020-06-19)the project will compile just fine, so I guess it has been fixed in the mean time? I'm sure this needs a test, but as said, the codebase is enormous.alecmocatta commentedon Jun 25, 2020
@hellow554 The
could not fully normalize <A as sealed::SimdArray>::TupleICE was fixed by #73257. I didn't notice thedelegateICE myself.You're right that as of
nightly-2020-06-20thecannot create local mono-item for DefIdICE isn't reproducing.As I mentioned I observed two functions triggering it on
2019-10-15, and only one on2020-06-10. Now zero on2020-06-20. Either it was fixed or masked some time in those 10 days.I'll remove the workaround from
masterso I'll notice if any future nightlies re-trigger this and update this issue.Until then, shall I leave this issue open as the ICE might not have been fixed, just masked, or close it as it's no longer reproducable on current nightly?
LeSeulArtichaut commentedon Jun 25, 2020
I think we will need a test for this anyway.
spastorino commentedon Jul 2, 2020
Lowered to
P-medium, priority of adding a test for it :).connorskees commentedon Jul 14, 2020
This one is hard! I've managed to get it down from 50,000 to around 1,200 lines and remove most dependencies (notably,
tokioandfuturesremain), but it's still very difficult to remove the remaining lines.If anyone else wants to try to reduce it further, I've put the repository here:
https://github.com/connorskees/rust-issue-73537
tmiasko commentedon Jul 14, 2020
Looks like the same issue as #69785, which is already minimized. The use of an
existential type in an associated type position, which happens to reference a
function which isn't otherwise externally reachable. The MIR of the function is
incorrectly omitted, despite the fact it might be referenced externally.
oli-obk commentedon Feb 19, 2021
closing as duplicate