Open Bug 1813811 Opened 1 year ago Updated 1 month ago

ThreadSanitizer: lock-order-inversion (potential deadlock) [@ mozilla::dom::FontFaceSetImpl::OnFontFaceStatusChanged]

Categories

(Core :: CSS Parsing and Computation, defect)

defect

Tracking

()

Tracking Status
firefox-esr102 --- unaffected
firefox110 --- wontfix
firefox111 --- wontfix

People

(Reporter: tsmith, Unassigned, NeedInfo)

References

(Blocks 3 open bugs)

Details

(Keywords: regression, testcase, Whiteboard: [bugmon:bisected,confirmed])

Attachments

(1 file)

Attached file testcase.html

Found while fuzzing m-c 20230130-49ac19f1e046 (--enable-thread-sanitizer --enable-fuzzing)

To reproduce via Grizzly Replay:

$ pip install fuzzfetch grizzly-framework
$ python -m fuzzfetch -t --fuzzing -n firefox
$ python -m grizzly.replay ./firefox/firefox testcase.html --headless
WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=127678)
  Cycle in lock order graph: M0 (0x7b10000074c0) => M1 (0x7b44000c6768) => M0

  Mutex M1 acquired here while holding mutex M0 in main thread:
    #0 pthread_mutex_lock /builds/worker/fetches/llvm-project/compiler-rt/lib/tsan/rtl/../../sanitizer_common/sanitizer_common_interceptors.inc:4457:3 (firefox-bin+0xdfdaa) (BuildId: 0e55c6bbf2c45b5a2aad7437135dc3fe7f2f4e96)
    #1 mozilla::RecursiveMutex::LockInternal() /builds/worker/checkouts/gecko/xpcom/threads/RecursiveMutex.cpp:71:3 (libxul.so+0x42f6895) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #2 Lock /builds/worker/workspace/obj-build/dist/include/mozilla/RecursiveMutex.h:31:42 (libxul.so+0x960ce10) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #3 RecursiveMutexAutoLock /builds/worker/workspace/obj-build/dist/include/mozilla/RecursiveMutex.h:80:22 (libxul.so+0x960ce10)
    #4 mozilla::dom::FontFaceSetImpl::OnFontFaceStatusChanged(mozilla::dom::FontFaceImpl*) /builds/worker/checkouts/gecko/layout/style/FontFaceSetImpl.cpp:716:26 (libxul.so+0x960ce10)
    #5 SetStatus /builds/worker/checkouts/gecko/layout/style/FontFaceImpl.cpp:384:19 (libxul.so+0x960048b) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #6 mozilla::dom::FontFaceImpl::Entry::SetLoadState(gfxUserFontEntry::UserFontLoadState) /builds/worker/checkouts/gecko/layout/style/FontFaceImpl.cpp:758:13 (libxul.so+0x960048b)
    #7 LoadNextSrc /builds/worker/checkouts/gecko/gfx/thebes/gfxUserFontSet.cpp:354:5 (libxul.so+0x59c5178) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #8 Load /builds/worker/checkouts/gecko/gfx/thebes/gfxUserFontSet.cpp:790:5 (libxul.so+0x59c5178)
    #9 gfxFontGroup::GetFirstValidFont(unsigned int, mozilla::StyleGenericFontFamily*, bool*) /builds/worker/checkouts/gecko/gfx/thebes/gfxTextRun.cpp:2338:16 (libxul.so+0x59c5178)
    #10 gfxFontGroup::GetMetricsForCSSUnits(nsFontMetrics::FontOrientation) /builds/worker/checkouts/gecko/gfx/thebes/gfxTextRun.cpp:3846:26 (libxul.so+0x59cc5f6) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #11 Gecko_GetFontMetrics /builds/worker/checkouts/gecko/layout/style/GeckoBindings.cpp:1445:29 (libxul.so+0x961eae6) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #12 style::gecko::media_queries::Device::query_font_metrics::he66577794f16bc0f /builds/worker/checkouts/gecko/servo/components/style/gecko/media_queries.rs:193:13 (libxul.so+0xdbed327) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #13 style::values::computed::Context::query_font_metrics::h02b716c5409192fa /builds/worker/checkouts/gecko/servo/components/style/values/computed/mod.rs:350:9 (libxul.so+0xdbed327)
    #14 style::values::specified::length::FontRelativeLength::reference_font_size_and_length::query_font_metrics::h4bca9bae7004989e /builds/worker/checkouts/gecko/servo/components/style/values/specified/length.rs:157:13 (libxul.so+0xdbec995) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #15 style::values::specified::length::FontRelativeLength::reference_font_size_and_length::h3efcbdb74cb0d3a3 /builds/worker/checkouts/gecko/servo/components/style/values/specified/length.rs:177:21 (libxul.so+0xdbec995)
    #16 style::values::specified::length::FontRelativeLength::to_computed_value::h59250651026f93e6 /builds/worker/checkouts/gecko/servo/components/style/values/specified/length.rs:135:40 (libxul.so+0xdbec995)
    #17 style::values::specified::length::FontRelativeLength::reference_font_size_and_length::query_font_metrics::h4bca9bae7004989e /builds/worker/checkouts/gecko/servo/components/style/values/specified/length.rs:157:13 (libxul.so+0xdbec995) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #18 style::values::specified::length::FontRelativeLength::reference_font_size_and_length::h3efcbdb74cb0d3a3 /builds/worker/checkouts/gecko/servo/components/style/values/specified/length.rs:177:21 (libxul.so+0xdbec995)
    #19 style::values::specified::length::FontRelativeLength::to_computed_value::h59250651026f93e6 /builds/worker/checkouts/gecko/servo/components/style/values/specified/length.rs:135:40 (libxul.so+0xdbec995)
    #20 style::values::computed::length::_$LT$impl$u20$style..values..specified..length..NoCalcLength$GT$::to_computed_value_with_base_size::hef046ad946904d2e /builds/worker/checkouts/gecko/servo/components/style/values/computed/length.rs:52:17 (libxul.so+0xdbe661a) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #21 _$LT$style..values..generics..length..GenericSize$LT$LengthPercent$GT$$u20$as$u20$style..values..computed..ToComputedValue$GT$::to_computed_value::hee6582e50000487e /builds/worker/checkouts/gecko/servo/components/style/values/generics/length.rs (libxul.so+0xdbef1ef) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #22 style::properties::longhands::width::cascade_property::hd3b83b45196432fd /builds/worker/workspace/obj-build/x86_64-unknown-linux-gnu/release/build/style-df7ae44ea995b53f/out/longhands/position.rs:2690:32 (libxul.so+0xdbcda36) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #23 style::properties::cascade::Cascade::apply_declaration::h3f825bdfa6cd8da4 /builds/worker/checkouts/gecko/servo/components/style/properties/cascade.rs:607:9 (libxul.so+0xd4de790) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #24 style::properties::cascade::Cascade::apply_properties::he068cd8f227c20c8 /builds/worker/checkouts/gecko/servo/components/style/properties/cascade.rs:712:13 (libxul.so+0xd4de790)
    #25 style::properties::cascade::apply_declarations::hffb68bc7cfaf4b16 /builds/worker/checkouts/gecko/servo/components/style/properties/cascade.rs:372:5 (libxul.so+0xd4dd086) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #26 style::properties::cascade::cascade_rules::h3ce76a8c3037ebb8 /builds/worker/checkouts/gecko/servo/components/style/properties/cascade.rs:197:5 (libxul.so+0xd4dd086)
    #27 style::properties::cascade::cascade::hee89e176a97a33bd /builds/worker/checkouts/gecko/servo/components/style/properties/cascade.rs:73:5 (libxul.so+0xd4dc2e8) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #28 style::stylist::Stylist::cascade_style_and_visited::hd890327d03171a1e /builds/worker/checkouts/gecko/servo/components/style/stylist.rs:1089:9 (libxul.so+0xd4dc2e8)
    #29 style::style_resolver::StyleResolverForElement$LT$E$GT$::cascade_style_and_visited::h037f65ff8d39dc76 /builds/worker/checkouts/gecko/servo/components/style/style_resolver.rs:347:22 (libxul.so+0xd4db7f8) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #30 style::style_resolver::StyleResolverForElement$LT$E$GT$::cascade_primary_style::h21cd03939518ca34 /builds/worker/checkouts/gecko/servo/components/style/style_resolver.rs:244:20 (libxul.so+0xd4f0190) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #31 style::style_resolver::StyleResolverForElement$LT$E$GT$::resolve_primary_style::h1a45443f1d746e95 /builds/worker/checkouts/gecko/servo/components/style/style_resolver.rs:203:9 (libxul.so+0xd4db3d0) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #32 style::style_resolver::StyleResolverForElement$LT$E$GT$::resolve_style::h8a83431831140ff5 /builds/worker/checkouts/gecko/servo/components/style/style_resolver.rs:260:29 (libxul.so+0xd4daf3e) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #33 style::style_resolver::StyleResolverForElement$LT$E$GT$::resolve_style_with_default_parents::_$u7b$$u7b$closure$u7d$$u7d$::hd6bfaec3ce890ccf /builds/worker/checkouts/gecko/servo/components/style/style_resolver.rs:295:13 (libxul.so+0xd4c2382) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #34 style::style_resolver::with_default_parent_styles::h291f573315dbe068 /builds/worker/checkouts/gecko/servo/components/style/style_resolver.rs:117:5 (libxul.so+0xd4c2382)
    #35 style::style_resolver::StyleResolverForElement$LT$E$GT$::resolve_style_with_default_parents::h376b145045630afe /builds/worker/checkouts/gecko/servo/components/style/style_resolver.rs:294:9 (libxul.so+0xd4c2382)
    #36 style::traversal::compute_style::h78926d4410772b55 /builds/worker/checkouts/gecko/servo/components/style/traversal.rs:609:25 (libxul.so+0xd4c2382)
    #37 style::traversal::recalc_style_at::h4a35837345147824 /builds/worker/checkouts/gecko/servo/components/style/traversal.rs:429:37 (libxul.so+0xd4bfa94) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #38 _$LT$style..gecko..traversal..RecalcStyleOnly$u20$as$u20$style..traversal..DomTraversal$LT$style..gecko..wrapper..GeckoElement$GT$$GT$::process_preorder::h7e2666dd1c8c28ea /builds/worker/checkouts/gecko/servo/components/style/gecko/traversal.rs:37:13 (libxul.so+0xd4bfa94)
    #39 style::driver::traverse_dom::h2a8fb7ab59f6dfa9 /builds/worker/checkouts/gecko/servo/components/style/driver.rs:112:9 (libxul.so+0xd4bfa94)
    #40 geckoservo::glue::traverse_subtree::h93ebd6b7e5408d29 /builds/worker/checkouts/gecko/servo/ports/geckolib/glue.rs:287:5 (libxul.so+0xd4bd8c5) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #41 Servo_TraverseSubtree /builds/worker/checkouts/gecko/servo/ports/geckolib/glue.rs:347:5 (libxul.so+0xd4bd1b4) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #42 mozilla::ServoStyleSet::StyleDocument(mozilla::ServoTraversalFlags) /builds/worker/checkouts/gecko/layout/style/ServoStyleSet.cpp:807:9 (libxul.so+0x964cf45) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #43 mozilla::RestyleManager::DoProcessPendingRestyles(mozilla::ServoTraversalFlags) /builds/worker/checkouts/gecko/layout/base/RestyleManager.cpp:3113:20 (libxul.so+0x9727c77) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #44 mozilla::RestyleManager::ProcessPendingRestyles() /builds/worker/checkouts/gecko/layout/base/RestyleManager.cpp:3250:3 (libxul.so+0x9704c5a) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #45 mozilla::PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush) /builds/worker/checkouts/gecko/layout/base/PresShell.cpp:4368:39 (libxul.so+0x9704129) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #46 FlushPendingNotifications /builds/worker/workspace/obj-build/dist/include/mozilla/PresShell.h:1463:5 (libxul.so+0x5e10849) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #47 mozilla::dom::Document::FlushPendingNotifications(mozilla::ChangesToFlush) /builds/worker/checkouts/gecko/dom/base/Document.cpp:10776:16 (libxul.so+0x5e10849)
    #48 mozilla::dom::Document::FlushPendingNotifications(mozilla::FlushType) /builds/worker/checkouts/gecko/dom/base/Document.cpp:10697:3 (libxul.so+0x5df444b) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #49 nsDocLoader::DocLoaderIsEmpty(bool, mozilla::Maybe<nsresult> const&) /builds/worker/checkouts/gecko/uriloader/base/nsDocLoader.cpp:742:14 (libxul.so+0x52d5a8e) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #50 nsDocLoader::OnStopRequest(nsIRequest*, nsresult) /builds/worker/checkouts/gecko/uriloader/base/nsDocLoader.cpp:680:5 (libxul.so+0x52d71e9) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #51 nsDocShell::OnStopRequest(nsIRequest*, nsresult) /builds/worker/checkouts/gecko/docshell/base/nsDocShell.cpp:13866:23 (libxul.so+0xb54958e) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #52 non-virtual thunk to nsDocShell::OnStopRequest(nsIRequest*, nsresult) /builds/worker/checkouts/gecko/docshell/base/nsDocShell.cpp (libxul.so+0xb5497b8) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #53 mozilla::net::nsLoadGroup::NotifyRemovalObservers(nsIRequest*, nsresult) /builds/worker/checkouts/gecko/netwerk/base/nsLoadGroup.cpp:628:22 (libxul.so+0x450bd80) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #54 mozilla::net::nsLoadGroup::RemoveRequest(nsIRequest*, nsISupports*, nsresult) /builds/worker/checkouts/gecko/netwerk/base/nsLoadGroup.cpp:532:10 (libxul.so+0x450d432) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #55 DoUnblockOnload /builds/worker/checkouts/gecko/dom/base/Document.cpp:11557:18 (libxul.so+0x5deefc0) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #56 mozilla::dom::Document::UnblockOnload(bool) /builds/worker/checkouts/gecko/dom/base/Document.cpp:11495:9 (libxul.so+0x5deefc0)
    #57 mozilla::dom::Document::DispatchContentLoadedEvents() /builds/worker/checkouts/gecko/dom/base/Document.cpp:8022:3 (libxul.so+0x5e023dd) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #58 applyImpl<mozilla::dom::Document, void (mozilla::dom::Document::*)()> /builds/worker/workspace/obj-build/dist/include/nsThreadUtils.h:1162:12 (libxul.so+0x5e7b859) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #59 apply<mozilla::dom::Document, void (mozilla::dom::Document::*)()> /builds/worker/workspace/obj-build/dist/include/nsThreadUtils.h:1168:12 (libxul.so+0x5e7b859)
    #60 mozilla::detail::RunnableMethodImpl<mozilla::dom::Document*, void (mozilla::dom::Document::*)(), true, (mozilla::RunnableKind)0>::Run() /builds/worker/workspace/obj-build/dist/include/nsThreadUtils.h:1215:13 (libxul.so+0x5e7b859)
    #61 mozilla::SchedulerGroup::Runnable::Run() /builds/worker/checkouts/gecko/xpcom/threads/SchedulerGroup.cpp:114:20 (libxul.so+0x42f6fbf) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #62 mozilla::RunnableTask::Run() /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:539:16 (libxul.so+0x430383f) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #63 mozilla::TaskController::DoExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&) /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:852:26 (libxul.so+0x42fce0d) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #64 mozilla::TaskController::ExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&) /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:684:15 (libxul.so+0x42fb386) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #65 mozilla::TaskController::ProcessPendingMTTask(bool) /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:462:36 (libxul.so+0x42fb760) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #66 operator() /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:188:37 (libxul.so+0x43061f7) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #67 mozilla::detail::RunnableFunction<mozilla::TaskController::InitializeInternal()::$_2>::Run() /builds/worker/workspace/obj-build/dist/include/nsThreadUtils.h:546:5 (libxul.so+0x43061f7)
    #68 nsThread::ProcessNextEvent(bool, bool*) /builds/worker/checkouts/gecko/xpcom/threads/nsThread.cpp:1197:16 (libxul.so+0x431cbe0) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #69 NS_ProcessNextEvent(nsIThread*, bool) /builds/worker/checkouts/gecko/xpcom/threads/nsThreadUtils.cpp:477:10 (libxul.so+0x4323656) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #70 mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) /builds/worker/checkouts/gecko/ipc/glue/MessagePump.cpp:85:21 (libxul.so+0x50108cb) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #71 mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*) /builds/worker/checkouts/gecko/ipc/glue/MessagePump.cpp:268:30 (libxul.so+0x50113fb) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #72 RunInternal /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:381:10 (libxul.so+0x4f2a2b7) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #73 RunHandler /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:374:3 (libxul.so+0x4f2a2b7)
    #74 MessageLoop::Run() /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:356:3 (libxul.so+0x4f2a2b7)
    #75 nsBaseAppShell::Run() /builds/worker/checkouts/gecko/widget/nsBaseAppShell.cpp:148:27 (libxul.so+0x92d6696) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #76 XRE_RunAppShell() /builds/worker/checkouts/gecko/toolkit/xre/nsEmbedFunctions.cpp:742:20 (libxul.so+0xbdea17c) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #77 mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*) /builds/worker/checkouts/gecko/ipc/glue/MessagePump.cpp:235:9 (libxul.so+0x50113ad) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #78 RunInternal /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:381:10 (libxul.so+0x4f2a2b7) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #79 RunHandler /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:374:3 (libxul.so+0x4f2a2b7)
    #80 MessageLoop::Run() /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:356:3 (libxul.so+0x4f2a2b7)
    #81 XRE_InitChildProcess(int, char**, XREChildData const*) /builds/worker/checkouts/gecko/toolkit/xre/nsEmbedFunctions.cpp:675:34 (libxul.so+0xbde9dc9) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #82 mozilla::BootstrapImpl::XRE_InitChildProcess(int, char**, XREChildData const*) /builds/worker/checkouts/gecko/toolkit/xre/Bootstrap.cpp:67:12 (libxul.so+0xbdf42d2) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #83 content_process_main /builds/worker/checkouts/gecko/browser/app/../../ipc/contentproc/plugin-container.cpp:57:28 (firefox-bin+0x142da3) (BuildId: 0e55c6bbf2c45b5a2aad7437135dc3fe7f2f4e96)
    #84 main /builds/worker/checkouts/gecko/browser/app/nsBrowserApp.cpp:353:18 (firefox-bin+0x142da3)

    Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message

  Mutex M0 acquired here while holding mutex M1 in main thread:
    #0 pthread_rwlock_wrlock /builds/worker/fetches/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1457:3 (firefox-bin+0xc4a4a) (BuildId: 0e55c6bbf2c45b5a2aad7437135dc3fe7f2f4e96)
    #1 mozilla::detail::RWLockImpl::writeLock() /builds/worker/checkouts/gecko/mozglue/misc/RWLock_posix.cpp:57:3 (firefox-bin+0x1b29d5) (BuildId: 0e55c6bbf2c45b5a2aad7437135dc3fe7f2f4e96)
    #2 WriteLock /builds/worker/workspace/obj-build/dist/include/mozilla/RWLock.h:65:67 (libxul.so+0x961786a) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #3 BaseAutoWriteLock /builds/worker/workspace/obj-build/dist/include/mozilla/RWLock.h:156:12 (libxul.so+0x961786a)
    #4 Gecko_GetLookAndFeelInt /builds/worker/checkouts/gecko/layout/style/GeckoBindings.cpp:727:17 (libxul.so+0x961786a)
    #5 style::gecko::media_features::get_lnf_int::h056ec91395b644d7 /builds/worker/checkouts/gecko/servo/components/style/gecko/media_features.rs:550:14 (libxul.so+0xdb8a8c5) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #6 style::gecko::media_features::get_scrollbar_start_backward::hbd3aa8a6d1b654c5 /builds/worker/checkouts/gecko/servo/components/style/gecko/media_features.rs:558:6 (libxul.so+0xdb8a8c5)
    #7 style::gecko::media_features::MEDIA_FEATURES::__eval::hc97a78a936289f7c /builds/worker/checkouts/gecko/servo/components/style/gecko/media_features.rs:576:13 (libxul.so+0xdb8a8c5)
    #8 style::queries::feature_expression::QueryFeatureExpression::matches::h956246e0196e9a72 /builds/worker/checkouts/gecko/servo/components/style/queries/feature_expression.rs:647:31 (libxul.so+0xdccd634) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #9 style::queries::condition::QueryCondition::matches::h3081b9d1a4470f3e /builds/worker/checkouts/gecko/servo/components/style/queries/condition.rs:334:47 (libxul.so+0xdccd634)
    #10 style::media_queries::media_list::MediaList::evaluate::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h0945db8295c8a686 /builds/worker/checkouts/gecko/servo/components/style/media_queries/media_list.rs:86:73 (libxul.so+0xdccd1fd) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #11 core::option::Option$LT$T$GT$::map_or::hc42411781745982a /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/core/src/option.rs:988:24 (libxul.so+0xdccd1fd)
    #12 style::media_queries::media_list::MediaList::evaluate::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h8af0bfc021590189 /builds/worker/checkouts/gecko/servo/components/style/media_queries/media_list.rs:86:21 (libxul.so+0xdccd1fd)
    #13 _$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$::any::h6b95266bb89c8a5a /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/core/src/slice/iter/macros.rs:242:24 (libxul.so+0xdccd1fd)
    #14 style::media_queries::media_list::MediaList::evaluate::_$u7b$$u7b$closure$u7d$$u7d$::h5db062ae0ae416f7 /builds/worker/checkouts/gecko/servo/components/style/media_queries/media_list.rs:84:13 (libxul.so+0xdccd1fd)
    #15 style::values::computed::Context::for_media_query_evaluation::hd3c6734e551421c8 /builds/worker/checkouts/gecko/servo/components/style/values/computed/mod.rs:229:9 (libxul.so+0xdccd1fd)
    #16 style::media_queries::media_list::MediaList::evaluate::h239d71f37dee4a6e /builds/worker/checkouts/gecko/servo/components/style/media_queries/media_list.rs:83:9 (libxul.so+0xdccd1fd)
    #17 style::media_queries::media_list::MediaList::evaluate::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h0945db8295c8a686 /builds/worker/checkouts/gecko/servo/components/style/media_queries/media_list.rs:86:73 (libxul.so+0xdccd1fd) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #18 core::option::Option$LT$T$GT$::map_or::hc42411781745982a /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/core/src/option.rs:988:24 (libxul.so+0xdccd1fd)
    #19 style::media_queries::media_list::MediaList::evaluate::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h8af0bfc021590189 /builds/worker/checkouts/gecko/servo/components/style/media_queries/media_list.rs:86:21 (libxul.so+0xdccd1fd)
    #20 _$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$::any::h6b95266bb89c8a5a /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/core/src/slice/iter/macros.rs:242:24 (libxul.so+0xdccd1fd)
    #21 style::media_queries::media_list::MediaList::evaluate::_$u7b$$u7b$closure$u7d$$u7d$::h5db062ae0ae416f7 /builds/worker/checkouts/gecko/servo/components/style/media_queries/media_list.rs:84:13 (libxul.so+0xdccd1fd)
    #22 style::values::computed::Context::for_media_query_evaluation::hd3c6734e551421c8 /builds/worker/checkouts/gecko/servo/components/style/values/computed/mod.rs:229:9 (libxul.so+0xdccd1fd)
    #23 style::media_queries::media_list::MediaList::evaluate::h239d71f37dee4a6e /builds/worker/checkouts/gecko/servo/components/style/media_queries/media_list.rs:83:9 (libxul.so+0xdccd1fd)
    #24 _$LT$style..stylesheets..rules_iterator..EffectiveRules$u20$as$u20$style..stylesheets..rules_iterator..NestedRuleIterationCondition$GT$::process_media::h0cdadf5782164a7a /builds/worker/checkouts/gecko/servo/components/style/stylesheets/rules_iterator.rs:252:9 (libxul.so+0xd53fb4b) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #25 style::stylesheets::rules_iterator::RulesIterator$LT$C$GT$::children::h6cda478e7c0046a4 /builds/worker/checkouts/gecko/servo/components/style/stylesheets/rules_iterator.rs:97:21 (libxul.so+0xd53fb4b)
    #26 _$LT$style..stylesheets..rules_iterator..RulesIterator$LT$C$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$::next::h1a613ac5aa18bf7d /builds/worker/checkouts/gecko/servo/components/style/stylesheets/rules_iterator.rs:140:28 (libxul.so+0xd541ab7) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #27 _$LT$style..stylesheets..rules_iterator..RulesIterator$LT$C$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$::next::h1a613ac5aa18bf7d /builds/worker/checkouts/gecko/servo/components/style/stylesheets/rules_iterator.rs:140:28 (libxul.so+0xd541ab7) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #28 style::stylist::CascadeData::collect_applicable_media_query_results_into::h7dcf9f6ec461ba92 /builds/worker/checkouts/gecko/servo/components/style/stylist.rs:2494:21 (libxul.so+0xd528709) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #29 style::stylist::CascadeDataCache$LT$Entry$GT$::lookup::he5ab1022357c44dd /builds/worker/checkouts/gecko/servo/components/style/stylist.rs:165:13 (libxul.so+0xd54b424) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #30 style::stylist::DocumentCascadeData::rebuild::h8acb9a63c94abaa6 /builds/worker/checkouts/gecko/servo/components/style/stylist.rs:398:32 (libxul.so+0xd54b424)
    #31 style::stylist::Stylist::flush::h3616bee4f66f1f59 /builds/worker/checkouts/gecko/servo/components/style/stylist.rs:758:9 (libxul.so+0xd54b424)
    #32 style::gecko::data::PerDocumentStyleDataImpl::flush_stylesheets::h60fb63a1c94d8a16 /builds/worker/checkouts/gecko/servo/components/style/gecko/data.rs:179:9 (libxul.so+0xd54b424)
    #33 Servo_StyleSet_FlushStyleSheets /builds/worker/checkouts/gecko/servo/ports/geckolib/glue.rs:1957:30 (libxul.so+0xd54b424)
    #34 mozilla::ServoStyleSet::UpdateStylist() /builds/worker/checkouts/gecko/layout/style/ServoStyleSet.cpp:1294:5 (libxul.so+0x964f8fe) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #35 UpdateStylistIfNeeded /builds/worker/workspace/obj-build/dist/include/mozilla/ServoStyleSet.h:313:7 (libxul.so+0x964f5b3) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #36 mozilla::ServoStyleSet::AppendFontFaceRules(nsTArray<nsFontFaceRuleContainer>&) /builds/worker/checkouts/gecko/layout/style/ServoStyleSet.cpp:1249:3 (libxul.so+0x964f5b3)
    #37 mozilla::dom::Document::FlushUserFontSet() /builds/worker/checkouts/gecko/dom/base/Document.cpp:16014:18 (libxul.so+0x5e2b927) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #38 mozilla::dom::FontFaceSetDocumentImpl::FlushUserFontSet() /builds/worker/checkouts/gecko/layout/style/FontFaceSetDocumentImpl.cpp:745:16 (libxul.so+0x960ae5a) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #39 Status /builds/worker/checkouts/gecko/layout/style/FontFaceSetImpl.cpp:219:3 (libxul.so+0x9602ed0) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #40 mozilla::dom::FontFaceSet::Status() /builds/worker/checkouts/gecko/layout/style/FontFaceSet.cpp:216:61 (libxul.so+0x9602ed0)
    #41 mozilla::dom::FontFaceSet_Binding::get_status(JSContext*, JS::Handle<JSObject*>, void*, JSJitGetterCallArgs) /builds/worker/workspace/obj-build/dom/bindings/FontFaceSetBinding.cpp:992:53 (libxul.so+0x6fb1278) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #42 bool mozilla::dom::binding_detail::GenericGetter<mozilla::dom::binding_detail::NormalThisPolicy, mozilla::dom::binding_detail::ThrowExceptions>(JSContext*, unsigned int, JS::Value*) /builds/worker/checkouts/gecko/dom/bindings/BindingUtils.cpp:3190:13 (libxul.so+0x7180aae) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #43 CallJSNative /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:459:13 (libxul.so+0xc05b62b) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #44 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:547:12 (libxul.so+0xc05b62b)
    #45 InternalCall /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:614:10 (libxul.so+0xc05c3b3) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #46 js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:646:8 (libxul.so+0xc05c3b3)
    #47 js::CallGetter(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:768:10 (libxul.so+0xc05d064) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #48 CallGetter /builds/worker/checkouts/gecko/js/src/vm/NativeObject.cpp:2017:12 (libxul.so+0xc2037c2) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #49 GetExistingProperty<(js::AllowGC)1> /builds/worker/checkouts/gecko/js/src/vm/NativeObject.cpp:2045:12 (libxul.so+0xc2037c2)
    #50 NativeGetPropertyInline<(js::AllowGC)1> /builds/worker/checkouts/gecko/js/src/vm/NativeObject.cpp:2193:14 (libxul.so+0xc2037c2)
    #51 js::NativeGetProperty(JSContext*, JS::Handle<js::NativeObject*>, JS::Handle<JS::Value>, JS::Handle<JS::PropertyKey>, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/NativeObject.cpp:2224:10 (libxul.so+0xc2037c2)
    #52 GetProperty /builds/worker/checkouts/gecko/js/src/vm/ObjectOperations-inl.h:118:10 (libxul.so+0xc05fb10) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #53 GetProperty /builds/worker/checkouts/gecko/js/src/vm/ObjectOperations-inl.h:125:10 (libxul.so+0xc05fb10)
    #54 js::GetProperty(JSContext*, JS::Handle<JS::Value>, JS::Handle<js::PropertyName*>, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:4720:10 (libxul.so+0xc05fb10)
    #55 GetPropertyOperation /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:245:10 (libxul.so+0xc04dcb0) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #56 Interpret(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:3017:12 (libxul.so+0xc04dcb0)
    #57 js::RunScript(JSContext*, js::RunState&) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:431:13 (libxul.so+0xc044a1f) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #58 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:579:13 (libxul.so+0xc05b700) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #59 InternalCall /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:614:10 (libxul.so+0xc05c3b3) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #60 js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) /builds/worker/checkouts/gecko/js/src/vm/Interpreter.cpp:646:8 (libxul.so+0xc05c3b3)
    #61 JS::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) /builds/worker/checkouts/gecko/js/src/vm/CallAndConstruct.cpp:117:10 (libxul.so+0xc0f044b) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #62 mozilla::dom::EventHandlerNonNull::Call(mozilla::dom::BindingCallContext&, JS::Handle<JS::Value>, mozilla::dom::Event&, JS::MutableHandle<JS::Value>, mozilla::ErrorResult&) /builds/worker/workspace/obj-build/dom/bindings/EventHandlerBinding.cpp:65:37 (libxul.so+0x6eb2586) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #63 Call<nsCOMPtr<mozilla::dom::EventTarget> > /builds/worker/workspace/obj-build/dist/include/mozilla/dom/EventHandlerBinding.h:82:12 (libxul.so+0x7836526) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #64 mozilla::JSEventHandler::HandleEvent(mozilla::dom::Event*) /builds/worker/checkouts/gecko/dom/events/JSEventHandler.cpp:199:12 (libxul.so+0x7836526)
    #65 mozilla::EventListenerManager::HandleEventSubType(mozilla::EventListenerManager::Listener*, mozilla::dom::Event*, mozilla::dom::EventTarget*) /builds/worker/checkouts/gecko/dom/events/EventListenerManager.cpp:1314:22 (libxul.so+0x780e60e) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #66 mozilla::EventListenerManager::HandleEventInternal(nsPresContext*, mozilla::WidgetEvent*, mozilla::dom::Event**, mozilla::dom::EventTarget*, nsEventStatus*, bool) /builds/worker/checkouts/gecko/dom/events/EventListenerManager.cpp:1504:17 (libxul.so+0x780f3f2) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #67 HandleEvent /builds/worker/checkouts/gecko/dom/events/EventListenerManager.h:395:5 (libxul.so+0x7803f52) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #68 mozilla::EventTargetChainItem::HandleEvent(mozilla::EventChainPostVisitor&, mozilla::ELMCreationDetector&) /builds/worker/checkouts/gecko/dom/events/EventDispatcher.cpp:347:17 (libxul.so+0x7803f52)
    #69 mozilla::EventTargetChainItem::HandleEventTargetChain(nsTArray<mozilla::EventTargetChainItem>&, mozilla::EventChainPostVisitor&, mozilla::EventDispatchingCallback*, mozilla::ELMCreationDetector&) /builds/worker/checkouts/gecko/dom/events/EventDispatcher.cpp:549:16 (libxul.so+0x7803324) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #70 mozilla::EventDispatcher::Dispatch(nsISupports*, nsPresContext*, mozilla::WidgetEvent*, mozilla::dom::Event*, nsEventStatus*, mozilla::EventDispatchingCallback*, nsTArray<mozilla::dom::EventTarget*>*) /builds/worker/checkouts/gecko/dom/events/EventDispatcher.cpp:1122:11 (libxul.so+0x7806045) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #71 nsDocumentViewer::LoadComplete(nsresult) /builds/worker/checkouts/gecko/layout/base/nsDocumentViewer.cpp:1082:7 (libxul.so+0x9781a71) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #72 nsDocShell::EndPageLoad(nsIWebProgress*, nsIChannel*, nsresult) /builds/worker/checkouts/gecko/docshell/base/nsDocShell.cpp:6447:20 (libxul.so+0xb52abfa) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #73 nsDocShell::OnStateChange(nsIWebProgress*, nsIRequest*, unsigned int, nsresult) /builds/worker/checkouts/gecko/docshell/base/nsDocShell.cpp:5840:7 (libxul.so+0xb52a479) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #74 non-virtual thunk to nsDocShell::OnStateChange(nsIWebProgress*, nsIRequest*, unsigned int, nsresult) /builds/worker/checkouts/gecko/docshell/base/nsDocShell.cpp (libxul.so+0xb52b44b) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #75 nsDocLoader::DoFireOnStateChange(nsIWebProgress*, nsIRequest*, int&, nsresult) /builds/worker/checkouts/gecko/uriloader/base/nsDocLoader.cpp:1380:3 (libxul.so+0x52d872e) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #76 nsDocLoader::doStopDocumentLoad(nsIRequest*, nsresult) /builds/worker/checkouts/gecko/uriloader/base/nsDocLoader.cpp:978:14 (libxul.so+0x52d7e1f) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #77 nsDocLoader::DocLoaderIsEmpty(bool, mozilla::Maybe<nsresult> const&) /builds/worker/checkouts/gecko/uriloader/base/nsDocLoader.cpp:797:9 (libxul.so+0x52d5da6) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #78 nsDocLoader::OnStopRequest(nsIRequest*, nsresult) /builds/worker/checkouts/gecko/uriloader/base/nsDocLoader.cpp:680:5 (libxul.so+0x52d71e9) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #79 nsDocShell::OnStopRequest(nsIRequest*, nsresult) /builds/worker/checkouts/gecko/docshell/base/nsDocShell.cpp:13866:23 (libxul.so+0xb54958e) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #80 non-virtual thunk to nsDocShell::OnStopRequest(nsIRequest*, nsresult) /builds/worker/checkouts/gecko/docshell/base/nsDocShell.cpp (libxul.so+0xb5497b8) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #81 mozilla::net::nsLoadGroup::NotifyRemovalObservers(nsIRequest*, nsresult) /builds/worker/checkouts/gecko/netwerk/base/nsLoadGroup.cpp:628:22 (libxul.so+0x450bd80) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #82 mozilla::net::nsLoadGroup::RemoveRequest(nsIRequest*, nsISupports*, nsresult) /builds/worker/checkouts/gecko/netwerk/base/nsLoadGroup.cpp:532:10 (libxul.so+0x450d432) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #83 DoUnblockOnload /builds/worker/checkouts/gecko/dom/base/Document.cpp:11557:18 (libxul.so+0x5e6d8a3) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #84 mozilla::dom::nsUnblockOnloadEvent::Run() /builds/worker/checkouts/gecko/dom/base/Document.cpp:11519:11 (libxul.so+0x5e6d8a3)
    #85 mozilla::SchedulerGroup::Runnable::Run() /builds/worker/checkouts/gecko/xpcom/threads/SchedulerGroup.cpp:114:20 (libxul.so+0x42f6fbf) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #86 mozilla::RunnableTask::Run() /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:539:16 (libxul.so+0x430383f) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #87 mozilla::TaskController::DoExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&) /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:852:26 (libxul.so+0x42fce0d) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #88 mozilla::TaskController::ExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&) /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:684:15 (libxul.so+0x42fb386) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #89 mozilla::TaskController::ProcessPendingMTTask(bool) /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:462:36 (libxul.so+0x42fb760) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #90 operator() /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:188:37 (libxul.so+0x43061f7) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #91 mozilla::detail::RunnableFunction<mozilla::TaskController::InitializeInternal()::$_2>::Run() /builds/worker/workspace/obj-build/dist/include/nsThreadUtils.h:546:5 (libxul.so+0x43061f7)
    #92 nsThread::ProcessNextEvent(bool, bool*) /builds/worker/checkouts/gecko/xpcom/threads/nsThread.cpp:1197:16 (libxul.so+0x431cbe0) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #93 NS_ProcessNextEvent(nsIThread*, bool) /builds/worker/checkouts/gecko/xpcom/threads/nsThreadUtils.cpp:477:10 (libxul.so+0x4323656) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #94 mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) /builds/worker/checkouts/gecko/ipc/glue/MessagePump.cpp:85:21 (libxul.so+0x50108cb) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #95 mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*) /builds/worker/checkouts/gecko/ipc/glue/MessagePump.cpp:268:30 (libxul.so+0x50113fb) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #96 RunInternal /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:381:10 (libxul.so+0x4f2a2b7) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #97 RunHandler /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:374:3 (libxul.so+0x4f2a2b7)
    #98 MessageLoop::Run() /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:356:3 (libxul.so+0x4f2a2b7)
    #99 nsBaseAppShell::Run() /builds/worker/checkouts/gecko/widget/nsBaseAppShell.cpp:148:27 (libxul.so+0x92d6696) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #100 XRE_RunAppShell() /builds/worker/checkouts/gecko/toolkit/xre/nsEmbedFunctions.cpp:742:20 (libxul.so+0xbdea17c) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #101 mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*) /builds/worker/checkouts/gecko/ipc/glue/MessagePump.cpp:235:9 (libxul.so+0x50113ad) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #102 RunInternal /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:381:10 (libxul.so+0x4f2a2b7) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #103 RunHandler /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:374:3 (libxul.so+0x4f2a2b7)
    #104 MessageLoop::Run() /builds/worker/checkouts/gecko/ipc/chromium/src/base/message_loop.cc:356:3 (libxul.so+0x4f2a2b7)
    #105 XRE_InitChildProcess(int, char**, XREChildData const*) /builds/worker/checkouts/gecko/toolkit/xre/nsEmbedFunctions.cpp:675:34 (libxul.so+0xbde9dc9) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #106 mozilla::BootstrapImpl::XRE_InitChildProcess(int, char**, XREChildData const*) /builds/worker/checkouts/gecko/toolkit/xre/Bootstrap.cpp:67:12 (libxul.so+0xbdf42d2) (BuildId: d07a9d508328d081a58006e2a2adafe1dcf0b36f)
    #107 content_process_main /builds/worker/checkouts/gecko/browser/app/../../ipc/contentproc/plugin-container.cpp:57:28 (firefox-bin+0x142da3) (BuildId: 0e55c6bbf2c45b5a2aad7437135dc3fe7f2f4e96)
    #108 main /builds/worker/checkouts/gecko/browser/app/nsBrowserApp.cpp:353:18 (firefox-bin+0x142da3)
