Open antiguru opened 7 months ago
At least this is not a recent ICE: it already exists in 1.70.0, which is the oldest version supported by flatcontainer
. From the stacktrace and that the example doesn't build without the bincode
feature, it seems like an issue trying to emit diagnostics for errors encountered during MIR typechecking.
@rustbot claim
I tried minimizing using the following steps:
container_gat_ice
treereduce-rust -s timely/examples/wordcount_flatcontainer.rs --interesting-exit-code 101 -- cargo check --features bincode --example wordcount_flatcontainer
I was hoping it would minimize the file timely/examples/wordcount_flatcontainer.rs
, but treereduce-rust seemed to get stuck forever. This is is the first time I'm using this tool and not sure I'm using it correctly. Any pointers will be appreciated. Maybe @matthiaskrgr can help.
I have only every used treereduce on single files, together with `rustc file.rs' directly, not sure how it would work together with cargo (maybe try cargo-minimize?).
Thanks @matthiaskrgr. Appreciate the help.
cargo-minimize did work, but it being a simpler tool did not reduce in any meaningful way. Nonetheless, this does narrow the options down to only manual minimization which is what I'll try.
It was not easy to minimize but this GAT ICE is quite old, from nightly-2021-09-02
.
trait Container {
type Item<'a>;
}
impl Container for () {
type Item<'a> = ();
}
struct Exchange<C, F> {
_marker: std::marker::PhantomData<(C, F)>,
}
fn exchange<C, F>(_: F) -> Exchange<C, F>
where
C: Container,
for<'a> F: FnMut(&C::Item<'a>),
{
unimplemented!()
}
trait Parallelization<C> {}
impl<C, F> Parallelization<C> for Exchange<C, F> {}
fn unary_frontier<P: Parallelization<()>>(_: P) {}
fn main() {
let exchange = exchange(|_| ());
let _ = || {
unary_frontier(exchange);
};
}
Code
Unfortunately it's nearly impossible for me to figure out where the problem actually happens, so finding a minimal example is tough.
Branch here: https://github.com/antiguru/timely-dataflow/tree/container_gat_ice
Command:
Meta
rustc --version --verbose
:The same error happens on nightly.
Error output