Skip to content

rustdoc crashes parsing strange doc-comment on 1.36 #62571

Closed
@bobbobbio

Description

@bobbobbio

After upgrading to 1.36 rustdoc is crashing like this when run on my crate:

thread 'rustc' panicked at 'unexpected item body MaybeEmphasis(2, true, false)', /work/toolchain/packages/rust/rustc-1.36.0-src/vendor/pulldown-cmark/src/parse.rs:2418:14                                                                                                                                                                            
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.                                                                                                                                                                                                                                                               
stack backtrace:                                                                                                                                                                                                                                                                                                                                      
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace                                                                                                                                                                                                                                                                                       
             at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:39                                                                                                                                                                                                                                                                                     
   1: std::sys_common::backtrace::print                                                                                                                                                                                                                                                                                                               
             at src/libstd/sys_common/backtrace.rs:71                                                                                                                                                                                                                                                                                                 
             at src/libstd/sys_common/backtrace.rs:59                                                                                                                                                                                                                                                                                                 
   2: std::panicking::default_hook::{{closure}}                                                                                                                                                                                                                                                                                                       
             at src/libstd/panicking.rs:197                                                                                                                                                                                                                                                                                                           
   3: std::panicking::default_hook                                                                                                                                                                                                                                                                                                                    
             at src/libstd/panicking.rs:211                                                                                                                                                                                                                                                                                                           
   4: std::panicking::rust_panic_with_hook                                                                                                                                                                                                                                                                                                            
             at src/libstd/panicking.rs:478                                                                                                                                                                                                                                                                                                           
   5: std::panicking::continue_panic_fmt                                                                                                                                                                                                                                                                                                              
             at src/libstd/panicking.rs:381                                                                                                                                                                                                                                                                                                           
   6: std::panicking::begin_panic_fmt                                                                                                                                                                                                                                                                                                                 
             at src/libstd/panicking.rs:336                                                                                                                                                                                                                                                                                                           
   7: pulldown_cmark::parse::item_to_event                                                                                                                                                                                                                                                                                                            
             at /work/toolchain/packages/rust/rustc-1.36.0-src/vendor/pulldown-cmark/src/parse.rs:2418                                                                                                                                                                                                                                                
   8: <pulldown_cmark::parse::Parser as core::iter::traits::iterator::Iterator>::next                                                                                                                                                                                                                                                                 
             at /work/toolchain/packages/rust/rustc-1.36.0-src/vendor/pulldown-cmark/src/parse.rs:2487                                                                                                                                                                                                                                                
   9: rustdoc::html::markdown::find_testable_code                                                                                                                                                                                                                                                                                                     
             at src/librustdoc/html/markdown.rs:539                                                                                                                                                                                                                                                                                                   
  10: rustdoc::passes::look_for_tests                                                                                                                                                                                                                                                                                                                 
             at src/librustdoc/passes/mod.rs:338                                                                                                                                                                                                                                                                                                      
  11: <rustdoc::passes::private_items_doc_tests::PrivateItemDocTestLinter as rustdoc::fold::DocFolder>::fold_item                                                                                                                                                                                                                                     
             at src/librustdoc/passes/private_items_doc_tests.rs:35                                                                                                                                                                                                                                                                                   
  12: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter                                                                                                                                                                                                                                                                                  
             at src/librustdoc/fold.rs:51                                                                                                                                                                                                                                                                                                             
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/adapters/mod.rs:826                                                                                                                                                                                                                                                   
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/traits/iterator.rs:1572                                                                                                                                                                                                                                               
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/adapters/mod.rs:826                                                                                                                                                                                                                                                   
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/traits/iterator.rs:1609                                                                                                                                                                                                                                               
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/adapters/mod.rs:812                                                                                                                                                                                                                                                   
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/liballoc/vec.rs:1939                                                                                                                                                                                                                                                               
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/liballoc/vec.rs:1836                                                                                                                                                                                                                                                               
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/liballoc/vec.rs:1831                                                                                                                                                                                                                                                               
  13: rustdoc::fold::DocFolder::fold_inner_recur                                                                                                                                                                                                                                                                                                      
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/liballoc/vec.rs:1731                                                                                                                                                                                                                                                               
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/traits/iterator.rs:1465                                                                                                                                                                                                                                               
             at src/librustdoc/fold.rs:100                                                                                                                                                                                                                                                                                                            
             at src/librustdoc/fold.rs:27                                                                                                                                                                                                                                                                                                             
  14: <rustdoc::passes::private_items_doc_tests::PrivateItemDocTestLinter as rustdoc::fold::DocFolder>::fold_item                                                                                                                                                                                                                                     
             at src/librustdoc/fold.rs:90                                                                                                                                                                                                                                                                                                             
             at src/librustdoc/passes/private_items_doc_tests.rs:37                                                                                                                                                                                                                                                                                   
  15: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter                                                                                                                                                                                                                                                                                  
             at src/librustdoc/fold.rs:51                                                                                                                                                                                                                                                                                                             
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/adapters/mod.rs:826                                                                                                                                                                                                                                                   
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/traits/iterator.rs:1572                                                                                                                                                                                                                                               
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/adapters/mod.rs:826
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/traits/iterator.rs:1609
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/adapters/mod.rs:812
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/liballoc/vec.rs:1939
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/liballoc/vec.rs:1836
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/liballoc/vec.rs:1831
13: rustdoc::fold::DocFolder::fold_inner_recur                                                                                                                                                                                                                                                                                                      
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/liballoc/vec.rs:1731                                                                                                                                                                                                                                                               
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/traits/iterator.rs:1465                                                                                                                                                                                                                                               
             at src/librustdoc/fold.rs:100                                                                                                                                                                                                                                                                                                            
             at src/librustdoc/fold.rs:27                                                                                                                                                                                                                                                                                                             
  14: <rustdoc::passes::private_items_doc_tests::PrivateItemDocTestLinter as rustdoc::fold::DocFolder>::fold_item                                                                                                                                                                                                                                     
             at src/librustdoc/fold.rs:90                                                                                                                                                                                                                                                                                                             
             at src/librustdoc/passes/private_items_doc_tests.rs:37                                                                                                                                                                                                                                                                                   
  15: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter                                                                                                                                                                                                                                                                                  
             at src/librustdoc/fold.rs:51                                                                                                                                                                                                                                                                                                             
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/adapters/mod.rs:826                                                                                                                                                                                                                                                   
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/traits/iterator.rs:1572                                                                                                                                                                                                                                               
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/adapters/mod.rs:826
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/traits/iterator.rs:1609
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/adapters/mod.rs:812
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/liballoc/vec.rs:1939
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/liballoc/vec.rs:1836
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/liballoc/vec.rs:1831
  16: rustdoc::fold::DocFolder::fold_inner_recur
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/liballoc/vec.rs:1731
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/iter/traits/iterator.rs:1465
             at src/librustdoc/fold.rs:100
             at src/librustdoc/fold.rs:27
  17: <rustdoc::passes::private_items_doc_tests::PrivateItemDocTestLinter as rustdoc::fold::DocFolder>::fold_item
             at src/librustdoc/fold.rs:90
             at src/librustdoc/passes/private_items_doc_tests.rs:37
  18: rustdoc::passes::private_items_doc_tests::check_private_items_doc_tests
             at src/librustdoc/fold.rs:105
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/option.rs:624
             at src/librustdoc/fold.rs:105
             at src/librustdoc/passes/private_items_doc_tests.rs:27
  19: rustc::ty::context::tls::enter_global
             at src/librustdoc/core.rs:466
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/librustc_interface/passes.rs:807
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/librustc/ty/context.rs:2000
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/librustc/ty/context.rs:1967
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/librustc/ty/context.rs:1900
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/librustc/ty/context.rs:1966
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/librustc/ty/context.rs:1999
  20: rustc_interface::passes::BoxedGlobalCtxt::access::{{closure}}
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/librustc_interface/passes.rs:807
             at /work/toolchain/packages/rust/rustc-1.36.0-src/<::rustc_data_structures::box_region::declare_box_region_type macros>:17
  21: rustc_interface::passes::create_global_ctxt::{{closure}}
             at src/librustc_interface/passes.rs:873
  22: rustc_interface::interface::run_compiler_in_existing_thread_pool
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/liballoc/boxed.rs:910
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/librustc_data_structures/box_region.rs:52
             at /work/toolchain/packages/rust/rustc-1.36.0-src/<::rustc_data_structures::box_region::declare_box_region_type macros>:19
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/librustc_interface/passes.rs:807
             at src/librustdoc/core.rs:355
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/librustc_interface/interface.rs:122
  23: rustdoc::core::run_core
             at src/librustdoc/core.rs:341
  24: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at src/librustdoc/lib.rs:455
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libstd/panic.rs:315
  25: std::panicking::try::do_call
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libstd/panicking.rs:293
  26: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:85
  27: rustc_driver::report_ices_to_stderr_if_any
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libstd/panicking.rs:272
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libstd/panic.rs:394
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/librustc_driver/lib.rs:1115
  28: rustdoc::main_args
             at src/librustdoc/lib.rs:452
             at src/librustdoc/lib.rs:408
  29: std::thread::local::LocalKey<T>::with
             at src/librustdoc/lib.rs:98
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libcore/option.rs:416
             at src/librustdoc/lib.rs:98
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/librustc_interface/util.rs:186
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/librustc/ty/context.rs:1955
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libstd/thread/local.rs:299
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libstd/thread/local.rs:245
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/librustc/ty/context.rs:1947
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libstd/thread/local.rs:299
             at /work/toolchain/packages/rust/rustc-1.36.0-src/src/libstd/thread/local.rs:245

It doesn't produce the line that caused it to crash and the crate is quite large.

It seems to correspond with perhaps this issue in pulldown-cmark:
pulldown-cmark/pulldown-cmark#306

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.I-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