Open Bug 1182365 Opened 9 years ago Updated 2 years ago

Crash: [Tiling:Client] Failed to allocate a TextureClient (osx)

Categories

(Core :: Graphics, defect)

Unspecified
macOS
defect

Tracking

()

People

(Reporter: paul, Unassigned)

References

Details

(Whiteboard: [gfx-noted])

Regularly, while using B2G Desktop with tiles enabled (osx), I run into this crash.

I don't know if it's a regression or not.

[Child 46968] WARNING: Transparent content with displayports can be expensive.: file /Users/paul/mozilla/src/layout/base/nsDisplayList.cpp, line 1621
[Child 46968] WARNING: didn't get an id (ipc/rcv) timed out 10004003
: file /Users/paul/mozilla/src/ipc/glue/SharedMemoryBasic_mach.cpp, line 589
[Parent 46966] WARNING: didn't get an id (ipc/rcv) timed out 10004003
: file /Users/paul/mozilla/src/ipc/glue/SharedMemoryBasic_mach.cpp, line 589
Hit MOZ_CRASH() at /Users/paul/mozilla/src/ipc/glue/CrossProcessMutex_posix.cpp:146
Crash Annotation GraphicsCriticalError: |[0][GFX1]: [Tiling:Client] Failed to allocate a TextureClient[GFX1]: [Tiling:Client] Failed to allocate a TextureClient
Assertion failure: false (An assert from the graphics logger), at /Users/paul/mozilla/src/gfx/2d/Logging.h:467
#01: mozilla::layers::ClientTiledLayerBuffer::ValidateTile(mozilla::layers::TileClient, mozilla::gfx::IntPointTyped<mozilla::gfx::UnknownUnits> const&, nsIntRegion const&)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xd03c28]
#01: mozilla::layers::AsyncPanZoomController::NotifyLayersUpdated(mozilla::layers::FrameMetrics const&, bool)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xcb3970]
#02: mozilla::layers::ClientTiledLayerBuffer::Update(nsIntRegion const&, nsIntRegion const&)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xd02e5f]
#02: mozilla::layers::APZCTreeManager::PrepareNodeForLayer(mozilla::layers::LayerMetricsWrapper const&, mozilla::layers::FrameMetrics const&, unsigned long long, mozilla::gfx::Matrix4x4 const&, mozilla::layers::HitTestingTreeNode*, mozilla::layers::HitTestingT[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xcb22a3]
#03: mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::APZCTreeManager::TreeBuildingState&, mozilla::layers::LayerMetricsWrapper const&, unsigned long long, mozilla::gfx::Matrix4x4 const&, mozilla::layers::HitTestingTreeNode*, mozilla::la[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xcb07e6]
#03: mozilla::layers::ClientTiledLayerBuffer::PaintThebes(nsIntRegion const&, nsIntRegion const&, void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xcf6a67]
#04: mozilla::layers::ClientTiledPaintedLayer::RenderHighPrecision(nsIntRegion&, nsIntRegion const&, void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xcf63ff]
#04: mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::APZCTreeManager::TreeBuildingState&, mozilla::layers::LayerMetricsWrapper const&, unsigned long long, mozilla::gfx::Matrix4x4 const&, mozilla::layers::HitTestingTreeNode*, mozilla::la[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xcb0a95]
#05: mozilla::layers::ClientTiledPaintedLayer::RenderLayer()[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xcf75fd]
#05: mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::APZCTreeManager::TreeBuildingState&, mozilla::layers::LayerMetricsWrapper const&, unsigned long long, mozilla::gfx::Matrix4x4 const&, mozilla::layers::HitTestingTreeNode*, mozilla::la[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xcb0a95]
#06: mozilla::layers::ClientContainerLayer::RenderLayer()[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xcefb23]
#06: mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::APZCTreeManager::TreeBuildingState&, mozilla::layers::LayerMetricsWrapper const&, unsigned long long, mozilla::gfx::Matrix4x4 const&, mozilla::layers::HitTestingTreeNode*, mozilla::la[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xcb0a95]
#07: mozilla::layers::ClientLayerManager::EndTransactionInternal(void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*, mozilla::layers::LayerManager::EndTransactionFlags)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xcf2465]
#07: mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::APZCTreeManager::TreeBuildingState&, mozilla::layers::LayerMetricsWrapper const&, unsigned long long, mozilla::gfx::Matrix4x4 const&, mozilla::layers::HitTestingTreeNode*, mozilla::la[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xcb0a95]
#08: mozilla::layers::APZCTreeManager::UpdateHitTestingTree(mozilla::layers::CompositorParent*, mozilla::layers::Layer*, bool, unsigned long long, unsigned int)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xcb0526]
#08: mozilla::layers::ClientLayerManager::EndTransaction(void (*)(mozilla::layers::PaintedLayer*, gfxContext*, nsIntRegion const&, mozilla::layers::DrawRegionClip, nsIntRegion const&, void*), void*, mozilla::layers::LayerManager::EndTransactionFlags)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xcf25dd]
#09: nsDisplayList::PaintRoot(nsDisplayListBuilder*, nsRenderingContext*, unsigned int)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x2ac281e]
#09: mozilla::layers::CompositorParent::ShadowLayersUpdated(mozilla::layers::LayerTransactionParent*, unsigned long long const&, mozilla::layers::TargetConfig const&, nsTArray<mozilla::layers::PluginWindowData> const&, bool, bool, unsigned int, bool)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xd40245]
#10: non-virtual thunk to mozilla::layers::CompositorParent::ShadowLayersUpdated(mozilla::layers::LayerTransactionParent*, unsigned long long const&, mozilla::layers::TargetConfig const&, nsTArray<mozilla::layers::PluginWindowData> const&, bool, bool, unsigned[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xd403c4]
#10: nsLayoutUtils::PaintFrame(nsRenderingContext*, nsIFrame*, nsRegion const&, unsigned int, unsigned int)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x2b06bd8]
#11: PresShell::Paint(nsView*, nsRegion const&, unsigned int)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x2b38db3]
#11: mozilla::layers::LayerTransactionParent::RecvUpdate(nsTArray<mozilla::layers::Edit>&&, unsigned long long const&, mozilla::layers::TargetConfig const&, nsTArray<mozilla::layers::PluginWindowData>&&, bool const&, bool const&, unsigned int const&, bool cons[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xd56fc8]
#12: mozilla::layers::PLayerTransactionParent::OnMessageReceived(IPC::Message const&, IPC::Message*&)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x5b2991]
#12: nsViewManager::ProcessPendingUpdatesPaint(nsIWidget*)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x270a34e]
#13: mozilla::layers::PCompositorParent::OnMessageReceived(IPC::Message const&, IPC::Message*&)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x7b60eb]
#13: nsViewManager::ProcessPendingUpdatesForView(nsView*, bool)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x2709f59]
#14: mozilla::ipc::MessageChannel::DispatchSyncMessage(IPC::Message const&, IPC::Message*&)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x49f80d]
#14: nsViewManager::WillPaintWindow(nsIWidget*)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x270b1ea]
#15: mozilla::ipc::MessageChannel::DispatchMessage(IPC::Message const&)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x49e9f4]
#15: nsView::WillPaintWindow(nsIWidget*)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x2708906]
#16: mozilla::ipc::MessageChannel::OnMaybeDequeueOne()[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x498d81]
#16: mozilla::widget::PuppetWidget::Paint()[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x27211f8]
#17: MessageLoop::DeferOrRunPendingTask(MessageLoop::PendingTask const&)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x46d70d]
#17: mozilla::widget::PuppetWidget::PaintTask::Run()[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x27214d2]
#18: MessageLoop::DoWork()[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x46da4b]
#18: nsThread::ProcessNextEvent(bool, bool*)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0xe02f9]
#19: NS_ProcessPendingEvents(nsIThread*, unsigned int)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x115e8f]
#19: base::MessagePumpDefault::Run(base::MessagePump::Delegate*)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x46e442]
#20: MessageLoop::Run()[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x46cdac]
#20: nsBaseAppShell::NativeEventCallback()[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x2729304]
#21: nsAppShell::ProcessGeckoEvents(void*)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x277c0fe]
#21: base::Thread::ThreadMain()[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x477bad]
#22: __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__[/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0x80a01]
#23: __CFRunLoopDoSources0[/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0x72b8d]
#24: __CFRunLoopRun[/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0x721bf]
#25: CFRunLoopRunSpecific[/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0x71bd8]
#26: RunCurrentEventLoopInMode[/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox +0x3256f]
#27: ReceiveNextEventCommon[/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox +0x322ea]
#28: _BlockUntilNextEventMatchingListInModeWithFilter[/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox +0x3212b]
#29: _DPSNextEvent[/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit +0x919bb]
#30: -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:][/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit +0x90f68]
#22: ThreadFunc(void*)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x477cba]
#23: _pthread_body[/usr/lib/system/libsystem_pthread.dylib +0x3268]
#24: _pthread_body[/usr/lib/system/libsystem_pthread.dylib +0x31e5]
#31: -[GeckoNSApplication nextEventMatchingMask:untilDate:inMode:dequeue:][/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x277b3a6]
#32: -[NSApplication run][/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit +0x86bf3]
#33: nsAppShell::Run()[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x277c7f5]
#34: XRE_RunAppShell[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x322dbb4]
#35: mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x4a3512]
#36: MessageLoop::Run()[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x46cdac]
#37: XRE_InitChildProcess[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/XUL +0x322d5cd]
#38: content_process_main(int, char**)[/Users/paul/mozilla/src/obj.debug.noindex/dist/B2GDebug.app/Contents/MacOS/plugin-container.app/Contents/MacOS/plugin-container +0x11c0]
OS: Unspecified → Mac OS X
Blocks: graphene
Whiteboard: [gfx-noted]
One way this can happen is if the parent process doesn't respond within 1 second when the child process tries to create shared memory - SharedMemoryBasic::ShareToProcess waits for 1000ms (kTimeout) until it gives up.
(In reply to Markus Stange [:mstange] from comment #1)
> One way this can happen is if the parent process doesn't respond within 1
> second when the child process tries to create shared memory

1 second is a *very* long response time for the compositor thread. It'd be useful to know what blocked it for so long!
Certainly. I'm not saying this was the reason when it happened for Paul.
When I saw this, the reason the compositor thread didn't respond was that I had paused it in a debugger.
(In reply to Markus Stange [:mstange] from comment #3)
> Certainly. I'm not saying this was the reason when it happened for Paul.
> When I saw this, the reason the compositor thread didn't respond was that I
> had paused it in a debugger.

Ah, Ok. In debug builds we crash in gfxCriticalError and I think we should keep this behaviour (in release builds there's probably going to be a black tile or something like that, since we failed to allocate it but try not to crash). We should add some more aggressive assertions in the places that can cause us to fail the shmem allocation and log the reason so as to know whether we are hitting the timemout, the fd limit, OOM, etc.
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.