Bug 1901043 Comment 0 Edit History

Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.

These crashes happen only on macOS 13 and 14, so they may be partly an Apple bug. But they started somewhere on the 127 branch, so presumably they're also at least partly a Mozilla bug. They don't happen frequently enough to pin down a precise regression range.

They all have `_cairo_quartz_snapshot_create` on the stack.

https://crash-stats.mozilla.org/search/?proto_signature=~cairo_quartz_snapshot_create&date=%3E%3D2024-05-06T15%3A05%3A00.000Z&date=%3C2024-06-06T15%3A05%3A00.000Z&_facets=signature&_facets=version&_facets=platform_version&_facets=proto_signature&_sort=-date&_columns=date&_columns=signature&_columns=product&_columns=version&_columns=build_id&_columns=platform#facet-proto_signature

Typical crash stack:

```
Crashing Thread (0), Name: MainThread
Frame  Module  Signature  Source  Trust
0  libsystem_platform.dylib  _platform_memmove   context
1  CoreGraphics  create_protected_copy   cfi
2  CoreGraphics  CGDataProviderCreateWithCopyOfData   cfi
3  CoreGraphics  CGDataProviderCreateTrustedWithCopyOfData   cfi
4  CoreGraphics  CGBitmapContextCreateImage   cfi
5  XUL  _cairo_quartz_snapshot_create  gfx/cairo/cairo/src/cairo-quartz-surface.c:2650  cfi
6  XUL  _cairo_quartz_surface_snapshot_get_image  gfx/cairo/cairo/src/cairo-quartz-surface.c:2676  cfi
7  XUL  _cairo_surface_to_cgimage  gfx/cairo/cairo/src/cairo-quartz-surface.c:756  cfi
8  XUL  _cairo_quartz_setup_pattern_source  gfx/cairo/cairo/src/cairo-quartz-surface.c:987  inlined
8  XUL  _cairo_quartz_setup_state  gfx/cairo/cairo/src/cairo-quartz-surface.c:1248  cfi
9  XUL  _cairo_quartz_cg_fill  gfx/cairo/cairo/src/cairo-quartz-surface.c:1858  cfi
10  XUL  _cairo_compositor_fill  gfx/cairo/cairo/src/cairo-compositor.c:245  cfi
11  XUL  _cairo_surface_fill  gfx/cairo/cairo/src/cairo-surface.c:2502  cfi
12  XUL  _cairo_gstate_fill  gfx/cairo/cairo/src/cairo-gstate.c:1352  cfi
13  XUL  _moz_cairo_fill_preserve  gfx/cairo/cairo/src/cairo.c:2454  cfi
14  XUL  mozilla::gfx::DrawTargetCairo::DrawPattern(mozilla::gfx::Pattern const&, mozilla::gfx::StrokeOptions const&, mozilla::gfx::DrawOptions const&, mozilla::gfx::DrawTargetCairo::DrawPatternType, bool)  gfx/2d/DrawTargetCairo.cpp:1051  cfi
15  XUL  mozilla::gfx::DrawTargetCairo::FillRect(mozilla::gfx::RectTyped<mozilla::gfx::UnknownUnits, float> const&, mozilla::gfx::Pattern const&, mozilla::gfx::DrawOptions const&)  gfx/2d/DrawTargetCairo.cpp:1101  cfi
16  XUL  mozilla::gfx::RecordedFillRect::PlayEvent(mozilla::gfx::Translator*) const  gfx/2d/RecordedEventImpl.h:2489  cfi
17  XUL  std::__1::__function::__value_func<bool (mozilla::gfx::RecordedEvent*)>::operator()[abi:un170006](mozilla::gfx::RecordedEvent*&&) const  /builds/worker/fetches/MacOSX14.4.sdk/usr/include/c++/v1/__functional/function.h:518  inlined
17  XUL  std::__1::function<bool (mozilla::gfx::RecordedEvent*)>::operator()(mozilla::gfx::RecordedEvent*) const  /builds/worker/fetches/MacOSX14.4.sdk/usr/include/c++/v1/__functional/function.h:1169  inlined
17  XUL  mozilla::gfx::RecordedEvent::DoWithEvent<mozilla::gfx::EventStream>(mozilla::gfx::EventStream&, mozilla::gfx::RecordedEvent::EventType, std::__1::function<bool (mozilla::gfx::RecordedEvent*)> const&)  gfx/2d/RecordedEventImpl.h:4514  cfi
18  XUL  mozilla::layout::PrintTranslator::TranslateRecording(mozilla::layout::PRFileDescStream&)  layout/printing/PrintTranslator.cpp:54  cfi
19  XUL  mozilla::layout::RemotePrintJobParent::PrintPage(mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, mozilla::layout::PRFileDescStream&, nsRefCountedHashtable<nsIntegralHashKey<unsigned long long, 0>, RefPtr<mozilla::gfx::RecordedDependentSurface> >*)  layout/printing/ipc/RemotePrintJobParent.cpp:179  cfi
20  XUL  mozilla::layout::RemotePrintJobParent::FinishProcessingPage(mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, nsRefCountedHashtable<nsIntegralHashKey<unsigned long long, 0>, RefPtr<mozilla::gfx::RecordedDependentSurface> >*)  layout/printing/ipc/RemotePrintJobParent.cpp:158  inlined
20  XUL  mozilla::layout::RemotePrintJobParent::RecvProcessPage(int const&, int const&, nsTArray<unsigned long long>&&)  layout/printing/ipc/RemotePrintJobParent.cpp:132  cfi
21  XUL  mozilla::layout::PRemotePrintJobParent::OnMessageReceived(IPC::Message const&)  ipc/ipdl/PRemotePrintJobParent.cpp:376  cfi
22  XUL  mozilla::dom::PContentParent::OnMessageReceived(IPC::Message const&)  ipc/ipdl/PContentParent.cpp:6517  cfi
23  XUL  mozilla::ipc::MessageChannel::DispatchAsyncMessage(mozilla::ipc::ActorLifecycleProxy*, IPC::Message const&)  ipc/glue/MessageChannel.cpp:1820  inlined
23  XUL  mozilla::ipc::MessageChannel::DispatchMessage(mozilla::ipc::ActorLifecycleProxy*, mozilla::UniquePtr<IPC::Message, mozilla::DefaultDelete<IPC::Message> >)  ipc/glue/MessageChannel.cpp:1739  inlined
23  XUL  mozilla::ipc::MessageChannel::RunMessage(mozilla::ipc::ActorLifecycleProxy*, mozilla::ipc::MessageChannel::MessageTask&)  ipc/glue/MessageChannel.cpp:1530  inlined
23  XUL  mozilla::ipc::MessageChannel::MessageTask::Run()  ipc/glue/MessageChannel.cpp:1630  cfi
24  XUL  mozilla::RunnableTask::Run()  xpcom/threads/TaskController.cpp:580  inlined
24  XUL  mozilla::TaskController::DoExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&)  xpcom/threads/TaskController.cpp:907  inlined
24  XUL  mozilla::TaskController::ExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&)  xpcom/threads/TaskController.cpp:730  cfi
25  XUL  mozilla::TaskController::ProcessPendingMTTask(bool)  xpcom/threads/TaskController.cpp:516  inlined
25  XUL  mozilla::TaskController::TaskController()::$_0::operator()() const  xpcom/threads/TaskController.cpp:234  inlined
25  XUL  mozilla::detail::RunnableFunction<mozilla::TaskController::TaskController()::$_0>::Run()  xpcom/threads/nsThreadUtils.h:548  cfi
26  XUL  nsThread::ProcessNextEvent(bool, bool*)  xpcom/threads/nsThread.cpp:1199  inlined
26  XUL  NS_ProcessPendingEvents(nsIThread*, unsigned int)  xpcom/threads/nsThreadUtils.cpp:445  cfi
27  XUL  nsBaseAppShell::NativeEventCallback()  widget/nsBaseAppShell.cpp:87  cfi
28  XUL  nsAppShell::ProcessGeckoEvents(void*)  widget/cocoa/nsAppShell.mm:541  cfi
29  CoreFoundation  __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__   cfi
30  CoreFoundation  __CFRunLoopDoSource0   cfi
31  CoreFoundation  __CFRunLoopDoSources0   cfi
32  CoreFoundation  __CFRunLoopRun   cfi
33  CoreFoundation  CFRunLoopRunSpecific   cfi
34  HIToolbox  RunCurrentEventLoopInMode   cfi
35  HIToolbox  ReceiveNextEventCommon   cfi
36  HIToolbox  _BlockUntilNextEventMatchingListInModeWithFilter   cfi
37  AppKit  _DPSNextEvent   cfi
38  AppKit  -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]   cfi
39  XUL  -[GeckoNSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]  widget/cocoa/nsAppShell.mm:196  cfi
40  AppKit  -[NSApplication run]   cfi
41  XUL  -[GeckoNSApplication run]  widget/cocoa/nsAppShell.mm:174  cfi
42  XUL  nsAppShell::Run()  widget/cocoa/nsAppShell.mm:871  cfi
43  XUL  nsAppStartup::Run()  toolkit/components/startup/nsAppStartup.cpp:296  cfi
44  XUL  XREMain::XRE_mainRun()  toolkit/xre/nsAppRunner.cpp:5741  cfi
45  XUL  XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&)  toolkit/xre/nsAppRunner.cpp:5953  cfi
46  XUL  XRE_main(int, char**, mozilla::BootstrapConfig const&)  toolkit/xre/nsAppRunner.cpp:6010  cfi
47  firefox  do_main(int, char**, char**)  browser/app/nsBrowserApp.cpp:230  inlined
47  firefox  main  browser/app/nsBrowserApp.cpp:448  cfi
48  dyld  start   cfi
```
These crashes happen only on macOS 13 and 14, so they may be partly an Apple bug. But they started somewhere on the 127 branch, so presumably they're also at least partly a Mozilla bug. They don't happen frequently enough to pin down a precise regression range.

