-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Closed
Labels
A-MIRArea: Mid-level IR (MIR) - https://blog.rust-lang.org/2016/04/19/MIR.htmlArea: Mid-level IR (MIR) - https://blog.rust-lang.org/2016/04/19/MIR.htmlA-mir-optArea: MIR optimizationsArea: MIR optimizationsC-bugCategory: This is a bug.Category: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-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.glacierICE tracked in rust-lang/glacier.ICE tracked in rust-lang/glacier.requires-nightlyThis issue requires a nightly compiler in some way.This issue requires a nightly compiler in some way.
Description
RUST_BACKTRACE=1 rustc ui/associated-type-bounds/union-bounds.rs -Zmir-opt-level=2
error: internal compiler error: mutable allocation in constant
thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:346:17
stack backtrace:
0: backtrace::backtrace::libunwind::trace
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/libunwind.rs:88
1: backtrace::backtrace::trace_unsynchronized
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/mod.rs:66
2: std::sys_common::backtrace::_print_fmt
at src/libstd/sys_common/backtrace.rs:77
3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
at src/libstd/sys_common/backtrace.rs:59
4: core::fmt::write
at src/libcore/fmt/mod.rs:1057
5: std::io::Write::write_fmt
at src/libstd/io/mod.rs:1426
6: std::sys_common::backtrace::_print
at src/libstd/sys_common/backtrace.rs:62
7: std::sys_common::backtrace::print
at src/libstd/sys_common/backtrace.rs:49
8: std::panicking::default_hook::{{closure}}
at src/libstd/panicking.rs:204
9: std::panicking::default_hook
at src/libstd/panicking.rs:224
10: rustc_driver::report_ice
11: std::panicking::rust_panic_with_hook
at src/libstd/panicking.rs:476
12: std::panicking::begin_panic
13: <rustc_errors::HandlerInner as core::ops::drop::Drop>::drop
14: core::ptr::real_drop_in_place
15: core::ptr::real_drop_in_place
16: core::ptr::real_drop_in_place
17: rustc_interface::interface::run_compiler_in_existing_thread_pool
18: scoped_tls::ScopedKey<T>::set
19: syntax::with_globals
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/blob/master/CONTRIBUTING.md#bug-reports
note: rustc 1.42.0-nightly (3291ae339 2020-01-15) running on x86_64-unknown-linux-gnu
note: compiler flags: -Z mir-opt-level=2
query stack during panic:
end of query stack
somewhat reduced:
#![feature(associated_type_bounds)]
#![feature(untagged_unions)]
#![allow(unused_assignments)]
trait Tr1: Copy { type As1: Copy; }
trait Tr4<'a>: Copy { type As4: Copy; }
impl Tr1 for &str { type As1 = bool; }
impl Tr1 for () { type As1 = (usize,); }
impl<'a> Tr4<'a> for (usize,) { type As4 = u8; }
union Un4<'x1, T: Tr1<As1: for<'l> Tr4<'l>>> {
f1: &'x1 <T::As1 as Tr4<'x1>>::As4,
}
fn main() {
let f1 = (1,);
let _ = Un4::<()> { f1: &f1.0 };
}
rustc @ 9fe05e9
Metadata
Metadata
Assignees
Labels
A-MIRArea: Mid-level IR (MIR) - https://blog.rust-lang.org/2016/04/19/MIR.htmlArea: Mid-level IR (MIR) - https://blog.rust-lang.org/2016/04/19/MIR.htmlA-mir-optArea: MIR optimizationsArea: MIR optimizationsC-bugCategory: This is a bug.Category: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-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.glacierICE tracked in rust-lang/glacier.ICE tracked in rust-lang/glacier.requires-nightlyThis issue requires a nightly compiler in some way.This issue requires a nightly compiler in some way.
Type
Projects
Milestone
Relationships
Development
Select code repository
Activity
matthiaskrgr commentedon Jan 16, 2020
src/test/ui/consts/dangling_raw_ptr.rs
is another example:matthiaskrgr commentedon Feb 1, 2020
While the original example no longer panics for me on
rustc 1.42.0-nightly (cd1ef390e 2020-01-31)
, the dangling_raw_ptr one still does.jonas-schievink commentedon Apr 6, 2020
Caused/Uncovered by the copy propagation pass
jonas-schievink commentedon Apr 6, 2020
It turns the constant into this, so probably the issue is that it removes the storage markers:
(aside: the pass didn't actually optimize anything here, it just removed the markers, which is not very helpful)
RalfJung commentedon Apr 14, 2020
@matthiaskrgr
this example
Just looks like wrong code to me, the pointer is dangling as it refers to a local that does out of scope. I don't see a bug.
Since it seems like the example in the OP got fixed, could you describe expected and actual behavior with latest rustc to explain what the bug is that we are tracking here?
Cc @rust-lang/wg-const-eval
JohnTitor commentedon May 17, 2020
I think the ICE from this snippet (#68296 (comment)) has been fixed by #71665.
RalfJung commentedon May 17, 2020
Yeah that PR entirely removes the
delay_span_bug
in question, so let's close this.matthiaskrgr commentedon May 17, 2020
Can confirm that all the snippets mentioned no longer ICE with
-Zmir-opt-level=2
👍