Flags: in-testsuite?
Summary: WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) [@ mozilla::dom::FontFaceSetImpl::OnFontFaceStatusChanged] → ThreadSanitizer: lock-order-inversion (potential deadlock) [@ mozilla::dom::FontFaceSetImpl::OnFontFaceStatusChanged]

Verified bug as reproducible on mozilla-central 20230130214413-8eb2c58dc415.
The bug appears to have been introduced in the following build range:

Start: 1b8f84b953c5ea7b512f4f0fe7228eeb5523ac30 (20220922060235)
End: c9041757a18ac481d701af85012d9c7c9720db7a (20220922080430)
Pushlog: https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=1b8f84b953c5ea7b512f4f0fe7228eeb5523ac30&tochange=c9041757a18ac481d701af85012d9c7c9720db7a

Keywords: regression
Whiteboard: [bugmon:bisected,confirmed]
Blocks: tsan

Bug 1789967 looks like the most likely regressor in that range, given the contenteditable in the test case, though not being familiar with either fonts or editor I'm not sure how exactly.

Before bug 1789967, Selection was collapsed in the <dd contenteditable> automatically and that caused making it focused. Therefore, the condition of the test is different. Therefore, it's not true regression range.

What happens if append <span>foo</span> after the <dd contenteditable></dd>? I guess that it creates same situation for HTMLEditor before/after bug 1789967.