Edit: They also happen on macOS 12 and 11.

They all have `_cairo_quartz_snapshot_create` on the stack.

https://crash-stats.mozilla.org/search/?proto_signature=~cairo_quartz_snapshot_create&date=%3E%3D2024-05-06T15%3A05%3A00.000Z&date=%3C2024-06-06T15%3A05%3A00.000Z&_facets=signature&_facets=version&_facets=platform_version&_facets=proto_signature&_sort=-date&_columns=date&_columns=signature&_columns=product&_columns=version&_columns=build_id&_columns=platform#facet-proto_signature

Typical crash stack:

```
Crashing Thread (0), Name: MainThread
Frame  Module  Signature  Source  Trust
0  libsystem_platform.dylib  _platform_memmove   context
1  CoreGraphics  create_protected_copy   cfi
2  CoreGraphics  CGDataProviderCreateWithCopyOfData   cfi
3  CoreGraphics  CGDataProviderCreateTrustedWithCopyOfData   cfi
4  CoreGraphics  CGBitmapContextCreateImage   cfi
5  XUL  _cairo_quartz_snapshot_create  gfx/cairo/cairo/src/cairo-quartz-surface.c:2650  cfi
6  XUL  _cairo_quartz_surface_snapshot_get_image  gfx/cairo/cairo/src/cairo-quartz-surface.c:2676  cfi
7  XUL  _cairo_surface_to_cgimage  gfx/cairo/cairo/src/cairo-quartz-surface.c:756  cfi
8  XUL  _cairo_quartz_setup_pattern_source  gfx/cairo/cairo/src/cairo-quartz-surface.c:987  inlined
8  XUL  _cairo_quartz_setup_state  gfx/cairo/cairo/src/cairo-quartz-surface.c:1248  cfi
9  XUL  _cairo_quartz_cg_fill  gfx/cairo/cairo/src/cairo-quartz-surface.c:1858  cfi
10  XUL  _cairo_compositor_fill  gfx/cairo/cairo/src/cairo-compositor.c:245  cfi
11  XUL  _cairo_surface_fill  gfx/cairo/cairo/src/cairo-surface.c:2502  cfi
12  XUL  _cairo_gstate_fill  gfx/cairo/cairo/src/cairo-gstate.c:1352  cfi
13  XUL  _moz_cairo_fill_preserve  gfx/cairo/cairo/src/cairo.c:2454  cfi
14  XUL  mozilla::gfx::DrawTargetCairo::DrawPattern(mozilla::gfx::Pattern const&, mozilla::gfx::StrokeOptions const&, mozilla::gfx::DrawOptions const&, mozilla::gfx::DrawTargetCairo::DrawPatternType, bool)  gfx/2d/DrawTargetCairo.cpp:1051  cfi
15  XUL  mozilla::gfx::DrawTargetCairo::FillRect(mozilla::gfx::RectTyped<mozilla::gfx::UnknownUnits, float> const&, mozilla::gfx::Pattern const&, mozilla::gfx::DrawOptions const&)  gfx/2d/DrawTargetCairo.cpp:1101  cfi
16  XUL  mozilla::gfx::RecordedFillRect::PlayEvent(mozilla::gfx::Translator*) const  gfx/2d/RecordedEventImpl.h:2489  cfi
17  XUL  std::__1::__function::__value_func<bool (mozilla::gfx::RecordedEvent*)>::operator()[abi:un170006](mozilla::gfx::RecordedEvent*&&) const  /builds/worker/fetches/MacOSX14.4.sdk/usr/include/c++/v1/__functional/function.h:518  inlined
17  XUL  std::__1::function<bool (mozilla::gfx::RecordedEvent*)>::operator()(mozilla::gfx::RecordedEvent*) const  /builds/worker/fetches/MacOSX14.4.sdk/usr/include/c++/v1/__functional/function.h:1169  inlined
17  XUL  mozilla::gfx::RecordedEvent::DoWithEvent<mozilla::gfx::EventStream>(mozilla::gfx::EventStream&, mozilla::gfx::RecordedEvent::EventType, std::__1::function<bool (mozilla::gfx::RecordedEvent*)> const&)  gfx/2d/RecordedEventImpl.h:4514  cfi
18  XUL  mozilla::layout::PrintTranslator::TranslateRecording(mozilla::layout::PRFileDescStream&)  layout/printing/PrintTranslator.cpp:54  cfi
19  XUL  mozilla::layout::RemotePrintJobParent::PrintPage(mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, mozilla::layout::PRFileDescStream&, nsRefCountedHashtable<nsIntegralHashKey<unsigned long long, 0>, RefPtr<mozilla::gfx::RecordedDependentSurface> >*)  layout/printing/ipc/RemotePrintJobParent.cpp:179  cfi
20  XUL  mozilla::layout::RemotePrintJobParent::FinishProcessingPage(mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, nsRefCountedHashtable<nsIntegralHashKey<unsigned long long, 0>, RefPtr<mozilla::gfx::RecordedDependentSurface> >*)  layout/printing/ipc/RemotePrintJobParent.cpp:158  inlined
20  XUL  mozilla::layout::RemotePrintJobParent::RecvProcessPage(int const&, int const&, nsTArray<unsigned long long>&&)  layout/printing/ipc/RemotePrintJobParent.cpp:132  cfi
21  XUL  mozilla::layout::PRemotePrintJobParent::OnMessageReceived(IPC::Message const&)  ipc/ipdl/PRemotePrintJobParent.cpp:376  cfi
22  XUL  mozilla::dom::PContentParent::OnMessageReceived(IPC::Message const&)  ipc/ipdl/PContentParent.cpp:6517  cfi
23  XUL  mozilla::ipc::MessageChannel::DispatchAsyncMessage(mozilla::ipc::ActorLifecycleProxy*, IPC::Message const&)  ipc/glue/MessageChannel.cpp:1820  inlined
23  XUL  mozilla::ipc::MessageChannel::DispatchMessage(mozilla::ipc::ActorLifecycleProxy*, mozilla::UniquePtr<IPC::Message, mozilla::DefaultDelete<IPC::Message> >)  ipc/glue/MessageChannel.cpp:1739  inlined
23  XUL  mozilla::ipc::MessageChannel::RunMessage(mozilla::ipc::ActorLifecycleProxy*, mozilla::ipc::MessageChannel::MessageTask&)  ipc/glue/MessageChannel.cpp:1530  inlined
23  XUL  mozilla::ipc::MessageChannel::MessageTask::Run()  ipc/glue/MessageChannel.cpp:1630  cfi
24  XUL  mozilla::RunnableTask::Run()  xpcom/threads/TaskController.cpp:580  inlined
24  XUL  mozilla::TaskController::DoExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&)  xpcom/threads/TaskController.cpp:907  inlined
24  XUL  mozilla::TaskController::ExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&)  xpcom/threads/TaskController.cpp:730  cfi
25  XUL  mozilla::TaskController::ProcessPendingMTTask(bool)  xpcom/threads/TaskController.cpp:516  inlined
25  XUL  mozilla::TaskController::TaskController()::$_0::operator()() const  xpcom/threads/TaskController.cpp:234  inlined
25  XUL  mozilla::detail::RunnableFunction<mozilla::TaskController::TaskController()::$_0>::Run()  xpcom/threads/nsThreadUtils.h:548  cfi
26  XUL  nsThread::ProcessNextEvent(bool, bool*)  xpcom/threads/nsThread.cpp:1199  inlined
26  XUL  NS_ProcessPendingEvents(nsIThread*, unsigned int)  xpcom/threads/nsThreadUtils.cpp:445  cfi
27  XUL  nsBaseAppShell::NativeEventCallback()  widget/nsBaseAppShell.cpp:87  cfi
28  XUL  nsAppShell::ProcessGeckoEvents(void*)  widget/cocoa/nsAppShell.mm:541  cfi
29  CoreFoundation  __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__   cfi
30  CoreFoundation  __CFRunLoopDoSource0   cfi
31  CoreFoundation  __CFRunLoopDoSources0   cfi
32  CoreFoundation  __CFRunLoopRun   cfi
33  CoreFoundation  CFRunLoopRunSpecific   cfi
34  HIToolbox  RunCurrentEventLoopInMode   cfi
35  HIToolbox  ReceiveNextEventCommon   cfi
36  HIToolbox  _BlockUntilNextEventMatchingListInModeWithFilter   cfi
37  AppKit  _DPSNextEvent   cfi
38  AppKit  -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]   cfi
39  XUL  -[GeckoNSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]  widget/cocoa/nsAppShell.mm:196  cfi
40  AppKit  -[NSApplication run]   cfi
41  XUL  -[GeckoNSApplication run]  widget/cocoa/nsAppShell.mm:174  cfi
42  XUL  nsAppShell::Run()  widget/cocoa/nsAppShell.mm:871  cfi
43  XUL  nsAppStartup::Run()  toolkit/components/startup/nsAppStartup.cpp:296  cfi
44  XUL  XREMain::XRE_mainRun()  toolkit/xre/nsAppRunner.cpp:5741  cfi
45  XUL  XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&)  toolkit/xre/nsAppRunner.cpp:5953  cfi
46  XUL  XRE_main(int, char**, mozilla::BootstrapConfig const&)  toolkit/xre/nsAppRunner.cpp:6010  cfi
47  firefox  do_main(int, char**, char**)  browser/app/nsBrowserApp.cpp:230  inlined
47  firefox  main  browser/app/nsBrowserApp.cpp:448  cfi
48  dyld  start   cfi
```

Back to Bug 1901043 Comment 0