Closed
Bug 853976
Opened 12 years ago
Closed 12 years ago
Another genlock failure as we are not setting READ_ONLY access mode where we should (inside SyncFrontBufferToBackBuffer)
Categories
(Core :: Graphics: Layers, defect)
Tracking
()
RESOLVED
WORKSFORME
People
(Reporter: bjacob, Unassigned)
References
Details
Look at what's going on between frame 8 and frame 7!
#0 __libc_android_abort () at bionic/libc/unistd/abort.c:82
#1 0x40047df2 in perform_lock_unlock_operation (buffer_handle=0x48bfe510, lockType=1, timeout=1000)
at hardware/qcom/display/libgenlock/genlock.cpp:144
#2 0x40048262 in genlock_lock_buffer (buffer_handle=0x48bfe510, lockType=GENLOCK_WRITE_LOCK, timeout=1000)
at hardware/qcom/display/libgenlock/genlock.cpp:349
#3 0x4316aeee in gralloc_lock (module=0x4316c250, handle=0x48bfe510, usage=<value optimized out>, l=<value optimized out>, t=0, w=320, h=480,
vaddr=0xbec2c88c) at hardware/qcom/display/libgralloc/mapper.cpp:256
#4 0x401bc648 in android::GraphicBufferMapper::lock (this=0x4316c250, handle=<value optimized out>, usage=<value optimized out>, bounds=...,
vaddr=0xbec2c88c) at frameworks/base/libs/ui/GraphicBufferMapper.cpp:76
#5 0x401bbb8e in android::GraphicBuffer::lock (this=0x48f0eb80, usage=51, rect=..., vaddr=<value optimized out>)
at frameworks/base/libs/ui/GraphicBuffer.cpp:175
#6 0x401bbbb6 in android::GraphicBuffer::lock (this=0x0, usage=320, vaddr=0xbec2c88c) at frameworks/base/libs/ui/GraphicBuffer.cpp:162
#7 0x41dfa7f4 in mozilla::layers::ShadowLayerForwarder::PlatformOpenDescriptor (aMode=mozilla::layers::OPEN_READ_WRITE, aSurface=...)
at /hack/mozilla-graphics/gfx/layers/ipc/ShadowLayerUtilsGralloc.cpp:367
#8 0x41df0a36 in mozilla::layers::ShadowLayerForwarder::OpenDescriptor (aMode=mozilla::layers::OPEN_READ_ONLY, aSurface=...)
at /hack/mozilla-graphics/gfx/layers/ipc/ShadowLayers.cpp:452
#9 0x41df660e in mozilla::layers::TextureClientShmem::GetSurface (this=0x483a26d0) at /hack/mozilla-graphics/gfx/layers/client/TextureClient.cpp:277
#10 0x41df663c in mozilla::layers::TextureClientShmem::LockSurface (this=0x0) at ../../dist/include/mozilla/layers/TextureClient.h:231
#11 0x41dc4800 in mozilla::layers::ThebesLayerBuffer::EnsureBuffer (this=0x49455330) at /hack/mozilla-graphics/gfx/layers/ThebesLayerBuffer.cpp:334
#12 0x41dc4880 in mozilla::layers::ThebesLayerBuffer::GetContextForQuadrantUpdate (this=0x0, aBounds=...)
at /hack/mozilla-graphics/gfx/layers/ThebesLayerBuffer.cpp:270
#13 0x41de759e in mozilla::layers::ContentClientDoubleBuffered::UpdateDestinationFrom (this=<value optimized out>, aSource=..., aUpdateRegion=...)
at /hack/mozilla-graphics/gfx/layers/client/ContentClient.cpp:429
#14 0x41de7714 in mozilla::layers::ContentClientDoubleBuffered::SyncFrontBufferToBackBuffer (this=0x49455320)
at /hack/mozilla-graphics/gfx/layers/client/ContentClient.cpp:417
#15 0x41dba32a in mozilla::layers::BasicThebesLayer::PaintThebes (this=0x44852880, aContext=0x46529630, aMaskLayer=<value optimized out>,
aCallback=<value optimized out>, aCallbackData=0xbec2de18, aReadback=0xbec2d0ec)
at /hack/mozilla-graphics/gfx/layers/basic/BasicThebesLayer.cpp:89
#16 0x41dbaab2 in mozilla::layers::BasicShadowableThebesLayer::PaintThebes (this=0x44852880, aContext=0x46529630, aMaskLayer=<value optimized out>,
aCallback=0x40e233f1 <mozilla::FrameLayerBuilder::DrawThebesLayer(mozilla::layers::ThebesLayer*, gfxContext*, nsIntRegion const&, nsIntRegion const&, void*)>, aCallbackData=0xbec2de18, aReadback=0xbec2d0ec) at /hack/mozilla-graphics/gfx/layers/basic/BasicThebesLayer.cpp:265
#17 0x41db3920 in mozilla::layers::BasicLayerManager::PaintSelfOrChildren (this=0x47be3420, aPaintContext=..., aGroupTarget=0x46529630)
at /hack/mozilla-graphics/gfx/layers/basic/BasicLayerManager.cpp:831
#18 0x41db3ef6 in mozilla::layers::BasicLayerManager::PaintLayer (this=0x47be3420, aTarget=0x46529630, aLayer=0x44852880,
aCallback=<value optimized out>, aCallbackData=0xbec2de18, aReadback=0xbec2d0ec)
at /hack/mozilla-graphics/gfx/layers/basic/BasicLayerManager.cpp:938
#19 0x41db39ee in mozilla::layers::BasicLayerManager::PaintSelfOrChildren (this=0x47be3420, aPaintContext=..., aGroupTarget=0x46529630)
at /hack/mozilla-graphics/gfx/layers/basic/BasicLayerManager.cpp:846
#20 0x41db3ef6 in mozilla::layers::BasicLayerManager::PaintLayer (this=0x47be3420, aTarget=0x46529630, aLayer=0x4931b400,
aCallback=<value optimized out>, aCallbackData=0xbec2de18, aReadback=0xbec2d534)
at /hack/mozilla-graphics/gfx/layers/basic/BasicLayerManager.cpp:938
#21 0x41db39ee in mozilla::layers::BasicLayerManager::PaintSelfOrChildren (this=0x47be3420, aPaintContext=..., aGroupTarget=0x46529630)
at /hack/mozilla-graphics/gfx/layers/basic/BasicLayerManager.cpp:846
#22 0x41db3ef6 in mozilla::layers::BasicLayerManager::PaintLayer (this=0x47be3420, aTarget=0x46529630, aLayer=0x4931ac00,
aCallback=<value optimized out>, aCallbackData=0xbec2de18, aReadback=0x0) at /hack/mozilla-graphics/gfx/layers/basic/BasicLayerManager.cpp:938
#23 0x41db4a68 in mozilla::layers::BasicLayerManager::EndTransactionInternal (this=0x47be3420, aCallback=<value optimized out>,
aCallbackData=<value optimized out>, aFlags=<value optimized out>) at /hack/mozilla-graphics/gfx/layers/basic/BasicLayerManager.cpp:591
#24 0x41db4bca in mozilla::layers::BasicLayerManager::EndTransaction (this=0x0, aCallback=0x140, aCallbackData=0x1e0, aFlags=3200436364)
at /hack/mozilla-graphics/gfx/layers/basic/BasicLayerManager.cpp:510
#25 0x41db502c in mozilla::layers::BasicShadowLayerManager::EndTransaction (this=0x0, aCallback=warning: (Internal error: pc 0x140 in read in psymtab, but not in symtab.)
0x140, aCallbackData=0x1e0, aFlags=3200436364)
at /hack/mozilla-graphics/gfx/layers/basic/BasicLayerManager.cpp:1157
#26 0x40e5c52a in nsDisplayList::PaintForFrame (this=<value optimized out>, aBuilder=0xbec2de18, aCtx=<value optimized out>,
aForFrame=<value optimized out>, aFlags=13) at /hack/mozilla-graphics/layout/base/nsDisplayList.cpp:1172
#27 0x40e5c762 in nsDisplayList::PaintRoot (this=0xbec2e1a0, aBuilder=0xbec2de18, aCtx=0x0, aFlags=13)
at /hack/mozilla-graphics/layout/base/nsDisplayList.cpp:1033
#28 0x40e76fa4 in nsLayoutUtils::PaintFrame (aRenderingContext=<value optimized out>, aFrame=0x47e06298, aDirtyRegion=<value optimized out>,
aBackstop=<value optimized out>, aFlags=772) at /hack/mozilla-graphics/layout/base/nsLayoutUtils.cpp:2038
#29 0x40e8c31e in PresShell::Paint (this=0x43ed6380, aViewToPaint=0x47be0970, aDirtyRegion=<value optimized out>, aFlags=<value optimized out>)
at /hack/mozilla-graphics/layout/base/nsPresShell.cpp:5618
#30 0x412c2fd2 in nsViewManager::ProcessPendingUpdatesForView (this=0x47b61400, aView=0x47be0970, aFlushDirtyRegion=<value optimized out>)
at /hack/mozilla-graphics/view/src/nsViewManager.cpp:400
#31 0x412c307a in nsViewManager::ProcessPendingUpdates (this=<value optimized out>) at /hack/mozilla-graphics/view/src/nsViewManager.cpp:1120
#32 0x40e97202 in nsRefreshDriver::Tick (this=<value optimized out>, aNowEpoch=909392216, aNowTime=...)
at /hack/mozilla-graphics/layout/base/nsRefreshDriver.cpp:960
#33 0x40e977e2 in mozilla::RefreshDriverTimer::TickDriver (aTimer=<value optimized out>, aClosure=<value optimized out>)
at /hack/mozilla-graphics/layout/base/nsRefreshDriver.cpp:164
#34 mozilla::RefreshDriverTimer::Tick (aTimer=<value optimized out>, aClosure=<value optimized out>)
at /hack/mozilla-graphics/layout/base/nsRefreshDriver.cpp:156
#35 mozilla::RefreshDriverTimer::TimerTick (aTimer=<value optimized out>, aClosure=<value optimized out>)
at /hack/mozilla-graphics/layout/base/nsRefreshDriver.cpp:181
#36 0x41d224d2 in nsTimerImpl::Fire (this=0x47554650) at /hack/mozilla-graphics/xpcom/threads/nsTimerImpl.cpp:498
Reporter | ||
Comment 1•12 years ago
|
||
Ah no, GDB got param values wrong there. What's really happening is we're not setting the access mode to read-only where we should.
(gdb) frame 9
#9 0x41df660e in mozilla::layers::TextureClientShmem::GetSurface (this=0x483a26d0) at /hack/mozilla-graphics/gfx/layers/client/TextureClient.cpp:277
277 mSurface = ShadowLayerForwarder::OpenDescriptor(mode, mDescriptor);
(gdb) l
272 }
273 MOZ_ASSERT(mAccessMode == ACCESS_READ_WRITE || mAccessMode == ACCESS_READ_ONLY);
274 OpenMode mode = mAccessMode == ACCESS_READ_WRITE
275 ? OPEN_READ_WRITE
276 : OPEN_READ_ONLY;
277 mSurface = ShadowLayerForwarder::OpenDescriptor(mode, mDescriptor);
278 }
279
280 return mSurface.get();
281 }
(gdb) p mAccessMode
$4 = mozilla::layers::TextureClient::ACCESS_READ_WRITE
Summary: Another genlock failure as we are still mis-propagating READ_ONLY as READ_WRITE !! → Another genlock failure as we are not setting READ_ONLY access mode where we should (inside SyncFrontBufferToBackBuffer)
Reporter | ||
Comment 2•12 years ago
|
||
Pushed an assertion to guard this:
http://hg.mozilla.org/projects/graphics/rev/b5c090ea0376
Reporter | ||
Updated•12 years ago
|
Version: Trunk → Other Branch
Reporter | ||
Comment 3•12 years ago
|
||
Haven't gotten this again recently. Assuming fixed.
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → WORKSFORME
You need to log in
before you can comment on or make changes to this bug.
Description
•