Closed
Bug 1108978
Opened 10 years ago
Closed 10 years ago
Crash in debug build CompositorOGL::CreateRenderTarget MOZ_ASSERT
Categories
(Core :: Graphics: Layers, defect)
Tracking
()
RESOLVED
DUPLICATE
of bug 1103258
People
(Reporter: ayang, Assigned: ethlin)
Details
Attachments
(1 file)
962 bytes,
patch
|
jerry
:
feedback+
|
Details | Diff | Splinter Review |
1. Play any video in http://people.mozilla.org/~cpearce/video/. 2. Press home key. 3. Bring the app to foreground. http://dxr.mozilla.org/mozilla-central/source/gfx/layers/opengl/CompositorOGL.cpp?from=CompositorOGL.cpp:455#455 0xb4714e92 in mozilla::layers::CompositorOGL::CreateRenderTarget (this=0xaf686970, aRect=..., aInit=mozilla::layers::INIT_MODE_CLEAR) at ../../../gfx/layers/opengl/CompositorOGL.cpp:455 455 MOZ_ASSERT(aRect.width != 0 && aRect.height != 0, "Trying to create a render target of invalid size"); (gdb) bt #0 0xb4714e92 in mozilla::layers::CompositorOGL::CreateRenderTarget (this=0xaf686970, aRect=..., aInit=mozilla::layers::INIT_MODE_CLEAR) at ../../../gfx/layers/opengl/CompositorOGL.cpp:455 #1 0xb46f1d5a in mozilla::layers::CreateOrRecycleTarget<mozilla::layers::ContainerLayerComposite> (aContainer=aContainer@entry=0xae705800, aManager=aManager@entry=0xae86e600) at ../../../gfx/layers/composite/ContainerLayerComposite.cpp:423 #2 0xb46f9de8 in mozilla::layers::ContainerPrepare<mozilla::layers::ContainerLayerComposite> (aContainer=0xae705800, aManager=0xae86e600, aClipRect=...) at ../../../gfx/layers/composite/ContainerLayerComposite.cpp:311 #3 0xb46f9d48 in mozilla::layers::ContainerPrepare<mozilla::layers::ContainerLayerComposite> (aContainer=0xb23d7c00, aManager=0xae86e600, aClipRect=...) at ../../../gfx/layers/composite/ContainerLayerComposite.cpp:285 #4 0xb46f9d48 in mozilla::layers::ContainerPrepare<mozilla::layers::ContainerLayerComposite> (aContainer=0xb128b800, aManager=0xae86e600, aClipRect=...) at ../../../gfx/layers/composite/ContainerLayerComposite.cpp:285 #5 0xb46f7118 in mozilla::layers::LayerManagerComposite::Render (this=this@entry=0xae86e600) at ../../../gfx/layers/composite/LayerManagerComposite.cpp:722 #6 0xb46f7508 in EndTransaction (aFlags=<optimized out>, this=0xae86e600, aCallback=<optimized out>, aCallbackData=<optimized out>) at ../../../gfx/layers/composite/LayerManagerComposite.cpp:309 #7 mozilla::layers::LayerManagerComposite::EndTransaction (this=0xae86e600, aCallback=<optimized out>, aCallbackData=<optimized out>, aFlags=<optimized out>) at ../../../gfx/layers/composite/LayerManagerComposite.cpp:261 #8 0xb46f75ee in mozilla::layers::LayerManagerComposite::EndEmptyTransaction (this=0xae86e600, aFlags=aFlags@entry=mozilla::layers::LayerManager::END_DEFAULT) at ../../../gfx/layers/composite/LayerManagerComposite.cpp:256 #9 0xb470dfba in mozilla::layers::CompositorParent::CompositeToTarget (this=0xabc62800, aTarget=0x0, aRect=<optimized out>) at ../../../gfx/layers/ipc/CompositorParent.cpp:903 #10 0xb46fca10 in DispatchToMethod<mozilla::layers::CompositorParent, void (mozilla::layers::CompositorParent::*)(mozilla::TimeStamp), mozilla::TimeStamp> (arg=..., method= (void (mozilla::layers::CompositorParent::*)(mozilla::layers::CompositorParent * const, mozilla::TimeStamp)) 0xb470e109 <mozilla::layers::CompositorParent::CompositeCallback(mozilla::TimeStamp)>, obj=<optimized out>) at ../../../ipc/chromium/src/base/tuple.h:393 #11 RunnableMethod<mozilla::layers::CompositorParent, void (mozilla::layers::CompositorParent::*)(mozilla::TimeStamp), Tuple1<mozilla::TimeStamp> >::Run (this=<optimized out>) at ../../../ipc/chromium/src/base/task.h:307 #12 0xb43a52bc in MessageLoop::RunTask (this=0xb2f0dcc0, task=0xad510af0) at ../../../ipc/chromium/src/base/message_loop.cc:361 #13 0xb43a846a in MessageLoop::DeferOrRunPendingTask (this=<optimized out>, pending_task=...) at ../../../ipc/chromium/src/base/message_loop.cc:369 #14 0xb43aa220 in DoWork (this=<optimized out>) at ../../../ipc/chromium/src/base/message_loop.cc:447 #15 MessageLoop::DoWork (this=0xb2f0dcc0) at ../../../ipc/chromium/src/base/message_loop.cc:426 #16 0xb43a5398 in base::MessagePumpDefault::Run (this=0xaaf0e420, delegate=0xb2f0dcc0) at ../../../ipc/chromium/src/base/message_pump_default.cc:34 #17 0xb43a6404 in MessageLoop::RunInternal (this=this@entry=0xb2f0dcc0) at ../../../ipc/chromium/src/base/message_loop.cc:233 #18 0xb43a641e in RunHandler (this=0xb2f0dcc0) at ../../../ipc/chromium/src/base/message_loop.cc:226 #19 MessageLoop::Run (this=this@entry=0xb2f0dcc0) at ../../../ipc/chromium/src/base/message_loop.cc:200 #20 0xb43ac13c in base::Thread::ThreadMain (this=0xb125f9a0) at ../../../ipc/chromium/src/base/thread.cc:170 #21 0xb439f094 in ThreadFunc (closure=<optimized out>) at ../../../ipc/chromium/src/base/platform_thread_posix.cc:39 #22 0xb6e8a22c in __thread_entry (func=0xb439f08d <ThreadFunc(void*)>, arg=0xb125f9a0, tls=0xb2f0ddd0) at bionic/libc/bionic/pthread_create.cpp:105 #23 0xb6e8a3c4 in pthread_create (thread_out=0xb125f9a8, attr=<optimized out>, start_routine=0xb439f08d <ThreadFunc(void*)>, arg=0x78) at bionic/libc/bionic/pthread_create.cpp:224 #24 0x00000000 in ?? ()
Reporter | ||
Updated•10 years ago
|
OS: Mac OS X → Gonk (Firefox OS)
Hardware: x86 → ARM
Assignee | ||
Comment 2•10 years ago
|
||
According to Bug 1054581, it is not recommended to create a zero-sized render target and the assertion only for debug build. So we should check the surface size before creating render target.
Flags: needinfo?(etlin)
Assignee | ||
Updated•10 years ago
|
Assignee: nobody → etlin
Assignee | ||
Comment 3•10 years ago
|
||
We shouldn't create a empty render target so add a check for surface size before creating render target.
Attachment #8534767 -
Flags: feedback?(hshih)
Comment 4•10 years ago
|
||
Comment on attachment 8534767 [details] [diff] [review] v1 - check surface size if it is valid before creating render target If we got a zero size visibleRect, we will just return a nullptr surface. And we will just skip this rendering task at [1]. It looks fine to me. [1] http://dxr.mozilla.org/mozilla-central/source/gfx/layers/composite/ContainerLayerComposite.cpp#460
Attachment #8534767 -
Flags: feedback?(hshih) → feedback+
Assignee | ||
Comment 5•10 years ago
|
||
Bug 890279 add an extra condition at [1] for ScrollInfoLayers, so the "Prepare" action will traverse all container layers even they are empty. Do we still need this condition when preparing render target? [1] http://dxr.mozilla.org/mozilla-central/source/gfx/layers/composite/ContainerLayerComposite.cpp#271
Flags: needinfo?(bgirard)
Assignee | ||
Comment 7•10 years ago
|
||
I check the test case in Bug 1103258 and problem is the same, so set to dupe.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•