Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upIntermittent panic: "already borrowed: BorrowMutError" during jpeg decoding with rayon #17100
Comments
|
Stumbled upon this while trying to reproduce #18438 (on baskino.co) already borrowed: BorrowMutError (thread <unnamed>, at /checkout/src/libcore/result.rs:906)
stack backtrace:
0: 0x55dea30a20dc - backtrace::backtrace::trace::h0f1eee7f17c620ad
1: 0x55dea30a2112 - backtrace::capture::Backtrace::new::h1abdde591da67f3d
2: 0x55dea1e01865 - servo::main::{{closure}}::h2775028620a930e9
3: 0x55dea45b6b26 - std::panicking::rust_panic_with_hook
at /checkout/src/libstd/panicking.rs:612
4: 0x55dea45b6944 - std::panicking::begin_panic<alloc::string::String>
at /checkout/src/libstd/panicking.rs:572
5: 0x55dea45b68b9 - std::panicking::begin_panic_fmt
at /checkout/src/libstd/panicking.rs:522
6: 0x55dea45b684a - std::panicking::rust_begin_panic
at /checkout/src/libstd/panicking.rs:498
7: 0x55dea45f0e30 - core::panicking::panic_fmt
at /checkout/src/libcore/panicking.rs:71
8: 0x55dea2049440 - core::result::unwrap_failed::h189ab83eecd37320
9: 0x55dea201ce52 - std::panicking::try::do_call::h990cd4a4ebd18d7b
10: 0x55dea45bdbcc - panic_unwind::__rust_maybe_catch_panic
at /checkout/src/libpanic_unwind/lib.rs:99
11: 0x55dea207bc55 - <rayon_core::job::HeapJob<BODY> as rayon_core::job::Job>::execute::h58f1f6888686e4f3
12: 0x55dea436dfb9 - rayon_core::registry::WorkerThread::execute::h47e0a1eb413247d4
13: 0x55dea435a3d4 - rayon_core::registry::in_worker::h1d823e1eaf309140
14: 0x55dea4360981 - rayon::iter::internal::bridge_producer_consumer::helper::h0063b7e398d18f39
15: 0x55dea4361eef - jpeg_decoder::decoder::compute_image::h3e89c4290ec8970a
16: 0x55dea42f7f65 - <jpeg_decoder::decoder::Decoder<R>>::decode_internal::h380cbed05ef22a7c
17: 0x55dea43421d4 - image::dynimage::load::habd474967672983d
18: 0x55dea434c5ff - image::dynimage::load_from_memory::h75cb70335be4211b
19: 0x55dea42d83ee - net_traits::image::base::load_from_memory::had48ec70d262c64c
20: 0x55dea228acb3 - <net::image_cache::ImageCacheImpl as net_traits::image_cache::ImageCache>::find_image_or_metadata::hac327d274896afbf
21: 0x55dea2118cfa - layout::context::LayoutContext::get_or_request_image_or_meta::hd4579bc09bd18139
22: 0x55dea2071b6c - layout::fragment::ImageFragmentInfo::new::ha4255c1f346251ce
23: 0x55dea208dae1 - <layout::construct::FlowConstructor<'a, ConcreteThreadSafeLayoutNode>>::build_fragment_for_block::h55ac4afde2679695
24: 0x55dea200222c - <layout::construct::FlowConstructor<'a, ConcreteThreadSafeLayoutNode> as layout::traversal::PostorderNodeMutTraversal<ConcreteThreadSafeLayoutNode>>::process::he084db8e919368b1
25: 0x55dea205ac23 - style::traversal::DomTraversal::handle_postorder_traversal::h9480adf36bfaf936
26: 0x55dea2059bd6 - style::parallel::traverse_nodes::h3517e63f994a1bb7
27: 0x55dea201cab7 - std::panicking::try::do_call::h990cd4a4ebd18d7b
28: 0x55dea45bdbcc - panic_unwind::__rust_maybe_catch_panic
at /checkout/src/libpanic_unwind/lib.rs:99
29: 0x55dea207bc55 - <rayon_core::job::HeapJob<BODY> as rayon_core::job::Job>::execute::h58f1f6888686e4f3
30: 0x55dea436dd74 - rayon_core::registry::WorkerThread::wait_until::h1e427f463111f332
31: 0x55dea43692e2 - std::sys_common::backtrace::__rust_begin_short_backtrace::h694e208e4b2971b1
32: 0x55dea43699fb - std::panicking::try::do_call::haee83498f519912b
33: 0x55dea45bdbcc - panic_unwind::__rust_maybe_catch_panic
at /checkout/src/libpanic_unwind/lib.rs:99
34: 0x55dea436af56 - <F as alloc::boxed::FnBox<A>>::call_box::hd770c4f01669af04
35: 0x55dea45b57ab - alloc::boxed::{{impl}}::call_once<(),()>
at /checkout/src/liballoc/boxed.rs:692
- std::sys_common::thread::start_thread
at /checkout/src/libstd/sys_common/thread.rs:21
- std::sys::imp::thread::{{impl}}::new::thread_start
at /checkout/src/libstd/sys/unix/thread.rs:84
36: 0x7fc38303c493 - start_thread
37: 0x7fc382b69abe - __clone
38: 0x0 - <unknown>
ERROR:servo: already borrowed: BorrowMutErrorEDIT: This also happened on ddmix.net (reproduced once in five runs), ticketmonster.co.kr and euronews.com (neither reproduced). |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I saw this panic just once, while testing parallel layout on the
myspacepage in the Talos TP5N data set, in a release build with a smaller parallel chunk size (i.e., increased parallelism). It might be a race condition that's made more likely by higher thread count or higher system load.Full stack trace: