typst / hayagriva

Rusty bibliography management.
Apache License 2.0
335 stars 53 forks source link

[0.12.0] Compiler Crash at BibTeX Items with Open `pages` Range #241

Open wrenger opened 4 days ago

wrenger commented 4 days ago

Description

Lets just start with a minimal example:

Oh look quicksort @hoare:61:cacm.

#bibliography("min.bib")

The min.bib file.

@article{hoare:61:cacm,
  author    = {Hoare, C. A. R.},
  title     = {Algorithm 64: Quicksort},
  journal   = {Communications of the ACM},
  volume    = 4,
  number    = 7,
  month     = jul,
  year      = 1961,
  issn      = {0001-0782},
  pages     = {321--},
  doi       = {10.1145/366622.366644},
  publisher = {ACM Press},
  address   = {New York, NY, USA}
}

Compiling this with typst 0.12.0 (737895d7) results in a panic:

$ typst c test.typ      
thread 'main' panicked at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/str/mod.rs:659:21:
byte index 4 is not a char boundary; it is inside '–' (bytes 3..6) of `321–`
Full Backtrace ``` stack backtrace: 0: 0x556d05c7c1d5 - std::backtrace_rs::backtrace::libunwind::trace::h649ab3318d3445c5 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/../../backtrace/src/backtrace/libunwind.rs:116:5 1: 0x556d05c7c1d5 - std::backtrace_rs::backtrace::trace_unsynchronized::hf4bb60c3387150c3 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 2: 0x556d05c7c1d5 - std::sys::backtrace::_print_fmt::hd9186c800e44bd00 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/sys/backtrace.rs:65:5 3: 0x556d05c7c1d5 - ::fmt::h1b9dad2a88e955ff at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/sys/backtrace.rs:40:26 4: 0x556d05ca9d2b - core::fmt::rt::Argument::fmt::h351a7824f737a6a0 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/fmt/rt.rs:173:76 5: 0x556d05ca9d2b - core::fmt::write::h4b5a1270214bc4a7 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/fmt/mod.rs:1182:21 6: 0x556d05c7853f - std::io::Write::write_fmt::hd04af345a50c312d at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/io/mod.rs:1827:15 7: 0x556d05c7d4d1 - std::sys::backtrace::BacktraceLock::print::h68d41b51481bce5c at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/sys/backtrace.rs:43:9 8: 0x556d05c7d4d1 - std::panicking::default_hook::{{closure}}::h96ab15e9936be7ed at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:269:22 9: 0x556d05c7d1ac - std::panicking::default_hook::h3cacb9c27561ad33 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:296:9 10: 0x556d05c7db31 - std::panicking::rust_panic_with_hook::hfe205f6954b2c97b at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:800:13 11: 0x556d05c7d997 - std::panicking::begin_panic_handler::{{closure}}::h6cb44b3a50f28c44 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:674:13 12: 0x556d05c7c699 - std::sys::backtrace::__rust_end_short_backtrace::hf1c1f2a92799bb0e at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/sys/backtrace.rs:168:18 13: 0x556d05c7d624 - rust_begin_unwind at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:665:5 14: 0x556d04129773 - core::panicking::panic_fmt::h3d8fc78294164da7 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/panicking.rs:74:14 15: 0x556d05cad6ca - core::str::slice_error_fail_rt::h23607b8a3a6c2267 16: 0x556d04129fba - core::str::slice_error_fail::h402ef64b20c243ef at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/str/mod.rs:89:5 17: 0x556d0574a211 - core::str::::split_at::h8ede77c060689f5a at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/str/mod.rs:659:21 18: 0x556d0574a211 - as core::iter::traits::iterator::Iterator>::next::had2f6211299de8dd at /home/lars/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hayagriva-0.8.0/src/types/page.rs:388:44 19: 0x556d0574a211 - core::iter::traits::iterator::Iterator::try_fold::h544344d51fdbee84 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/iter/traits/iterator.rs:2409:29 20: 0x556d0574a211 - as core::iter::traits::iterator::Iterator>::try_fold::h1438696f477482a8 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/iter/adapters/map.rs:122:9 21: 0x556d057200ba - as core::iter::traits::iterator::Iterator>::try_fold::h25bcfa6503a5974d at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/iter/adapters/mod.rs:204:9 22: 0x556d057200ba - core::iter::traits::iterator::Iterator::try_for_each::h8a824c5fe3295334 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/iter/traits/iterator.rs:2472:9 23: 0x556d057200ba - as core::iter::traits::iterator::Iterator>::next::h3bdcc50069221423 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/iter/adapters/mod.rs:187:14 24: 0x556d057200ba - as alloc::vec::spec_from_iter_nested::SpecFromIterNested>::from_iter::h53e22bb9c239b6da at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/alloc/src/vec/spec_from_iter_nested.rs:26:32 25: 0x556d057200ba - as alloc::vec::spec_from_iter::SpecFromIter>::from_iter::h091600ae42d959af at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/alloc/src/vec/spec_from_iter.rs:33:9 26: 0x556d05773926 - as core::iter::traits::collect::FromIterator>::from_iter::h982f033eade7b9be at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/alloc/src/vec/mod.rs:2977:9 27: 0x556d05773926 - core::iter::traits::iterator::Iterator::collect::h00aa495f2c943db9 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/iter/traits/iterator.rs:2005:9 28: 0x556d05773926 - as core::iter::traits::collect::FromIterator>>::from_iter::{{closure}}::h118f3500fb952a0a at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/result.rs:1960:51 29: 0x556d05773926 - core::iter::adapters::try_process::h9850aa7b48b60419 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/iter/adapters/mod.rs:173:17 30: 0x556d05775e8a - as core::iter::traits::collect::FromIterator>>::from_iter::hd593434cad9ecca3 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/result.rs:1960:9 31: 0x556d05775e8a - core::iter::traits::iterator::Iterator::collect::h1b0b12e09530db5e at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/iter/traits/iterator.rs:2005:9 32: 0x556d05775e8a - ::from_str::he0814c798c25a8a4 at /home/lars/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hayagriva-0.8.0/src/types/page.rs:144:18 33: 0x556d05775e8a - core::str::::parse::ha0f6d51a1cddc42e at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/str/mod.rs:2416:9 34: 0x556d05775e8a - hayagriva::types::MaybeTyped::infallible_from_str::hc1a70acc94e63b89 at /home/lars/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hayagriva-0.8.0/src/types/mod.rs:361:17 35: 0x556d056ec6bd - hayagriva::interop:: for hayagriva::Entry>::try_from::h0b1c6ff34c3bed7f at /home/lars/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hayagriva-0.8.0/src/interop.rs:509:21 36: 0x556d05720aac - >::try_into::h2ecc87c05c6f99aa at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/convert/mod.rs:798:9 37: 0x556d05720aac - core::ops::function::FnMut::call_mut::h2e118a6300216ae1 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/ops/function.rs:166:5 38: 0x556d05720aac - core::iter::adapters::map::map_fold::{{closure}}::h5840257aa1beb292 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/iter/adapters/map.rs:89:28 39: 0x556d05720aac - as core::iter::traits::iterator::Iterator>::fold::h1f272b836c97358a at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/slice/iter/macros.rs:232:27 40: 0x556d05720aac - as core::iter::traits::iterator::Iterator>::fold::h3ca0e754a56ddb71 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/iter/adapters/map.rs:129:9 41: 0x556d05720aac - core::iter::traits::iterator::Iterator::for_each::he170ad8ed22b0282 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/iter/traits/iterator.rs:818:9 42: 0x556d05720aac - alloc::vec::Vec::extend_trusted::h24ed6aa4faf0d843 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/alloc/src/vec/mod.rs:3113:17 43: 0x556d05720aac - as alloc::vec::spec_extend::SpecExtend>::spec_extend::he542ed323ff7c16a at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/alloc/src/vec/spec_extend.rs:26:9 44: 0x556d05720aac - as alloc::vec::spec_from_iter_nested::SpecFromIterNested>::from_iter::h86db422aac8b2543 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/alloc/src/vec/spec_from_iter_nested.rs:62:9 45: 0x556d05720aac - as alloc::vec::spec_from_iter::SpecFromIter>::from_iter::ha277f59a91e09309 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/alloc/src/vec/spec_from_iter.rs:33:9 46: 0x556d0575a9c9 - as core::iter::traits::collect::FromIterator>::from_iter::h432abe943d8056ff at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/alloc/src/vec/mod.rs:2977:9 47: 0x556d0575a9c9 - core::iter::traits::iterator::Iterator::collect::h345fa0c022f7ccf6 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/iter/traits/iterator.rs:2005:9 48: 0x556d0575a9c9 - hayagriva::io::from_biblatex::h219239c4a5f55b8a at /home/lars/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hayagriva-0.8.0/src/io.rs:70:52 49: 0x556d0575a8a8 - hayagriva::io::from_biblatex_str::h77e4a1c929e7b198 at /home/lars/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hayagriva-0.8.0/src/io.rs:62:5 50: 0x556d0500a0cb - typst::model::bibliography::Bibliography::load::{{closure}}::h7c25644bc75eae6c at /home/lars/Documents/project/typst/crates/typst/src/model/bibliography.rs:340:26 51: 0x556d0480de92 - comemo::cache::memoized::ha5a60b0f415e49bf at /home/lars/.cargo/registry/src/index.crates.io-6f17d22bba15001f/comemo-0.4.0/src/cache.rs:61:18 52: 0x556d051e3209 - typst::model::bibliography::Bibliography::load::h89adad77e8eb49b1 at /home/lars/Documents/project/typst/crates/typst/src/model/bibliography.rs:322:5 53: 0x556d051d9027 - typst::model::bibliography::Bibliography::parse::h1ee024477e25f30a at /home/lars/Documents/project/typst/crates/typst/src/model/bibliography.rs:316:28 54: 0x556d051e1bb0 - typst::model::bibliography::_::::construct::h1a3ddf4ae8e33ddd at /home/lars/Documents/project/typst/crates/typst/src/model/bibliography.rs:94:37 55: 0x556d04cf1eb2 - typst::foundations::element::Element::construct::h305411c7fbfe9ee6 at /home/lars/Documents/project/typst/crates/typst/src/foundations/element.rs:60:9 56: 0x556d04bc5b28 - typst::foundations::func::Func::call_impl::hde2243241646aa8d at /home/lars/Documents/project/typst/crates/typst/src/foundations/func.rs:295:29 57: 0x556d05100571 - typst::foundations::func::Func::call::h0ed76d4cc98e20a4 at /home/lars/Documents/project/typst/crates/typst/src/foundations/func.rs:277:9 58: 0x556d0464ee51 - typst::eval::call::::eval::{{closure}}::h85195256e0f1d75c at /home/lars/Documents/project/typst/crates/typst/src/eval/call.rs:59:13 59: 0x556d04a149b5 - stacker::maybe_grow::h6393fcf6411f2f1b at /home/lars/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.17/src/lib.rs:55:9 60: 0x556d04a149b5 - typst::eval::call::::eval::h98fdfe1f94bf5b14 at /home/lars/Documents/project/typst/crates/typst/src/eval/call.rs:68:9 61: 0x556d04a16af8 - typst::eval::code::::eval::h76d94e6c291b05eb at /home/lars/Documents/project/typst/crates/typst/src/eval/code.rs:119:34 62: 0x556d0516450d - typst::eval::markup::eval_markup::ha27658387ff68d9a at /home/lars/Documents/project/typst/crates/typst/src/eval/markup.rs:52:27 63: 0x556d05164a03 - typst::eval::markup::eval_markup::ha27658387ff68d9a at /home/lars/Documents/project/typst/crates/typst/src/eval/markup.rs:49:28 64: 0x556d04a1c28c - typst::eval::markup::::eval::h104966fb1e7ea0ff at /home/lars/Documents/project/typst/crates/typst/src/eval/markup.rs:21:9 65: 0x556d04b316ff - typst::eval::eval::{{closure}}::hef8592e565ca1a84 at /home/lars/Documents/project/typst/crates/typst/src/eval/mod.rs:74:18 66: 0x556d0480b3ba - comemo::cache::memoized::h8233a4bfd6b93e73 at /home/lars/.cargo/registry/src/index.crates.io-6f17d22bba15001f/comemo-0.4.0/src/cache.rs:61:18 67: 0x556d0464180f - typst::eval::eval::h350f1f643905727a at /home/lars/Documents/project/typst/crates/typst/src/eval/mod.rs:35:1 68: 0x556d0463aac4 - typst::compile_impl::h25887e352ad5cdec at /home/lars/Documents/project/typst/crates/typst/src/lib.rs:121:19 69: 0x556d0463db05 - typst::compile::h9f60d8b00f19804d at /home/lars/Documents/project/typst/crates/typst/src/lib.rs:89:18 70: 0x556d041f7a09 - typst::compile::compile_once::h36e4bf5fe86da75a at /home/lars/Documents/project/typst/crates/typst-cli/src/compile.rs:122:39 71: 0x556d0416edff - typst::compile::compile::{{closure}}::h9b5b38c047817b8e at /home/lars/Documents/project/typst/crates/typst-cli/src/compile.rs:104:38 72: 0x556d0419b991 - typst::timings::Timer::record::haa6b6fe42d59e53a at /home/lars/Documents/project/typst/crates/typst-cli/src/timings.rs:48:23 73: 0x556d041f474a - typst::compile::compile::hab53e0c072d69390 at /home/lars/Documents/project/typst/crates/typst-cli/src/compile.rs:104:5 74: 0x556d0417a2a8 - typst::dispatch::h4d37a640067f27d2 at /home/lars/Documents/project/typst/crates/typst-cli/src/main.rs:62:38 75: 0x556d04179ee3 - typst::main::h2ae55df6c093cc43 at /home/lars/Documents/project/typst/crates/typst-cli/src/main.rs:47:15 76: 0x556d041b712b - core::ops::function::FnOnce::call_once::hb269c3cc58acec1d at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/ops/function.rs:250:5 77: 0x556d041dad6e - std::sys::backtrace::__rust_begin_short_backtrace::hd7caef02fbe4fd9c at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/sys/backtrace.rs:152:18 78: 0x556d0421ecc1 - std::rt::lang_start::{{closure}}::hd003fd9b246f1c9a at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/rt.rs:162:18 79: 0x556d05c6f6f0 - core::ops::function::impls:: for &F>::call_once::h2feec6363bd28ad6 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/ops/function.rs:284:13 80: 0x556d05c6f6f0 - std::panicking::try::do_call::h71b24ad3a8e797d5 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:557:40 81: 0x556d05c6f6f0 - std::panicking::try::h8412d1bfb4bcbcc1 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:521:19 82: 0x556d05c6f6f0 - std::panic::catch_unwind::h2053d3ee5bd8db53 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panic.rs:350:14 83: 0x556d05c6f6f0 - std::rt::lang_start_internal::{{closure}}::h82eb98fe4f8e75b8 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/rt.rs:141:48 84: 0x556d05c6f6f0 - std::panicking::try::do_call::h793dba66a0bbd3de at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:557:40 85: 0x556d05c6f6f0 - std::panicking::try::he09b629b3ba06846 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:521:19 86: 0x556d05c6f6f0 - std::panic::catch_unwind::h7964c913fc871155 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panic.rs:350:14 87: 0x556d05c6f6f0 - std::rt::lang_start_internal::h5e7c81cecd7f0954 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/rt.rs:141:20 88: 0x556d0421ec9a - std::rt::lang_start::ha0e378a401183af8 at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/rt.rs:161:17 89: 0x556d0417a8ee - main 90: 0x7f3078239088 - __libc_start_call_main 91: 0x7f307823914b - __libc_start_main@@GLIBC_2.34 92: 0x556d0412a265 - _start 93: 0x0 - ```

This was not a problem in typst 0.11

Reproduction URL

No response

Operating system

Linux, macOS

Typst version

wrenger commented 2 days ago

Any news on this issue? I cannot really use our larger bibtex files due to this bug, which prevents me from switching to typst 0.12.