Closed
Description
Edited:
Please look at this comment for a self-contained example that reproduces the ICE.
In the process of finishing the 0.3 release of abi_stable,I got this ICE:
Documenting abi_stable v0.2.3 (/home/matias/Documents/eclipse_workspace/abi_stable_workspace/abi_stable)
thread 'rustc' panicked at 'Unable to fulfill trait DefId(2/0:850 ~ core[3726]::marker[0]::Send[0]) for 'std_types::map::iterator_stuff::IntoIter<K, V>': [FulfillmentError(Obligation(predicate=Binder(ProjectionPredicate(ProjectionTy { substs: [std_types::map::iterator_stuff::ValIterInterface<u32, u32>], item_def_id: DefId(0/0:4989 ~ abi_stable[8787]::erased_types[0]::traits[0]::InterfaceType[0]::Send[0]) }, core_extensions::type_level_bool::True)),depth=2),MismatchedProjectionTypes(Sorts(ExpectedFound { expected: core_extensions::type_level_bool::False, found: core_extensions::type_level_bool::True })))]', src/librustc/traits/auto_trait.rs:208:17
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
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: rustc 1.34.0 (91856ed52 2019-04-10) running on i686-unknown-linux-gnu
Trying it out again in nightly (rustc 1.36.0-nightly (d595b11 2019-05-10) running on i686-unknown-linux-gnu) ,I got:
Documenting abi_stable v0.3.0 (/home/matias/Documents/eclipse_workspace/abi_stable_workspace/abi_stable)
thread 'rustc' panicked at 'Unable to fulfill trait DefId(2:1386 ~ core[4c06]::marker[0]::Send[0]) for 'std_types::map::iterator_stuff::IntoIter<K, V>': [FulfillmentError(Obligation(predicate=Binder(ProjectionPredicate(ProjectionTy { substs: [std_types::map::iterator_stuff::ValIterInterface<u32, u32>], item_def_id: DefId(0:7003 ~ abi_stable[8787]::erased_types[0]::traits[0]::InterfaceType[0]::Send[0]) }, core_extensions::type_level_bool::True)),depth=2),MismatchedProjectionTypes(Sorts(ExpectedFound { expected: core_extensions::type_level_bool::False, found: core_extensions::type_level_bool::True })))]', src/librustc/traits/auto_trait.rs:202:17
stack backtrace:
0: 0xb5cded4c - std::sys::unix::backtrace::tracing::imp::unwind_backtrace::h88d972f6f6e46c24
at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:39
1: 0xb5cd70fb - std::sys_common::backtrace::_print::h83aca1574431bbad
at src/libstd/sys_common/backtrace.rs:71
2: 0xb5cdb1aa - std::panicking::default_hook::{{closure}}::h54e8f04261c4c0b1
at src/libstd/sys_common/backtrace.rs:59
at src/libstd/panicking.rs:197
3: 0xb5cdaef4 - std::panicking::default_hook::h66422ac1b55ce676
at src/libstd/panicking.rs:211
4: 0xb5db9c38 - proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::enter::{{closure}}::{{closure}}::h581fccc42b4d0f71
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/boxed.rs:718
at src/libproc_macro/bridge/client.rs:304
5: 0xb5cdb9f6 - std::panicking::rust_panic_with_hook::hbf2738690e9f5989
at src/libstd/panicking.rs:478
6: 0xb5cdb476 - std::panicking::continue_panic_fmt::hcbef7b43feb6b8d9
at src/libstd/panicking.rs:381
7: 0xb5cdb3b9 - std::panicking::begin_panic_fmt::hfafa0a0090d76a4e
at src/libstd/panicking.rs:336
8: 0x63531f - rustc::traits::auto_trait::AutoTraitFinder::find_auto_trait_generics::{{closure}}::{{closure}}::h3076052a80a2b2be
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e//<::std::macros::panic macros>:8
9: 0x634d23 - rustc::ty::context::tls::with_context::{{closure}}::h68c2c2610d54ace6
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/result.rs:766
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/traits/auto_trait.rs:201
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/infer/mod.rs:529
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1726
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1966
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1899
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1965
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1725
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:2071
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:2055
10: 0x6338d2 - rustc::ty::context::GlobalCtxt::enter_local::h90af253d10758aa1
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:2045
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:2055
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:2067
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1717
11: 0x6553f8 - rustc::traits::auto_trait::AutoTraitFinder::find_auto_trait_generics::h42ee2645b594cb59
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/infer/mod.rs:528
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/traits/auto_trait.rs:119
12: 0x4c5725 - core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut::h25ad1904ab0b7bc3
at src/librustdoc/clean/auto_trait.rs:50
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/ops/function.rs:269
13: 0x73a13a - <core::iter::adapters::chain::Chain<A,B> as core::iter::traits::iterator::Iterator>::try_fold::hb3e3d5b042f42891
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1572
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/chain.rs:88
14: 0x54dcb1 - <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter::ha8605cbc824c8642
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1609
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:812
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1809
15: 0x718bdd - rustdoc::clean::get_auto_trait_and_blanket_impls::h6b2119eea5d33f2b
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1721
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1465
at src/librustdoc/clean/auto_trait.rs:33
at src/librustdoc/clean/mod.rs:3787
16: 0x7545b6 - <rustdoc::passes::collect_trait_impls::SyntheticImplCollector as rustdoc::fold::DocFolder>::fold_item::h01bd6abc37807d9a
at src/librustdoc/passes/collect_trait_impls.rs:158
17: 0x54a448 - <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter::hf3f69d672ddf9615
at src/librustdoc/fold.rs:100
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1572
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1609
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:812
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1929
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1826
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1821
18: 0x75109e - rustdoc::fold::DocFolder::fold_inner_recur::h3b90485174c31fb1
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1721
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1465
at src/librustdoc/fold.rs:100
at src/librustdoc/fold.rs:27
19: 0x7548ad - <rustdoc::passes::collect_trait_impls::SyntheticImplCollector as rustdoc::fold::DocFolder>::fold_item::h01bd6abc37807d9a
at src/librustdoc/fold.rs:90
at src/librustdoc/passes/collect_trait_impls.rs:166
20: 0x54a448 - <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter::hf3f69d672ddf9615
at src/librustdoc/fold.rs:100
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1572
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1609
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:812
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1929
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1826
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1821
21: 0x75109e - rustdoc::fold::DocFolder::fold_inner_recur::h3b90485174c31fb1
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1721
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1465
at src/librustdoc/fold.rs:100
at src/librustdoc/fold.rs:27
22: 0x7548ad - <rustdoc::passes::collect_trait_impls::SyntheticImplCollector as rustdoc::fold::DocFolder>::fold_item::h01bd6abc37807d9a
at src/librustdoc/fold.rs:90
at src/librustdoc/passes/collect_trait_impls.rs:166
23: 0x54a448 - <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter::hf3f69d672ddf9615
at src/librustdoc/fold.rs:100
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1572
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1609
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:812
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1929
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1826
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1821
24: 0x75109e - rustdoc::fold::DocFolder::fold_inner_recur::h3b90485174c31fb1
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1721
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1465
at src/librustdoc/fold.rs:100
at src/librustdoc/fold.rs:27
25: 0x7548ad - <rustdoc::passes::collect_trait_impls::SyntheticImplCollector as rustdoc::fold::DocFolder>::fold_item::h01bd6abc37807d9a
at src/librustdoc/fold.rs:90
at src/librustdoc/passes/collect_trait_impls.rs:166
26: 0x751f8d - rustdoc::passes::collect_trait_impls::collect_trait_impls::h7ddbb0578e71ca0e
at src/librustdoc/fold.rs:105
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/option.rs:624
at src/librustdoc/fold.rs:105
at src/librustdoc/passes/collect_trait_impls.rs:17
27: 0x653622 - rustc::ty::context::tls::enter_global::h0352a121287a69cf
at src/librustdoc/core.rs:465
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/passes.rs:807
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1999
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1966
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1899
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1965
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1998
28: 0x6841d6 - rustc_interface::passes::BoxedGlobalCtxt::access::{{closure}}::h37af13ddc5734fca
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/passes.rs:807
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e//<::rustc_data_structures::box_region::declare_box_region_type macros>:17
29: 0xb7c04368 - rustc_interface::passes::create_global_ctxt::{{closure}}::ha0f95b1f2df7a5e5
30: 0x68524a - rustc_interface::interface::run_compiler_in_existing_thread_pool::hb0e8f2e4ea5e07c3
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/boxed.rs:910
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_data_structures/box_region.rs:52
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e//<::rustc_data_structures::box_region::declare_box_region_type macros>:19
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/passes.rs:807
at src/librustdoc/core.rs:354
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/interface.rs:122
31: 0x7923f7 - rustdoc::core::run_core::h828402703fcc17cc
at src/librustdoc/core.rs:340
32: 0x636b2e - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h7b9fd07b2b1ea2c8
at src/librustdoc/lib.rs:450
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panic.rs:309
33: 0x57b815 - std::panicking::try::do_call::hb936f360df81fcbb
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panicking.rs:293
34: 0xb5ceb447 - __rust_maybe_catch_panic
at src/libpanic_unwind/lib.rs:85
35: 0x7582cc - rustc_driver::report_ices_to_stderr_if_any::h7f9579b20d11e238
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panicking.rs:272
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panic.rs:388
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_driver/lib.rs:1114
36: 0x509438 - rustdoc::main_args::ha7dd5c6ee7b5b640
at src/librustdoc/lib.rs:447
at src/librustdoc/lib.rs:404
37: 0x733dda - std::thread::local::LocalKey<T>::with::ha9c7da692a148e8b
at src/librustdoc/lib.rs:98
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/option.rs:416
at src/librustdoc/lib.rs:98
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/util.rs:186
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1954
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/thread/local.rs:299
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/thread/local.rs:245
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1946
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/thread/local.rs:299
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/thread/local.rs:245
38: 0x688c42 - std::sys_common::backtrace::__rust_begin_short_backtrace::ha4de48f9125e55bb
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1938
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/util.rs:186
at /cargo/registry/src/github.com-1ecc6299db9ec823/scoped-tls-1.0.0/src/lib.rs:137
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/util.rs:182
at /cargo/registry/src/github.com-1ecc6299db9ec823/scoped-tls-1.0.0/src/lib.rs:137
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libsyntax/lib.rs:101
at /cargo/registry/src/github.com-1ecc6299db9ec823/scoped-tls-1.0.0/src/lib.rs:137
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libsyntax/lib.rs:100
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/util.rs:181
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/util.rs:159
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/sys_common/backtrace.rs:136
39: 0x57b980 - std::panicking::try::do_call::hcb704b420ba15158
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/thread/mod.rs:469
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panic.rs:309
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panicking.rs:293
40: 0xb5ceb447 - __rust_maybe_catch_panic
at src/libpanic_unwind/lib.rs:85
41: 0x75ff8b - core::ops::function::FnOnce::call_once{{vtable.shim}}::h71980ce26ab01d54
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panicking.rs:272
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panic.rs:388
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/thread/mod.rs:468
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/ops/function.rs:231
42: 0xb5cbe208 - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h2e642aeea9c9581f
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/boxed.rs:704
43: 0xb5ce9e50 - std::sys::unix::thread::Thread::new::thread_start::ha576c140cc0cd745
at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/boxed.rs:704
at src/libstd/sys_common/thread.rs:13
at src/libstd/sys/unix/thread.rs:79
44: 0xb5c37294 - start_thread
45: 0xb5b440ad - __clone
46: 0x0 - <unknown>
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: rustc 1.36.0-nightly (d595b1135 2019-05-10) running on i686-unknown-linux-gnu
For the abi_stable::std_types::map::IntoIter type,with this type definition:
#[repr(transparent)]
pub struct IntoIter<K,V>{
iter:DynTrait<'static,RBox<()>,ValIterInterface<u32,u32>>,
_marker:PhantomData<Tuple2<K,V>>,
}
It compiles if I add a PhantomData<Rc<()>>
field to IntoIter.
Context
The Send impl of DynTrait:
impl<'borr, P, I> Send for DynTrait<'borr, P, I> where
P: Send,
I: InterfaceBound<'borr, Send = True>,
{}
Definition of InterfaceBound
Definition of InterfaceType
The InterfaceType
impl of ValIterInterface
:
crate::impl_InterfaceType!{
impl<K,V> crate::InterfaceType for ValIterInterface<K,V> {
type Send=False;
type Sync=False;
type Iterator=True;
}
}
The impl_InterfaceType
macro just sets the unmentioned associated types to False
.