Closed
Description
https://travis-ci.org/GuillaumeGomez/rust-GSL/builds/53335854
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: run with `RUST_BACKTRACE=1` for a backtrace
thread 'rustc' panicked at 'arithmetic operation overflowed', /home/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libsyntax/codemap.rs:73
stack backtrace:
1: 0x7fd52b3bcf6f - sys::backtrace::write::h2f046b875b210aadOBA
2: 0x7fd52b3e7c82 - panicking::on_panic::h792ac47fb8c07faehHJ
3: 0x7fd52b31cf2a - rt::unwind::begin_unwind_inner::hbffac672008352c8knJ
4: 0x7fd52b31d641 - rt::unwind::begin_unwind_fmt::hbe64affaa986f482VlJ
5: 0x7fd52b3e7807 - rust_begin_unwind
6: 0x7fd52b433114 - panicking::panic_fmt::h81cd96819f02da8dIZs
7: 0x7fd52b42f53d - panicking::panic::h8ea414638b29b322UXs
8: 0x7fd5286f98ac - codemap::BytePos.Sub::sub::h13c0a0f10f07c348YWB
9: 0x7fd529035ec0 - middle::astencode::DecodeContext<'a, 'b, 'tcx>::tr_span::hdd7910e968f71d01FCa
10: 0x7fd52904679c - fold::noop_fold_expr::h1258022642513463166
11: 0x7fd5290464a3 - ptr::P<T>::map::h4462110055941524197
12: 0x7fd529049c9e - fold::noop_fold_expr::closure.66610
13: 0x7fd5290469e1 - fold::noop_fold_expr::h1258022642513463166
14: 0x7fd5290464a3 - ptr::P<T>::map::h4462110055941524197
15: 0x7fd529049c9e - fold::noop_fold_expr::closure.66610
16: 0x7fd529046bbe - fold::noop_fold_expr::h1258022642513463166
17: 0x7fd5290464a3 - ptr::P<T>::map::h4462110055941524197
18: 0x7fd529049c4b - fold::noop_fold_expr::closure.66605
19: 0x7fd52904e0a4 - fold::noop_fold_local::closure.66836
20: 0x7fd52904da97 - fold::noop_fold_decl::closure.66833
21: 0x7fd52904bc9b - fold::Folder::fold_stmt::closure.66763
22: 0x7fd52904b553 - fold::noop_fold_block::closure.66714
23: 0x7fd52904b208 - iter::FlatMap<I, U, F>.Iterator::next::h9223681505759829108
24: 0x7fd52904a9cf - vec::Vec<T>.FromIterator<T>::from_iter::h13016817088923062838
25: 0x7fd52904a295 - fold::noop_fold_block::closure.66623
26: 0x7fd529049e32 - fold::noop_fold_block::h14827012078068820658
27: 0x7fd529047873 - fold::noop_fold_expr::h1258022642513463166
28: 0x7fd5290464a3 - ptr::P<T>::map::h4462110055941524197
29: 0x7fd529049c4b - fold::noop_fold_expr::closure.66605
30: 0x7fd52904a327 - fold::noop_fold_block::closure.66623
31: 0x7fd529049e32 - fold::noop_fold_block::h14827012078068820658
32: 0x7fd529047873 - fold::noop_fold_expr::h1258022642513463166
33: 0x7fd5290464a3 - ptr::P<T>::map::h4462110055941524197
34: 0x7fd52904c176 - fold::Folder::fold_stmt::closure.66763
35: 0x7fd52904b553 - fold::noop_fold_block::closure.66714
36: 0x7fd52904b208 - iter::FlatMap<I, U, F>.Iterator::next::h9223681505759829108
37: 0x7fd52904a9cf - vec::Vec<T>.FromIterator<T>::from_iter::h13016817088923062838
38: 0x7fd52904a295 - fold::noop_fold_block::closure.66623
39: 0x7fd529049e32 - fold::noop_fold_block::h14827012078068820658
40: 0x7fd529046f87 - fold::noop_fold_expr::h1258022642513463166
41: 0x7fd5290464a3 - ptr::P<T>::map::h4462110055941524197
42: 0x7fd52904bb9b - fold::Folder::fold_stmt::closure.66763
43: 0x7fd52904b553 - fold::noop_fold_block::closure.66714
44: 0x7fd52904b208 - iter::FlatMap<I, U, F>.Iterator::next::h9223681505759829108
45: 0x7fd52904a9cf - vec::Vec<T>.FromIterator<T>::from_iter::h13016817088923062838
46: 0x7fd52904a295 - fold::noop_fold_block::closure.66623
47: 0x7fd529049e32 - fold::noop_fold_block::h14827012078068820658
48: 0x7fd529047873 - fold::noop_fold_expr::h1258022642513463166
49: 0x7fd5290464a3 - ptr::P<T>::map::h4462110055941524197
50: 0x7fd529049c4b - fold::noop_fold_expr::closure.66605
51: 0x7fd52904a327 - fold::noop_fold_block::closure.66623
52: 0x7fd529049e32 - fold::noop_fold_block::h14827012078068820658
53: 0x7fd529069f57 - fold::noop_fold_method::closure.67217
54: 0x7fd5290696c5 - fold::noop_fold_method::h2920979874065131956
55: 0x7fd529038abb - middle::astencode::decode_inlined_item::h674342a5ff4e1a27Pqa
56: 0x7fd52a9f81ff - trans::inline::instantiate_inline::closure.39610
57: 0x7fd529427c2b - metadata::decoder::maybe_get_item_ast::h6b38702aa8f07983PDi
58: 0x7fd52922aec6 - metadata::csearch::maybe_get_item_ast::hf5174e6ae59eb7b5o3k
59: 0x7fd52a9f6a5d - trans::inline::instantiate_inline::h6a8d7203fac7c299bid
60: 0x7fd52aa45d85 - trans::callee::trans_fn_ref_with_substs::h85a6252d422343b2qng
61: 0x7fd52aa4452e - trans::callee::trans_fn_ref::h7eebc758d7f24cf00bg
62: 0x7fd52aa5b344 - trans::meth::trans_method_callee::h175c0aff2b6fe67998x
63: 0x7fd52aa59a19 - trans::callee::trans_call_inner::h18244630176801372264
64: 0x7fd52aa638e9 - trans::expr::trans_rvalue_dps_unadjusted::h62a8f691df1cee3cqCi
65: 0x7fd52aa154e6 - trans::expr::trans_into::h3bbb0e210c9fb401Vph
66: 0x7fd52aa14684 - trans::controlflow::trans_stmt_semi::hd74052e320e3d8baK6d
67: 0x7fd52aa15fc0 - trans::controlflow::trans_block::h4b526e186a057814x7d
68: 0x7fd52aa640de - trans::expr::trans_rvalue_dps_unadjusted::h62a8f691df1cee3cqCi
69: 0x7fd52aa154e6 - trans::expr::trans_into::h3bbb0e210c9fb401Vph
70: 0x7fd52aa14684 - trans::controlflow::trans_stmt_semi::hd74052e320e3d8baK6d
71: 0x7fd52aa15fc0 - trans::controlflow::trans_block::h4b526e186a057814x7d
72: 0x7fd52aaed3b1 - trans::base::trans_closure::h194b7ad0474e43a46mt
73: 0x7fd52a9fe948 - trans::base::trans_fn::h5416ef5d9cea730bZxt
74: 0x7fd52a9fa6e1 - trans::base::trans_item::h2af153dd6f7fd52bRVt
75: 0x7fd52aaf674c - trans::base::trans_crate::h5cb53f6b3e2377862Ru
76: 0x7fd52b9f7613 - driver::phase_4_translate_to_llvm::h60575195b9fa298dENa
77: 0x7fd52b9d305b - driver::compile_input::h9772b425fd1776fdNba
78: 0x7fd52ba97697 - run_compiler::h17c28dbe4dd58e3bV5b
79: 0x7fd52ba952c9 - thunk::F.Invoke<A, R>::invoke::h3041729087284544127
80: 0x7fd52ba93f40 - rt::unwind::try::try_fn::h11775082019993619070
81: 0x7fd52b457e38 - rust_try_inner
82: 0x7fd52b457e25 - rust_try
83: 0x7fd52ba946df - thunk::F.Invoke<A, R>::invoke::h10556879288050829464
84: 0x7fd52b3d29b5 - sys::thread::thread_start::hfe8c2cac3ec4afcdr8E
85: 0x7fd52520fe99 - start_thread
86: 0x7fd52af8a4bc - <unknown>
Offending code:
impl Sub for BytePos {
type Output = BytePos;
fn sub(self, rhs: BytePos) -> BytePos {
BytePos((self.to_usize() - rhs.to_usize()) as u32)
}
}
and the code calling it:
pub fn tr_span(&self, span: Span) -> Span {
let imported_filemaps = &self.cdata.codemap_import_info[..];
let filemap_index = {
// Optimize for the case that most spans within a translated item
// originate from the same filemap.
let last_filemap_index = self.last_filemap_index.get();
if span.lo >= imported_filemaps[last_filemap_index].original_start_pos &&
span.hi <= imported_filemaps[last_filemap_index].original_end_pos {
last_filemap_index
} else {
let mut a = 0;
let mut b = imported_filemaps.len();
while b - a > 1 {
let m = (a + b) / 2;
if imported_filemaps[m].original_start_pos > span.lo {
b = m;
} else {
a = m;
}
}
self.last_filemap_index.set(a);
a
}
};
let lo = (span.lo - imported_filemaps[filemap_index].original_start_pos) +
imported_filemaps[filemap_index].translated_filemap.start_pos;
let hi = (span.hi - imported_filemaps[filemap_index].original_start_pos) +
imported_filemaps[filemap_index].translated_filemap.start_pos;
codemap::mk_sp(lo, hi)
}
We might want a bounds check there (resolving to 0?), but there seems to be something broken in the astencode code too.