Skip to content

Panic while documenting generated code #56296

Closed
@kinnison

Description

@kinnison

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-synthetic-implsArea: Synthetic impls, used by rustdoc to document auto traits and traits with blanket implsI-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions