Closed
Bug 1211506
Opened 9 years ago
Closed 9 years ago
Freeze when scrolling the page
Categories
(Core :: Panning and Zooming, defect)
Core
Panning and Zooming
Tracking
()
RESOLVED
FIXED
mozilla44
Tracking | Status | |
---|---|---|
firefox44 | --- | fixed |
People
(Reporter: bbouvier, Assigned: botond)
References
Details
Attachments
(2 files)
So I don't really have STR, I was just using Firefox Nightly (latest ones) and it froze at some point. I attached a gdb to it to see what was going on, and saw the following stack traces, which indicate a deadlock:
Firefox:
#0 __lll_lock_wait ()
at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1 0x00007f628af1768d in _L_lock_1082 ()
from /lib/x86_64-linux-gnu/libpthread.so.0
#2 0x00007f628af17607 in __GI___pthread_mutex_lock (mutex=0x7f625d561ec0)
at ../nptl/pthread_mutex_lock.c:134
#3 0x00007f62897e9181 in PR_Lock ()
from /home/ben/.files/private/bin/firefox/libnspr4.so
#4 0x00007f627d7a96bb in mozilla::layers::APZCTreeManager::GetScreenToApzcTransform(mozilla::layers::AsyncPanZoomController const*) const ()
from /home/ben/.files/private/bin/firefox/libxul.so
#5 0x00007f627d7ad0ac in mozilla::layers::TransformDisplacement(mozilla::layers::APZCTreeManager*, mozilla::layers::AsyncPanZoomController*, mozilla::layers::AsyncPanZoomController*, mozilla::gfx::PointTyped<mozilla::ParentLayerPixel, float>&, mozilla::gfx::PointTyped<mozilla::ParentLayerPixel, float>&) ()
from /home/ben/.files/private/bin/firefox/libxul.so
#6 0x00007f627d7b437f in mozilla::layers::APZCTreeManager::DispatchScroll(mozilla::layers::AsyncPanZoomController*, mozilla::gfx::PointTyped<mozilla::ParentLayerPixel, float>&, mozilla::gfx::PointTyped<mozilla::ParentLayerPixel, float>&, mozilla::layers::OverscrollHandoffState&) ()
from /home/ben/.files/private/bin/firefox/libxul.so
#7 0x00007f627d7b4285 in mozilla::layers::AsyncPanZoomController::AttemptScroll(mozilla::gfx::PointTyped<mozilla::ParentLayerPixel, float>&, mozilla::gfx::Poin---Type <return> to continue, or q <return> to quit---
tTyped<mozilla::ParentLayerPixel, float>&, mozilla::layers::OverscrollHandoffState&) () from /home/ben/.files/private/bin/firefox/libxul.so
#8 0x00007f627d7b4346 in mozilla::layers::APZCTreeManager::DispatchScroll(mozilla::layers::AsyncPanZoomController*, mozilla::gfx::PointTyped<mozilla::ParentLayerPixel, float>&, mozilla::gfx::PointTyped<mozilla::ParentLayerPixel, float>&, mozilla::layers::OverscrollHandoffState&) ()
from /home/ben/.files/private/bin/firefox/libxul.so
#9 0x00007f627d7b488c in mozilla::layers::AsyncPanZoomController::OnScrollWheel(mozilla::ScrollWheelInput const&) ()
from /home/ben/.files/private/bin/firefox/libxul.so
#10 0x00007f627d7bda0b in mozilla::layers::AsyncPanZoomController::HandleInputEvent(mozilla::InputData const&, mozilla::gfx::Matrix4x4 const&) ()
from /home/ben/.files/private/bin/firefox/libxul.so
#11 0x00007f627d7bd41b in mozilla::layers::InputQueue::MaybeHandleCurrentBlock(mozilla::layers::CancelableBlockState*, mozilla::InputData const&) ()
from /home/ben/.files/private/bin/firefox/libxul.so
#12 0x00007f627d7be098 in mozilla::layers::InputQueue::ReceiveScrollWheelInput(nsRefPtr<mozilla::layers::AsyncPanZoomController> const&, bool, mozilla::ScrollWheelInput const&, unsigned long*) ()
from /home/ben/.files/private/bin/firefox/libxul.so
#13 0x00007f627d7be119 in mozilla::layers::InputQueue::ReceiveInputEvent(nsRefPtr<mozilla::layers::AsyncPanZoomController> const&, bool, mozilla::InputData const&, unsigned long*) () from /home/ben/.files/private/bin/firefox/libxul.so
---Type <return> to continue, or q <return> to quit---
#14 0x00007f627d7be53f in mozilla::layers::APZCTreeManager::ReceiveInputEvent(mozilla::InputData&, mozilla::layers::ScrollableLayerGuid*, unsigned long*) ()
from /home/ben/.files/private/bin/firefox/libxul.so
#15 0x00007f627d7bea9c in mozilla::layers::APZCTreeManager::ProcessWheelEvent(mozilla::WidgetWheelEvent&, mozilla::layers::ScrollableLayerGuid*, unsigned long*) () from /home/ben/.files/private/bin/firefox/libxul.so
#16 0x00007f627d7c01d0 in mozilla::layers::APZCTreeManager::ReceiveInputEvent(mozilla::WidgetInputEvent&, mozilla::layers::ScrollableLayerGuid*, unsigned long*) () from /home/ben/.files/private/bin/firefox/libxul.so
#17 0x00007f627e3faf35 in nsBaseWidget::DispatchAPZAwareEvent(mozilla::WidgetInputEvent*) () from /home/ben/.files/private/bin/firefox/libxul.so
#18 0x00007f627e426f64 in nsWindow::OnScrollEvent(_GdkEventScroll*) ()
from /home/ben/.files/private/bin/firefox/libxul.so
#19 0x00007f627e426f9e in scroll_event_cb(_GtkWidget*, _GdkEventScroll*) ()
from /home/ben/.files/private/bin/firefox/libxul.so
#20 0x00007f6287d8cd6e in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#21 0x00007f62856145e7 in ?? ()
from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#22 0x00007f628562d088 in g_signal_emit_valist ()
from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#23 0x00007f628562dce2 in g_signal_emit ()
from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#24 0x00007f6287eb5c64 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
---Type <return> to continue, or q <return> to quit---
#25 0x00007f6287d8b0bc in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#26 0x00007f6287d8c94a in gtk_main_do_event ()
from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#27 0x00007f6287990c32 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#28 0x00007f6285344e04 in g_main_context_dispatch ()
from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#29 0x00007f6285345048 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#30 0x00007f62853450ec in g_main_context_iteration ()
from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#31 0x00007f627ceec11f in nsAppShell::ProcessNextNativeEvent(bool) ()
from /home/ben/.files/private/bin/firefox/libxul.so
#32 0x00007f627ceeb224 in nsBaseAppShell::OnProcessNextEvent(nsIThreadInternal*, bool) () from /home/ben/.files/private/bin/firefox/libxul.so
#33 0x00007f627ce2d838 in nsThread::ProcessNextEvent(bool, bool*) ()
from /home/ben/.files/private/bin/firefox/libxul.so
#34 0x00007f627ce3679e in NS_ProcessNextEvent(nsIThread*, bool) ()
from /home/ben/.files/private/bin/firefox/libxul.so
#35 0x00007f627ce4e833 in mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) () from /home/ben/.files/private/bin/firefox/libxul.so
#36 0x00007f627d3b8a13 in MessageLoop::Run() ()
from /home/ben/.files/private/bin/firefox/libxul.so
#37 0x00007f627e40c168 in nsBaseAppShell::Run() ()
from /home/ben/.files/private/bin/firefox/libxul.so
---Type <return> to continue, or q <return> to quit---
#38 0x00007f627e9cafec in nsAppStartup::Run() ()
from /home/ben/.files/private/bin/firefox/libxul.so
#39 0x00007f627ea019d9 in XREMain::XRE_mainRun() ()
from /home/ben/.files/private/bin/firefox/libxul.so
#40 0x00007f627ea04028 in XREMain::XRE_main(int, char**, nsXREAppData const*)
() from /home/ben/.files/private/bin/firefox/libxul.so
#41 0x00007f627ea042b8 in XRE_main ()
from /home/ben/.files/private/bin/firefox/libxul.so
#42 0x0000000000413836 in do_main(int, char**, nsIFile*) ()
#43 0x000000000040597e in main ()
plugin-container:
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1 0x00007f2909d40519 in PR_WaitCondVar () from /home/ben/.files/private/bin/firefox/libnspr4.so
#2 0x00007f2905833735 in mozilla::CondVar::Wait(unsigned int) [clone .isra.7] () from /home/ben/.files/private/bin/firefox/libxul.so
#3 0x00007f2905dd6aca in mozilla::ipc::MessageChannel::WaitForSyncNotify() () from /home/ben/.files/private/bin/firefox/libxul.so
#4 0x00007f2905ddddc4 in mozilla::ipc::MessageChannel::Send(IPC::Message*, IPC::Message*) () from /home/ben/.files/private/bin/firefox/libxul.so
#5 0x00007f2905e5eee0 in mozilla::layers::PLayerTransactionChild::SendUpdate(nsTArray<mozilla::layers::Edit> const&, unsigned long const&, mozilla::layers::TargetConfig const&, nsTArray<mozilla::layers::PluginWindowData> const&, bool const&, bool const&, unsigned int const&, bool const&, mozilla::TimeStamp const&, int const&, nsTArray<mozilla::layers::EditReply>*) () from /home/ben/.files/private/bin/firefox/libxul.so
#6 0x00007f2906208eae in mozilla::layers::ShadowLayerForwarder::EndTransaction(nsTArray<mozilla::layers::EditReply>*, nsIntRegion const&, unsigned long, bool, unsigned int, bool, mozilla::TimeStamp const&, bool*) ()
from /home/ben/.files/private/bin/firefox/libxul.so
#7 0x00007f29061e45e6 in mozilla::layers::ClientLayerManager::ForwardTransaction(bool) () from /home/ben/.files/private/bin/firefox/libxul.so
#8 0x00007f29061e4841 in mozilla::layers::ClientLayerManager::EndTransaction(void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*, mozilla::layers::LayerManager::EndTransactionFlags) () from /home/ben/.files/private/bin/firefox/libxul.so
#9 0x00007f2906f82156 in nsDisplayList::PaintRoot(nsDisplayListBuilder*, nsRenderingContext*, unsigned int) () from /home/ben/.files/private/bin/firefox/libxul.so
#10 0x00007f2906fbba73 in nsLayoutUtils::PaintFrame(nsRenderingContext*, nsIFrame*, nsRegion const&, unsigned int, unsigned int) () from /home/ben/.files/private/bin/firefox/libxul.so
#11 0x00007f2906fbc4c6 in PresShell::Paint(nsView*, nsRegion const&, unsigned int) () from /home/ben/.files/private/bin/firefox/libxul.so
#12 0x00007f2906dffe91 in nsViewManager::ProcessPendingUpdatesPaint(nsIWidget*) () from /home/ben/.files/private/bin/firefox/libxul.so
#13 0x00007f2906e000dc in nsViewManager::ProcessPendingUpdatesForView(nsView*, bool) () from /home/ben/.files/private/bin/firefox/libxul.so
#14 0x00007f290592f24e in nsRefreshDriver::Tick(long, mozilla::TimeStamp) () from /home/ben/.files/private/bin/firefox/libxul.so
#15 0x00007f2906f4a413 in mozilla::RefreshDriverTimer::Tick(long, mozilla::TimeStamp) () from /home/ben/.files/private/bin/firefox/libxul.so
#16 0x00007f2906f4a52e in mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::TickRefreshDriver(mozilla::TimeStamp) () from /home/ben/.files/private/bin/firefox/libxul.so
#17 0x00007f2906f4a66a in mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::NotifyVsync(mozilla::TimeStamp) () from /home/ben/.files/private/bin/firefox/libxul.so
#18 0x00007f29070cbe7f in mozilla::layout::VsyncChild::RecvNotify(mozilla::TimeStamp const&) () from /home/ben/.files/private/bin/firefox/libxul.so
#19 0x00007f2905ee286f in mozilla::layout::PVsyncChild::OnMessageReceived(IPC::Message const&) () from /home/ben/.files/private/bin/firefox/libxul.so
#20 0x00007f2905e042e3 in mozilla::ipc::PBackgroundChild::OnMessageReceived(IPC::Message const&) () from /home/ben/.files/private/bin/firefox/libxul.so
#21 0x00007f2905855691 in mozilla::ipc::MessageChannel::DispatchAsyncMessage(IPC::Message const&) () from /home/ben/.files/private/bin/firefox/libxul.so
#22 0x00007f290585613c in mozilla::ipc::MessageChannel::DispatchMessage(IPC::Message const&) () from /home/ben/.files/private/bin/firefox/libxul.so
#23 0x00007f2905856ce5 in mozilla::ipc::MessageChannel::OnMaybeDequeueOne() () from /home/ben/.files/private/bin/firefox/libxul.so
#24 0x00007f2905853fae in MessageLoop::DoWork() () from /home/ben/.files/private/bin/firefox/libxul.so
#25 0x00007f2905dd5680 in mozilla::ipc::DoWorkRunnable::Run() () from /home/ben/.files/private/bin/firefox/libxul.so
#26 0x00007f2905834b82 in nsThread::ProcessNextEvent(bool, bool*) () from /home/ben/.files/private/bin/firefox/libxul.so
#27 0x00007f290583d79e in NS_ProcessNextEvent(nsIThread*, bool) () from /home/ben/.files/private/bin/firefox/libxul.so
#28 0x00007f29058558af in mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) () from /home/ben/.files/private/bin/firefox/libxul.so
#29 0x00007f2905dbfa13 in MessageLoop::Run() () from /home/ben/.files/private/bin/firefox/libxul.so
#30 0x00007f2906e13168 in nsBaseAppShell::Run() () from /home/ben/.files/private/bin/firefox/libxul.so
#31 0x00007f290740b7a2 in XRE_RunAppShell () from /home/ben/.files/private/bin/firefox/libxul.so
#32 0x00007f2905dbfa13 in MessageLoop::Run() () from /home/ben/.files/private/bin/firefox/libxul.so
#33 0x00007f290740be77 in XRE_InitChildProcess () from /home/ben/.files/private/bin/firefox/libxul.so
#34 0x0000000000416be1 in content_process_main(int, char**) ()
#35 0x00007f2903eb0ec5 in __libc_start_main (main=0x408c20 <main>, argc=10, argv=0x7fff233dc738, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff233dc728) at libc-start.c:287
#36 0x0000000000416445 in _start ()
Here's some info about my graphics setup from about:support that might be relevant (also, I'm using e10s):
Graphics
Adapter Description NVIDIA Corporation -- GeForce GT 750M/PCIe/SSE2
Asynchronous Pan/Zoom wheel input enabled
Device ID GeForce GT 750M/PCIe/SSE2
Driver Version 4.5.0 NVIDIA 346.96
GPU Accelerated Windows 0/1 Basic (OMTC)
Supports Hardware H264 Decoding No;
Vendor ID NVIDIA Corporation
WebGL Renderer NVIDIA Corporation -- GeForce GT 750M/PCIe/SSE2
windowLayerManagerRemote true
AzureCanvasBackend cairo
AzureContentBackend cairo
AzureFallbackCanvasBackend none
AzureSkiaAccelerated 0
CairoUseXRender 1
(#0) Error Invalid draw target type specified: 0
(#3) Error Failed GetAsDrawTarget true, 0x7f2c431cd000 + 16, Size(160,90), 640, 1
(#4) Error Invalid draw target type specified: 0
(#5) Error Failed GetAsDrawTarget true, 0x7f2c42e25000 + 16, Size(160,90), 640, 1
(#6) Error Invalid draw target type specified: 0
(#7) Error Failed GetAsDrawTarget true, 0x7f2c436ee000 + 16, Size(160,90), 640, 1
Comment 1•9 years ago
|
||
If you hit this again, can you also print a stack trace from the Compositor thread in the parent process? That's the thread that the content process main thread is blocking on here.
Reporter | ||
Comment 2•9 years ago
|
||
Happened again today, see attached debug log (contains main process main thread bt, plus compositor thread on the main process, and plugin-container).
Flags: needinfo?(mstange)
Comment 3•9 years ago
|
||
Perfect, thanks!
Assignee | ||
Comment 4•9 years ago
|
||
This is a deadlock caused by a violation of APZ lock ordering [1]: OnScrollWheel() is calling CallDispatchScroll(), which might need to acquire the tree lock, while holding the APZC lock. Looks like a regression from bug 1152011.
[1] https://dxr.mozilla.org/mozilla-central/rev/607a236c229994df99766c005f9ec729532d7747/gfx/layers/apz/src/APZCTreeManager.h#57
Assignee | ||
Comment 5•9 years ago
|
||
Bug 1211506 - Respect the APZ lock ordering in AsyncPanZoomController::OnScrollWheel(). r=mstange
Attachment #8675122 -
Flags: review?(mstange)
Assignee | ||
Updated•9 years ago
|
Assignee: nobody → botond
Comment 6•9 years ago
|
||
Comment on attachment 8675122 [details]
MozReview Request: Bug 1211506 - Respect the APZ lock ordering in AsyncPanZoomController::OnScrollWheel(). r=mstange
https://reviewboard.mozilla.org/r/22331/#review19947
Attachment #8675122 -
Flags: review?(mstange) → review+
Assignee | ||
Comment 7•9 years ago
|
||
Adjusted comment and landed.
Comment 9•9 years ago
|
||
Status: NEW → RESOLVED
Closed: 9 years ago
status-firefox44:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla44
You need to log in
before you can comment on or make changes to this bug.
Description
•