-
Notifications
You must be signed in to change notification settings - Fork 13.4k
ICE: 'assertion failed: bound_list_is_sorted(&bounds.projection_bounds)' #24063
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
Comments
Ah, I should add: it is the partially completed |
The following is smaller and still causes the ICE, but still leaves the other crate untouched. extern crate timely;
use timely::progress::Graph;
use timely::example::stream::Stream;
pub trait Test<G: Graph> {
fn test(&mut self) -> Stream<G, u64>;
}
impl<G: Graph> Test<G> for () {
fn test(&mut self) -> Stream<G, u64> {
}
} The associated snippet in the Cargo.toml is
in case this reveals something incorrect. It occurs to me that the only non-ICEing programs I've written have been part of the I tried creating a simple crate |
Simplifying further (from a repro point of view) the following Cargo.toml snippet also explodes things without requiring mysterious local files from my laptop:
Still in effect on
|
I have some more information for this (and a fix from my point of view, so not blocking): The use timely::communication::Data; So, still an ICE, but the root cause is definitely user error (and Rust not being able to find out why |
I have a fairly minimal change that causes the ICE to happen; the actual crate is quite large and I'm not really sure how to simplify it yet. Note, the ICE happens when you try to build against the crate, not when you build the crate itself. // ICEs with assertion failed: bound_list_is_sorted(&bounds.projection_bounds)
for index in 0..count_map.len() {
while let Some((ref time, delta)) = count_map[index].pop() {
self.frontier[index].update(time, delta);
}
} If you swap in the following roughly equivalent lines of code (or, weirdly, change // no ICE; I would have thought "identical" to the above...
for index in 0..count_map.len() {
while let Some((time, delta)) = count_map[index].pop() {
self.frontier[index].update(&time, delta);
}
} Additionally, if you mark the first version as The issue manifests for me against this commit of timely dataflow, uncommenting lines 25-27 in this notificator.rs, using a program that just does extern crate timely;
use timely::example::*;
use timely::communication::*;
use timely::progress::nested::subgraph::new_graph;
fn triangles<C: Communicator>(communicator: C) {
let mut computation = new_graph::<u64, C>(communicator);
let (mut input, mut stream) = computation.new_input::<u32>();
} My hunch would be that the crate summary Rust produces has some glitches, and forcing the inline avoids them. If nothing else, this keeps me on my toes with respect to testing to avoid mysterious ICE-based regressions. ;) |
The sort key is a (DefId, Name), which is *not* stable between runs, so we must re-sort when loading. Fixes rust-lang#24063 Fixes rust-lang#25467 Fixes rust-lang#27222 Fixes rust-lang#28377
I'm getting an ICE (using nightly) when building a not-too-complicated program which depends on a crate I have put together (so, not necessarily much tested in the wild). The backtrace is
The hunk of code that causes the explosion is:
Unfortunately the
timely
crate is not available on crates.io, because it is still in progress, but it is crashing with the version currently available at https://github.com/frankmcsherry/timely-dataflow, with which I've written several other (non-ICE-ing) programs (so it isn't fundamentally broken, possibly only slightly so :)).As you can possibly see from the code, I tried an empty
Graph
trait andStream
struct, but that "works fine" (it complains that I haven't finished my impls yet, without an ICE, and compiles if I just throw somepanic!
s in there instead). I may try to make a more minimal reproduction, but it probably involves moving parts from one crate into this example, yuck! Perhaps an issue is already obvious from the backtrace.The text was updated successfully, but these errors were encountered: