Closed
Description
While working on a project which involves generated code from the prost
project and the tower-grpc
project, I encountered an ICE while running cargo doc --all
in my codebase
You can find the code at:
https://gitlab.com/kinnison/cassava.git
The commit I encountered the error on is 8cafdb0fcf6346aea6aae80c29cf73a059a4b7a4
which is (at time of filing) the tip commit on temporary/for-rustdoc-report
To reproduce, run cargo doc --all
at the top level.
Meta
rustc --version --verbose
:
rustc 1.31.0-beta.19 (42053f9f0 2018-11-26)
binary: rustc
commit-hash: 42053f9f07c91cbaad78afe459851a435b346673
commit-date: 2018-11-26
host: x86_64-unknown-linux-gnu
release: 1.31.0-beta.19
LLVM version: 8.0
Backtrace:
Documenting cassava-protos v0.1.0 (/home/dsilvers/dev-git/cassava/cassava-protos)
thread '<unnamed>' panicked at 'Unable to fulfill trait DefId(2/0:825 ~ core[6761]::marker[0]::Send[0]) for 'google::bytestream::server::byte_stream::ResponseBody<T>': [FulfillmentError(Obligation(predicate=Binder(TraitPredicate(<<T as google::bytestream::server::ByteStream>::ReadStream as std::marker::Send>)),depth=6),Unimplemented)]', librustc/traits/auto_trait.rs:218:17
stack backtrace:
0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
1: std::sys_common::backtrace::print
at libstd/sys_common/backtrace.rs:71
at libstd/sys_common/backtrace.rs:59
2: std::panicking::default_hook::{{closure}}
at libstd/panicking.rs:211
3: std::panicking::default_hook
at libstd/panicking.rs:227
4: std::panicking::rust_panic_with_hook
at libstd/panicking.rs:480
5: std::panicking::continue_panic_fmt
at libstd/panicking.rs:390
6: std::panicking::begin_panic_fmt
at libstd/panicking.rs:345
7: rustc::traits::auto_trait::AutoTraitFinder::find_auto_trait_generics::{{closure}}::{{closure}}
at /rustc/42053f9f07c91cbaad78afe459851a435b346673/src/<::std::macros::panic macros>:8
8: rustc::ty::context::tls::with_context::{{closure}}
at libcore/result.rs:774
at librustc/traits/auto_trait.rs:217
at librustc/infer/mod.rs:526
at librustc/ty/context.rs:1681
at librustc/ty/context.rs:2045
at librustc/ty/context.rs:1984
at librustc/ty/context.rs:2044
at librustc/ty/context.rs:1680
at librustc/ty/context.rs:2145
at librustc/ty/context.rs:2129
9: rustc::ty::context::GlobalCtxt::enter_local
at librustc/ty/context.rs:2120
at librustc/ty/context.rs:2129
at librustc/ty/context.rs:2140
at librustc/ty/context.rs:1673
10: rustc::traits::auto_trait::AutoTraitFinder::find_auto_trait_generics
at librustc/infer/mod.rs:525
at librustc/traits/auto_trait.rs:133
11: rustdoc::clean::auto_trait::AutoTraitFinder::get_auto_trait_impl_for
at librustdoc/clean/auto_trait.rs:200
at librustdoc/clean/auto_trait.rs:123
12: rustdoc::clean::auto_trait::AutoTraitFinder::get_auto_trait_impls
at librustdoc/clean/auto_trait.rs:76
at libcore/option.rs:632
at librustdoc/clean/auto_trait.rs:73
13: rustdoc::clean::def_ctor::get_def_from_node_id
at librustdoc/clean/auto_trait.rs:41
at librustdoc/clean/def_ctor.rs:59
14: <rustdoc::passes::collect_trait_impls::SyntheticImplCollector<'a, 'tcx, 'rcx, 'cstore> as rustdoc::fold::DocFolder>::fold_item
at librustdoc/clean/auto_trait.rs:39
at librustdoc/clean/mod.rs:3353
at librustdoc/passes/collect_trait_impls.rs:170
15: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T, I>>::from_iter
at librustdoc/fold.rs:110
at libcore/iter/mod.rs:1572
at liballoc/vec.rs:1908
at liballoc/vec.rs:1805
at liballoc/vec.rs:1800
16: rustdoc::fold::DocFolder::fold_inner_recur
at liballoc/vec.rs:1700
at libcore/iter/iterator.rs:1476
at librustdoc/fold.rs:110
at librustdoc/fold.rs:37
17: <rustdoc::passes::collect_trait_impls::SyntheticImplCollector<'a, 'tcx, 'rcx, 'cstore> as rustdoc::fold::DocFolder>::fold_item
at librustdoc/fold.rs:100
at librustdoc/passes/collect_trait_impls.rs:178
18: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T, I>>::from_iter
at librustdoc/fold.rs:110
at libcore/iter/mod.rs:1572
at liballoc/vec.rs:1908
at liballoc/vec.rs:1805
at liballoc/vec.rs:1800
19: rustdoc::fold::DocFolder::fold_inner_recur
at liballoc/vec.rs:1700
at libcore/iter/iterator.rs:1476
at librustdoc/fold.rs:110
at librustdoc/fold.rs:37
20: <rustdoc::passes::collect_trait_impls::SyntheticImplCollector<'a, 'tcx, 'rcx, 'cstore> as rustdoc::fold::DocFolder>::fold_item
at librustdoc/fold.rs:100
at librustdoc/passes/collect_trait_impls.rs:178
21: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T, I>>::from_iter
at librustdoc/fold.rs:110
at libcore/iter/mod.rs:1572
at liballoc/vec.rs:1908
at liballoc/vec.rs:1805
at liballoc/vec.rs:1800
22: rustdoc::fold::DocFolder::fold_inner_recur
at liballoc/vec.rs:1700
at libcore/iter/iterator.rs:1476
at librustdoc/fold.rs:110
at librustdoc/fold.rs:37
23: <rustdoc::passes::collect_trait_impls::SyntheticImplCollector<'a, 'tcx, 'rcx, 'cstore> as rustdoc::fold::DocFolder>::fold_item
at librustdoc/fold.rs:100
at librustdoc/passes/collect_trait_impls.rs:178
24: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T, I>>::from_iter
at librustdoc/fold.rs:110
at libcore/iter/mod.rs:1572
at liballoc/vec.rs:1908
at liballoc/vec.rs:1805
at liballoc/vec.rs:1800
25: rustdoc::fold::DocFolder::fold_inner_recur
at liballoc/vec.rs:1700
at libcore/iter/iterator.rs:1476
at librustdoc/fold.rs:110
at librustdoc/fold.rs:37
26: <rustdoc::passes::collect_trait_impls::SyntheticImplCollector<'a, 'tcx, 'rcx, 'cstore> as rustdoc::fold::DocFolder>::fold_item
at librustdoc/fold.rs:100
at librustdoc/passes/collect_trait_impls.rs:178
27: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T, I>>::from_iter
at librustdoc/fold.rs:110
at libcore/iter/mod.rs:1572
at liballoc/vec.rs:1908
at liballoc/vec.rs:1805
at liballoc/vec.rs:1800
28: rustdoc::fold::DocFolder::fold_inner_recur
at liballoc/vec.rs:1700
at libcore/iter/iterator.rs:1476
at librustdoc/fold.rs:110
at librustdoc/fold.rs:37
29: <rustdoc::passes::collect_trait_impls::SyntheticImplCollector<'a, 'tcx, 'rcx, 'cstore> as rustdoc::fold::DocFolder>::fold_item
at librustdoc/fold.rs:100
at librustdoc/passes/collect_trait_impls.rs:178
30: rustdoc::passes::collect_trait_impls::collect_trait_impls
at librustdoc/fold.rs:115
at libcore/option.rs:632
at librustdoc/fold.rs:115
at librustdoc/passes/collect_trait_impls.rs:26
31: rustdoc::core::run_core::{{closure}}::{{closure}}
at librustdoc/core.rs:618
32: rustc::ty::context::tls::enter_context
at librustc_driver/driver.rs:1355
at librustc/ty/context.rs:2077
at librustc/ty/context.rs:2045
at librustc/ty/context.rs:1984
at librustc/ty/context.rs:2044
33: <std::thread::local::LocalKey<T>>::with
at librustc/ty/context.rs:2076
at librustc/ty/context.rs:2034
at libstd/thread/local.rs:300
at libstd/thread/local.rs:254
at librustc/ty/context.rs:2026
at libstd/thread/local.rs:300
at libstd/thread/local.rs:254
34: rustc::ty::context::TyCtxt::create_and_enter
at librustc/ty/context.rs:2018
at librustc/ty/context.rs:2056
at librustc/ty/context.rs:1247
35: rustc_driver::driver::phase_3_run_analysis_passes
at librustc_driver/driver.rs:1263
36: <scoped_tls::ScopedKey<T>>::set
at librustdoc/core.rs:500
at librustc_driver/driver.rs:76
at /cargo/registry/src/github.com-1ecc6299db9ec823/scoped-tls-0.1.2/src/lib.rs:155
37: rustdoc::core::run_core
at librustc_driver/driver.rs:75
at librustdoc/core.rs:407
38: <scoped_tls::ScopedKey<T>>::set
at librustdoc/lib.rs:720
at /cargo/registry/src/github.com-1ecc6299db9ec823/scoped-tls-0.1.2/src/lib.rs:155
at libsyntax/lib.rs:106
at /cargo/registry/src/github.com-1ecc6299db9ec823/scoped-tls-0.1.2/src/lib.rs:155
39: syntax::with_globals
at libsyntax/lib.rs:105
40: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
at librustdoc/lib.rs:716
at librustc_driver/lib.rs:1632
at libstd/panic.rs:313
41: std::panicking::try::do_call
at libstd/panicking.rs:310
42: __rust_maybe_catch_panic
at libpanic_unwind/lib.rs:102
43: rustc_driver::monitor
at libstd/panicking.rs:289
at libstd/panic.rs:392
at librustc_driver/lib.rs:1546
at librustc_driver/lib.rs:1557
at librustc_driver/lib.rs:1631
44: rustdoc::rust_input
at librustdoc/lib.rs:716
45: rustdoc::main_args
at librustdoc/lib.rs:613
at librustdoc/lib.rs:568
46: <scoped_tls::ScopedKey<T>>::set
at librustdoc/lib.rs:115
at libcore/option.rs:424
at librustdoc/lib.rs:115
at /cargo/registry/src/github.com-1ecc6299db9ec823/scoped-tls-0.1.2/src/lib.rs:155
at libsyntax/lib.rs:106
at /cargo/registry/src/github.com-1ecc6299db9ec823/scoped-tls-0.1.2/src/lib.rs:155
47: syntax::with_globals
at libsyntax/lib.rs:105
48: std::panicking::try::do_call
at libstd/thread/mod.rs:409
at libstd/panic.rs:313
at libstd/panicking.rs:310
49: __rust_maybe_catch_panic
at libpanic_unwind/lib.rs:102
50: <F as alloc::boxed::FnBox<A>>::call_box
at libstd/panicking.rs:289
at libstd/panic.rs:392
at libstd/thread/mod.rs:408
at liballoc/boxed.rs:672
51: std::sys_common::thread::start_thread
at liballoc/boxed.rs:682
at libstd/sys_common/thread.rs:24
52: std::sys::unix::thread::Thread::new::thread_start
at libstd/sys/unix/thread.rs:90
53: start_thread
54: __clone
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.31.0-beta.19 (42053f9f0 2018-11-26) running on x86_64-unknown-linux-gnu
error: Could not document `cassava-protos`.
Caused by:
process didn't exit successfully: `rustdoc --edition=2018 --crate-name cassava_protos cassava-protos/src/lib.rs --color always -o /home/dsilvers/dev-git/cassava/target/doc -L dependency=/home/dsilvers/dev-git/cassava/target/debug/deps --extern bytes=/home/dsilvers/dev-git/cassava/target/debug/deps/libbytes-fb189858a5e8e25e.rmeta --extern env_logger=/home/dsilvers/dev-git/cassava/target/debug/deps/libenv_logger-f4b7820618054712.rmeta --extern futures=/home/dsilvers/dev-git/cassava/target/debug/deps/libfutures-dd2213545753c5d5.rmeta --extern http=/home/dsilvers/dev-git/cassava/target/debug/deps/libhttp-e56aa44cd2fbc704.rmeta --extern log=/home/dsilvers/dev-git/cassava/target/debug/deps/liblog-9f5f677bea8cf460.rmeta --extern prost=/home/dsilvers/dev-git/cassava/target/debug/deps/libprost-73ed3ea3ed54066c.rmeta --extern prost_derive=/home/dsilvers/dev-git/cassava/target/debug/deps/libprost_derive-1cbabcb4af8696d1.so --extern prost_types=/home/dsilvers/dev-git/cassava/target/debug/deps/libprost_types-de72d1aaf495dca6.rmeta --extern tokio_core=/home/dsilvers/dev-git/cassava/target/debug/deps/libtokio_core-7a425f1be4ea0a3d.rmeta --extern tower_grpc=/home/dsilvers/dev-git/cassava/target/debug/deps/libtower_grpc-af6e31f62f6f7d6f.rmeta --extern tower_h2=/home/dsilvers/dev-git/cassava/target/debug/deps/libtower_h2-24fd330c8c6ca434.rmeta --extern tower_http=/home/dsilvers/dev-git/cassava/target/debug/deps/libtower_http-11f3e43b41e1b276.rmeta --extern tower_service=/home/dsilvers/dev-git/cassava/target/debug/deps/libtower_service-f89120a37703e3b9.rmeta` (exit code: 1)