-
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-closuresArea: Closures (`|…| { … }`)Area: Closures (`|…| { … }`)C-bugCategory: This is a bug.Category: This is a bug.E-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.F-unboxed_closures`#![feature(unboxed_closures)]``#![feature(unboxed_closures)]`I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️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.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
#![feature(unboxed_closures)]
trait Lt<'a> {
type T;
}
impl<'a> Lt<'a> for () {
type T = ();
}
fn main() {
let v:<() as Lt<'_>>::T = ();
let f:&mut FnMut<(_,),Output=()> = &mut |_:<() as Lt<'_>>::T|{};
f(v);
}
causes panic with message
cannot access a scoped thread local variable without calling `set` first
which is irrelevant to the code. Simply modify link_binary
function in src\librustc_codegen_llvm\back\link.rs to make it panic before return, will then output some result that says
query stack during panic:
end of query stack
error: internal compiler error: broken MIR in DefId(0/0:7 ~ hrtb_fn_parameters[317d]::main[0]) (_7 = &mut (*_2)): bad assignment (&mut dyn std::ops::FnMut(()) = &mut dyn std::ops::FnMut(<() as Lt<'_>>::T)): NoSolution
--> src/test\run-pass\hrtb-fn-parameters.rs:23:5
|
23 | f(v);
|
This is a variation of #53420 aka #29997, but is more serious and we should fix this first to make it at least emit the real error.
The proper fix of this issue, is NOT to make the code above compile; instead, it should give ICE with proper messages instead of something irrelevant so that we ensure we can get useful information from ICEs all the time, and the ICE is to be fixed after #53420 aka #29997.
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-closuresArea: Closures (`|…| { … }`)Area: Closures (`|…| { … }`)C-bugCategory: This is a bug.Category: This is a bug.E-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.F-unboxed_closures`#![feature(unboxed_closures)]``#![feature(unboxed_closures)]`I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️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.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.
Activity
set
first' #53469[-]Compiler unexpected panic when MIRI verification fail in a certain situation[/-][+]ICE with code irrelevant message - cannot access a scoped thread local variable without calling `set` first[/+]earthengine commentedon Aug 31, 2018
New error messages after PR #53624 :
matthewjasper commentedon Sep 2, 2018
Marking with A-NLL since this is an issue with MIR typeck, even though this happens without nll.
pnkfelix commentedon Sep 18, 2018
self-assigning for preliminary investigation
1 remaining item
[-]ICE with code irrelevant message - cannot access a scoped thread local variable without calling `set` first[/-][+]ICE: "broken MIR in DefId" when assigning mismatched closure to `FnMut` [/+]pnkfelix commentedon May 17, 2019
the bug described here should block any hypothetical stabilization of unbox closures, cc: #29625
but since that is an unstable feature, and the bug here seems isolated to people making use of that feature, I'm going to triage this as P-medium for now.
JohnTitor commentedon Oct 7, 2020
Triage: This is no longer ICE with the latest nightly, marking as E-needs-test.
Auto merge of rust-lang#77741 - JohnTitor:add-tests, r=matthewjasper