:emilio could you triage this and take a look at comment 3 and comment 4?

Flags: needinfo?(emilio)

I don't think there is real deadlock potential here given comment 0.

The main issue is that FontFaceSet::Status() locks the font-face set mutex, but FlushUserFontSet can take it again via Gecko_GetFontMetrics. However:

  • The mutex in FontFaceSet seems recursive, so we shouldn't deadlock anyways.
  • FlushUserFontSet shouldn't be looking at the user font set for font metrics to begin with, and only the main thread can call into styling code at that point (TSAN realized that in some other phase of styling we acquired the mutexes in different order).

So I think it's fine. Jonathan or Andrew, mind confirming my understanding?

Flags: needinfo?(jfkthame)
Flags: needinfo?(emilio)
Flags: needinfo?(aosmond)

(In reply to Emilio Cobos Álvarez (:emilio) from comment #6)

I don't think there is real deadlock potential here given comment 0.

Calling this S3 given this^. (Though if this assessment is correct, perhaps we should just close this?)

(jfkthame / aosmond: gentle reminder, could you confirm emilio's assessment in comment 6?)

Severity: -- → S3

Bugmon was unable reproduce this issue.
Removing bugmon keyword as no further action possible. Please review the bug and re-add the keyword for further analysis.

Keywords: bugmon
Keywords: bugmon

A change to the Taskcluster build definitions over the weekend caused Bugmon to fail when reproducing issues. This issue has been corrected. Re-enabling bugmon.

Unable to reproduce bug 1813811 using build mozilla-central 20230130035123-49ac19f1e046. Without a baseline, bugmon is unable to analyze this bug.
Removing bugmon keyword as no further action possible. Please review the bug and re-add the keyword for further analysis.

Keywords: bugmon
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: