Closed japaric closed 9 years ago
I have similar ICE without inlining:
task 'rustc' panicked at 'assertion failed: `(left == right) && (right == left)` (left: `11`, right: `0`)', /Users/rustbuild/src/rust-buildbot/slave/nightly-mac/build/src/librustc/middle/ty.rs:2569
stack backtrace:
1: 0x1053ac929 - rt::backtrace::imp::write::hfe87245730e40e498nq
2: 0x1053afb6c - failure::on_fail::h250240fc1d2cc13cHEq
3: 0x10560b395 - unwind::begin_unwind_inner::h629bbfd5c5c7ad4bSJd
4: 0x10560b02f - unwind::begin_unwind_fmt::h26eed6b8c9614d01kHd
5: 0x1024f5487 - middle::ty::type_contents::tc_ty::h4f516816f0265f20JIH
6: 0x1024f473e - middle::ty::type_contents::tc_ty::h4f516816f0265f20JIH
7: 0x1024f4c7f - middle::ty::type_contents::tc_ty::h4f516816f0265f20JIH
8: 0x1022ada4f - middle::ty::type_contents::hcbff11a2d2064355XHH
9: 0x102497834 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, TYPER>::consume_expr::h12011496269642837587
10: 0x1024916af - middle::expr_use_visitor::ExprUseVisitor<'d, 't, TYPER>::walk_expr::h6289422402745590059
11: 0x102497889 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, TYPER>::consume_expr::h12011496269642837587
12: 0x1024916af - middle::expr_use_visitor::ExprUseVisitor<'d, 't, TYPER>::walk_expr::h6289422402745590059
13: 0x102497889 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, TYPER>::consume_expr::h12011496269642837587
14: 0x1024916af - middle::expr_use_visitor::ExprUseVisitor<'d, 't, TYPER>::walk_expr::h6289422402745590059
15: 0x102497ae3 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, TYPER>::walk_local::h480003012053056122
16: 0x102497a15 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, TYPER>::walk_block::h3271632192568197791
17: 0x10249180e - middle::expr_use_visitor::ExprUseVisitor<'d, 't, TYPER>::walk_expr::h6289422402745590059
18: 0x10249d180 - middle::trans::_match::trans_match_inner::closure.126642
19: 0x10242094b - middle::trans::_match::trans_match::h812670c167266a78prk
20: 0x1024100fd - middle::trans::expr::trans_rvalue_dps_unadjusted::hea6dad8c49515284vb6
21: 0x1023d5cf9 - middle::trans::expr::trans_into::h6b9cbd6894a0b3dd6M4
22: 0x1023d604e - middle::trans::controlflow::trans_block::hb6579525f1a9c0e0M30
23: 0x10247633a - middle::trans::base::trans_closure::h73d516938fc276e1Zah
24: 0x1023c995f - middle::trans::base::trans_fn::ha1261357d96dceccpmh
25: 0x1023cb592 - middle::trans::monomorphize::monomorphic_fn::h3beeee8af9d8e21acu0
26: 0x1023fc857 - middle::trans::callee::trans_fn_ref_with_substs::he50eea051fdbe5a9sH3
27: 0x1023e0aae - middle::trans::meth::trans_method_callee::ha6757eb79d64f196aAm
28: 0x10240211b - middle::trans::callee::trans_method_call::closure.122853
29: 0x1023dd895 - middle::trans::callee::trans_call_inner::hecb2b66e77f79065c33
30: 0x102401f4d - middle::trans::callee::trans_method_call::hd6c33d4672989d74EY3
31: 0x10240fb8f - middle::trans::expr::trans_rvalue_dps_unadjusted::hea6dad8c49515284vb6
32: 0x10240e911 - middle::trans::expr::trans_unadjusted::hcc11a8a8a1a648574x5
33: 0x1023d7272 - middle::trans::expr::trans::h13b6cdaa2b8246660Q4
34: 0x102419a98 - middle::trans::expr::trans_addr_of::hfcdfbe87e717518flZ6
35: 0x10240f120 - middle::trans::expr::trans_unadjusted::hcc11a8a8a1a648574x5
36: 0x1023d5d19 - middle::trans::expr::trans_into::h6b9cbd6894a0b3dd6M4
37: 0x102422651 - middle::trans::expr::trans_adt::h9723c7611e8b803aFJ6
38: 0x1024106ff - middle::trans::expr::trans_rvalue_dps_unadjusted::hea6dad8c49515284vb6
39: 0x10240e911 - middle::trans::expr::trans_unadjusted::hcc11a8a8a1a648574x5
40: 0x1023d7272 - middle::trans::expr::trans::h13b6cdaa2b8246660Q4
41: 0x1024206e2 - middle::trans::_match::trans_match::h812670c167266a78prk
42: 0x1024100fd - middle::trans::expr::trans_rvalue_dps_unadjusted::hea6dad8c49515284vb6
43: 0x1023d5cf9 - middle::trans::expr::trans_into::h6b9cbd6894a0b3dd6M4
44: 0x1023d604e - middle::trans::controlflow::trans_block::hb6579525f1a9c0e0M30
45: 0x10247633a - middle::trans::base::trans_closure::h73d516938fc276e1Zah
46: 0x1023c995f - middle::trans::base::trans_fn::ha1261357d96dceccpmh
47: 0x1023cb592 - middle::trans::monomorphize::monomorphic_fn::h3beeee8af9d8e21acu0
48: 0x1023fc857 - middle::trans::callee::trans_fn_ref_with_substs::he50eea051fdbe5a9sH3
49: 0x1023e0aae - middle::trans::meth::trans_method_callee::ha6757eb79d64f196aAm
50: 0x10240211b - middle::trans::callee::trans_method_call::closure.122853
51: 0x1023dd895 - middle::trans::callee::trans_call_inner::hecb2b66e77f79065c33
52: 0x102401f4d - middle::trans::callee::trans_method_call::hd6c33d4672989d74EY3
53: 0x10240fb8f - middle::trans::expr::trans_rvalue_dps_unadjusted::hea6dad8c49515284vb6
54: 0x10240e911 - middle::trans::expr::trans_unadjusted::hcc11a8a8a1a648574x5
55: 0x1023d7272 - middle::trans::expr::trans::h13b6cdaa2b8246660Q4
56: 0x102419a98 - middle::trans::expr::trans_addr_of::hfcdfbe87e717518flZ6
57: 0x10240f120 - middle::trans::expr::trans_unadjusted::hcc11a8a8a1a648574x5
58: 0x1023d5d19 - middle::trans::expr::trans_into::h6b9cbd6894a0b3dd6M4
59: 0x102422651 - middle::trans::expr::trans_adt::h9723c7611e8b803aFJ6
60: 0x1024106ff - middle::trans::expr::trans_rvalue_dps_unadjusted::hea6dad8c49515284vb6
61: 0x10240e911 - middle::trans::expr::trans_unadjusted::hcc11a8a8a1a648574x5
62: 0x1023d7272 - middle::trans::expr::trans::h13b6cdaa2b8246660Q4
63: 0x1024206e2 - middle::trans::_match::trans_match::h812670c167266a78prk
64: 0x1024100fd - middle::trans::expr::trans_rvalue_dps_unadjusted::hea6dad8c49515284vb6
65: 0x1023d5cf9 - middle::trans::expr::trans_into::h6b9cbd6894a0b3dd6M4
66: 0x10249d8ee - middle::trans::_match::store_local::closure.126680
67: 0x10249d7a0 - middle::trans::_match::mk_binding_alloca::h3000336027245779899
68: 0x10246dd5f - middle::trans::_match::store_local::h8039e9afecf4d4cdKEk
69: 0x1023d52d4 - middle::trans::base::init_local::h33c895e862085d0aQig
70: 0x1023d4741 - middle::trans::controlflow::trans_stmt::h85c129a56de52a90GY0
71: 0x1023d5f48 - middle::trans::controlflow::trans_block::hb6579525f1a9c0e0M30
72: 0x10247633a - middle::trans::base::trans_closure::h73d516938fc276e1Zah
73: 0x1023c995f - middle::trans::base::trans_fn::ha1261357d96dceccpmh
74: 0x1023cb42c - middle::trans::monomorphize::monomorphic_fn::h3beeee8af9d8e21acu0
75: 0x1023fc857 - middle::trans::callee::trans_fn_ref_with_substs::he50eea051fdbe5a9sH3
76: 0x1023e0aae - middle::trans::meth::trans_method_callee::ha6757eb79d64f196aAm
77: 0x10240211b - middle::trans::callee::trans_method_call::closure.122853
78: 0x1023dd895 - middle::trans::callee::trans_call_inner::hecb2b66e77f79065c33
79: 0x102401f4d - middle::trans::callee::trans_method_call::hd6c33d4672989d74EY3
80: 0x10240fb8f - middle::trans::expr::trans_rvalue_dps_unadjusted::hea6dad8c49515284vb6
81: 0x10240e911 - middle::trans::expr::trans_unadjusted::hcc11a8a8a1a648574x5
82: 0x1023d7272 - middle::trans::expr::trans::h13b6cdaa2b8246660Q4
83: 0x102407fe4 - middle::trans::callee::trans_args::h6215d14867a1f36bno4
84: 0x1023de92d - middle::trans::callee::trans_call_inner::hecb2b66e77f79065c33
85: 0x102401f4d - middle::trans::callee::trans_method_call::hd6c33d4672989d74EY3
86: 0x10240fb8f - middle::trans::expr::trans_rvalue_dps_unadjusted::hea6dad8c49515284vb6
87: 0x10240e911 - middle::trans::expr::trans_unadjusted::hcc11a8a8a1a648574x5
88: 0x1023d7272 - middle::trans::expr::trans::h13b6cdaa2b8246660Q4
89: 0x102419a98 - middle::trans::expr::trans_addr_of::hfcdfbe87e717518flZ6
90: 0x10240f120 - middle::trans::expr::trans_unadjusted::hcc11a8a8a1a648574x5
91: 0x1023d5d19 - middle::trans::expr::trans_into::h6b9cbd6894a0b3dd6M4
92: 0x102422651 - middle::trans::expr::trans_adt::h9723c7611e8b803aFJ6
93: 0x1024106ff - middle::trans::expr::trans_rvalue_dps_unadjusted::hea6dad8c49515284vb6
94: 0x10240e911 - middle::trans::expr::trans_unadjusted::hcc11a8a8a1a648574x5
95: 0x1023d7272 - middle::trans::expr::trans::h13b6cdaa2b8246660Q4
96: 0x1024206e2 - middle::trans::_match::trans_match::h812670c167266a78prk
97: 0x1024100fd - middle::trans::expr::trans_rvalue_dps_unadjusted::hea6dad8c49515284vb6
98: 0x1023d5cf9 - middle::trans::expr::trans_into::h6b9cbd6894a0b3dd6M4
99: 0x1023d604e - middle::trans::controlflow::trans_block::hb6579525f1a9c0e0M30
100: 0x102410168 - middle::trans::expr::trans_rvalue_dps_unadjusted::hea6dad8c49515284vb6
... <frames omitted>
rustc 0.13.0-nightly (221fc1e3c 2014-10-31 02:27:15 +0000)
But i can't reproduce it in simple code example for now.
Caught it!
git clone https://github.com/s-panferov/ice-assertion-ty.git
cd ice-assertion-ty
cargo test
Main body:
#![feature(macro_rules)]
pub trait ToSql {
fn to_sql(&self) -> String;
}
#[deriving(Clone)]
pub enum ExprValue<T> {
ExpressionValue,
DefaultValue
}
#[allow(dead_code)]
#[deriving(Clone)]
pub enum Insert<T, V, M> {
InsertDefaultValues,
InsertValues(Vec<V>)
}
#[allow(dead_code)]
#[deriving(Clone)]
pub struct InsertQuery<T, V, M> {
pub values: Insert<T, V, M>
}
impl ToSql for () {
fn to_sql(&self) -> String {
"DEFAULT VALUES".to_string()
}
}
impl<T: Clone, V: ToSql, M: Clone> ToSql for Insert<T, V, M> {
fn to_sql(&self) -> String {
match self {
&InsertDefaultValues => {
"DEFAULT VALUES".to_string()
},
&InsertValues(ref rows) => {
let val: Vec<&V> = rows.iter().collect();
"".to_string()
}
}
}
}
impl<T: Clone, V: Clone+ToSql, M: Clone> ToSql for InsertQuery<T, V, M> {
fn to_sql(&self) -> String {
// ..
format!("{}", self.values.to_sql())
}
}
Test body:
#![feature(globs)]
extern crate ice;
use ice::*;
#[test]
fn test() {
let values: Insert<(), (), ()> = InsertDefaultValues;
let query: InsertQuery<(), (), ()> = InsertQuery {
values: values
};
println!("result");
println!("{}", query.to_sql());
}
I guess this the related, since I'm actually trying to use UFCS to inline a function and the function is not defined in my crate,
fn binop<T>(op: fn(&T, &T) -> T, a: &T, b: &T) -> T {
// [...]
op(a, b)
}
fn addx(a: f64, b: f64) -> f64 {
binop(Add::add, &a, &b)
}
fn main() {
addx(1.0, 2.0);
}
Using rustc 0.13.0-dev (00cc6d240 2014-10-24 03:22:29 +0000) as well as master from playpen,
$ RUST_BACKTRACE=1 rustc main.rs
error: internal compiler error: unexpected failure
note: the compiler hit an unexpected failure path. this is a bug.
note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
task 'rustc' failed at 'assertion failed: `(left == right) && (right == left)` (left: `3`, right: `0`)', /Users/seb/local/src/rust/src/librustc/middle/trans/callee.rs:528
stack backtrace:
1: 0x10de67369 - rt::backtrace::imp::write::h5cb95caddc8561camlq
2: 0x10de6a647 - failure::on_fail::h234c06cac3945e8bVBq
3: 0x10e0cc735 - unwind::begin_unwind_inner::h9105011a78466b9eDud
4: 0x10e0cc3fc - unwind::begin_unwind_fmt::h07316d219088e3025rd
5: 0x10aebfc05 - middle::trans::callee::trans_fn_ref_with_substs::h0b4e9d2ee3b6558aAC3
6: 0x10aebd0d1 - middle::trans::callee::trans_fn_ref::h55761fa4eda1110bqq3
7: 0x10aedb131 - middle::trans::expr::trans_def::h48c606f79e7dd407VW5
8: 0x10aed325a - middle::trans::expr::trans_unadjusted::h47409160f1eb6f86tt5
9: 0x10ae98bc2 - middle::trans::expr::trans::hd44136491cd72162pM4
10: 0x10aecbf44 - middle::trans::callee::trans_args::h1f6cf1efb791e624oj4
11: 0x10aea0439 - middle::trans::callee::trans_call_inner::h55cf4dfb2f10e1b9kY3
12: 0x10aec50d7 - middle::trans::callee::trans_call::h23ec6f0e40508d0fES3
13: 0x10aed4c01 - middle::trans::expr::trans_rvalue_dps_unadjusted::h5b575c9c069c361eX65
14: 0x10ae97729 - middle::trans::expr::trans_into::h80c999353edbf98cvI4
15: 0x10ae97a7e - middle::trans::controlflow::trans_block::h997234ba9aac93d2LY0
16: 0x10af3eafe - middle::trans::base::trans_closure::hef52fdc374efb614M4g
17: 0x10ae8a75a - middle::trans::base::trans_fn::h427ae11941f8ecb7agh
18: 0x10ae87e95 - middle::trans::base::trans_item::h601883efebea6853tzh
19: 0x10af482c8 - middle::trans::base::trans_crate::hf62c9be45574a5b3kxi
20: 0x10b382355 - driver::driver::phase_4_translate_to_llvm::hc75cae4187302a30GyA
21: 0x10b37afe6 - driver::driver::compile_input::h85978a2ffa5320eaA5z
22: 0x10b3ff60f - driver::run_compiler::h61c720c34640da73LSD
23: 0x10b3fd796 - driver::run::closure.144840
24: 0x10ab2d79b - task::TaskBuilder<S>::try_future::closure.103258
25: 0x10ab2d683 - task::TaskBuilder<S>::spawn_internal::closure.103229
26: 0x10d4718fd - task::NativeSpawner.Spawner::spawn::closure.8522
27: 0x10e136bfc - rust_try_inner
28: 0x10e136be6 - rust_try
29: 0x10e0c9da7 - unwind::try::h25431bb1593bc97bljd
30: 0x10e0c9c2c - task::Task::run::h56e3cfd2f55b234ewzc
31: 0x10d471722 - task::NativeSpawner.Spawner::spawn::closure.8461
32: 0x10e0cb5ea - thread::thread_start::h023119a990ef057fHTc
33: 0x7fff86be82fc - _pthread_body
34: 0x7fff86be8279 - _pthread_body
By the way, it might be nice if playpen was able to automatically display (and/or send) that information when ICEs are found.
Some of these look similar to #18412 #18061, but the fix for that went in recently...
@spaolacci, your issue is #18061, and the fix for it just landed. I think the others still occur.
@s-panferov, your ICE does not appear to be UFCS-related. Can you open a separate issue?
@bkoropoff #18514
I can confirm that the original example still ICEs even with the fix for #18514, so it is a different issue:
error: internal compiler error: unexpected panic
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
task 'rustc' panicked at 'assertion failed: did.krate != ast::LOCAL_CRATE', /home/bkoropoff/Source/rust/src/librustc/middle/ty.rs:4476
stack backtrace:
1: 0x7f2749e6d600 - rt::backtrace::imp::write::h4bb43e154ca43b21Meq
2: 0x7f2749e6f650 - failure::on_fail::hfc0fa620cf9857299zq
3: 0x7f274e0afd00 - unwind::begin_unwind_inner::h67de795556f03740vTd
4: 0x7f274e6e3bb0 - unwind::begin_unwind::h17429563519022666585
5: 0x7f274eb10a90 - middle::ty::lookup_trait_def::h445f0408c992da73SsK
6: 0x7f274e9dc8b0 - util::ppaux::ty..TraitRef.Repr::repr::ha3293d0710a14bb5lhK
7: 0x7f274ea5db90 - middle::trans::common::fulfill_obligation::hce42b3bbe1630c53QJ8
8: 0x7f274ea2f260 - middle::trans::meth::trans_static_method_callee::h6e647efcb386aec6kzm
9: 0x7f274ea47180 - middle::trans::expr::trans_def::h404ea2cc1529cc808V5
10: 0x7f274ea3f820 - middle::trans::expr::trans_unadjusted::hf278c1faf66daa53Es5
11: 0x7f274ea0faf0 - middle::trans::expr::trans::h09d0376921b16455AL4
12: 0x7f274ea39a00 - middle::trans::callee::trans_args::h98e66dc97db9b64dXi4
13: 0x7f274ea17270 - middle::trans::callee::trans_call_inner::hba2fb74262554e0bMX3
14: 0x7f274ea34480 - middle::trans::callee::trans_call::hfa1c38f86fbfcf6e6R3
15: 0x7f274ea40ba0 - middle::trans::expr::trans_rvalue_dps_unadjusted::h03c4a846155b8d5b555
16: 0x7f274ea0e5c0 - middle::trans::expr::trans_into::h9ec3df557ec4a1d1GH4
17: 0x7f274ea0db60 - middle::trans::controlflow::trans_stmt_semi::h2bf8c014bba1d5cbyX0
18: 0x7f274ea0d180 - middle::trans::controlflow::trans_stmt::hfce27964ae879693lT0
19: 0x7f274ea0e960 - middle::trans::controlflow::trans_block::h195c4a1576e5b6d0rY0
20: 0x7f274ea9e060 - middle::trans::base::trans_closure::he382fee24a6c8113v5g
21: 0x7f274ea038d0 - middle::trans::base::trans_fn::h95c9c34a4110b15fqhh
22: 0x7f274ea01490 - middle::trans::base::trans_item::h080110be2df88ebdEAh
23: 0x7f274e9fe2b0 - middle::trans::inline::instantiate_inline::h3dee3aa3860540219b0
24: 0x7f274ea34730 - middle::trans::callee::trans_call::closure.122762
25: 0x7f274ea17270 - middle::trans::callee::trans_call_inner::hba2fb74262554e0bMX3
26: 0x7f274ea34480 - middle::trans::callee::trans_call::hfa1c38f86fbfcf6e6R3
27: 0x7f274ea40ba0 - middle::trans::expr::trans_rvalue_dps_unadjusted::h03c4a846155b8d5b555
28: 0x7f274ea0e5c0 - middle::trans::expr::trans_into::h9ec3df557ec4a1d1GH4
29: 0x7f274ea0db60 - middle::trans::controlflow::trans_stmt_semi::h2bf8c014bba1d5cbyX0
30: 0x7f274ea0d180 - middle::trans::controlflow::trans_stmt::hfce27964ae879693lT0
31: 0x7f274ea0e960 - middle::trans::controlflow::trans_block::h195c4a1576e5b6d0rY0
32: 0x7f274ea9e060 - middle::trans::base::trans_closure::he382fee24a6c8113v5g
33: 0x7f274ea038d0 - middle::trans::base::trans_fn::h95c9c34a4110b15fqhh
34: 0x7f274ea01490 - middle::trans::base::trans_item::h080110be2df88ebdEAh
35: 0x7f274eaa1c70 - middle::trans::base::trans_mod::ha859d0821e07a5419Fh
36: 0x7f274eaa7a80 - middle::trans::base::trans_crate::h0e420231438a080dJyi
37: 0x7f274ee70250 - driver::driver::phase_4_translate_to_llvm::h5eedb77a0534f86efOA
38: 0x7f274ee68ef0 - driver::driver::compile_input::h3fb65e4233f7306c9kA
39: 0x7f274eee6940 - driver::run::closure.145290
40: 0x7f274e70f6b0 - task::TaskBuilder<S>::try_future::closure.103610
41: 0x7f274e70f530 - task::TaskBuilder<S>::spawn_internal::closure.103557
42: 0x7f274e3ede10 - task::NativeSpawner.Spawner::spawn::closure.8409
43: 0x7f274e107d10 - rust_try_inner
44: 0x7f274e107d00 - rust_try
45: 0x7f274e0ada80 - task::Task::run::h42fb1dbb2643b426FNc
46: 0x7f274e3edbe0 - task::NativeSpawner.Spawner::spawn::closure.8348
47: 0x7f274e0aee70 - thread::thread_start::ha4aa6f5a9a81876aU8c
48: 0x7f2749440e20 - start_thread
49: 0x7f274dd7ab59 - clone
50: 0x0 - <unknown>
I'm seeing a def with the wrong crate ID. It looks like an AST decoding problem. Hopefully an easy fix.
While trying to replace the "secret" functions (e.g.
secret_show
) used forformat_args!
with their UFCS versions (e.g.Show::fmt
), I ran into the following ICE:STR
Output
I couldn't get a backtrace with
RUST_BACKTRACE
nor withgdb
Version
cc @nick29581