Closed Bug 1016540 Opened 6 years ago Closed 5 years ago

Intermittent emulator mochitest Shutdown, test_bug902651.html,test_bug634834.html crash [@ mozilla::layers::GrallocTextureSourceOGL::DeallocateDeviceData()] from Assertion failure: gl(), at ../../../gecko/gfx/layers/opengl/GrallocTextureHost.cpp:273

Categories

(Core :: Graphics: Layers, defect)

ARM
Gonk (Firefox OS)
defect
Not set

Tracking

()

RESOLVED FIXED
mozilla35
Tracking Status
firefox33 --- wontfix
firefox34 --- fixed
firefox35 --- fixed
firefox-esr31 --- unaffected
b2g-v2.0 --- unaffected
b2g-v2.0M --- unaffected
b2g-v2.1 --- fixed
b2g-v2.2 --- fixed

People

(Reporter: ahal, Assigned: nical)

References

Details

(Keywords: intermittent-failure)

Attachments

(1 file)

https://tbpl.mozilla.org/php/getParsedLog.php?id=40472537&tree=Try

11:31:05     INFO -  A/MOZ_Assert(  667): Assertion failure: gl(), at ../../../gecko/gfx/layers/opengl/GrallocTextureHost.cpp:273
11:31:05     INFO -  I/Gecko   (  667): [Parent 667] WARNING: pipe error: Broken pipe: file ../../../gecko/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 727
11:31:05     INFO -  [Parent 667] WARNING: pipe error: Broken pipe: file ../../../gecko/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 727
11:31:05     INFO -  I/Gecko   (  667): [Parent 667] WARNING: pipe error: Broken pipe: file ../../../gecko/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 727
11:31:05     INFO -  [Parent 667] WARNING: pipe error: Broken pipe: file ../../../gecko/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 727
11:31:05     INFO -  I/Gecko   (  667): [Parent 667] WARNING: pipe error: Broken pipe: file ../../../gecko/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 727
11:31:05     INFO -  [Parent 667] WARNING: pipe error: Broken pipe: file ../../../gecko/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 727
11:31:05     INFO -  I/Gecko   (  667): [Parent 667] WARNING: pipe error: Broken pipe: file ../../../gecko/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 727
11:31:05     INFO -  [Parent 667] WARNING: pipe error: Broken pipe: file ../../../gecko/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 727
11:31:07     INFO -  I/Gecko   (  789): I/Gecko   (  827): [Child 827] ###!!! ABORT: ActorDestroy by IPC channel failure at CompositorChild: file ../../../gecko/gfx/layers/ipc/CompositorChild.cpp, line 169
11:31:07     INFO -  [Child 827] ###!!! ABORT: ActorDestroy by IPC channel failure at CompositorChild: file ../../../gecko/gfx/layers/ipc/CompositorChild.cpp, line 169
11:31:07     INFO -  I/Gecko   (  809): [Child 809] ###!!! ABORT: ActorDestroy by IPC channel failure at CompositorChild: file ../../../gecko/gfx/layers/ipc/CompositorChild.cpp, line 169
11:31:07     INFO -  [Child 809] ###!!! ABORT: ActorDestroy by IPC channel failure at CompositorChild: file ../../../gecko/gfx/layers/ipc/CompositorChild.cpp, line 169
11:31:07     INFO -  [Child 789] ###!!! ABORT: ActorDestroy by IPC channel failure at CompositorChild: file ../../../gecko/gfx/layers/ipc/CompositorChild.cpp, line 169
11:31:07     INFO -  [Child 789] ###!!! ABORT: ActorDestroy by IPC channel failure at CompositorChild: file ../../../gecko/gfx/layers/ipc/CompositorChild.cpp, line 169

This happens when setting MOZ_CRASHREPORTER_SHUTDOWN (which aborts gecko on child process crashes) and calling appStartup.quit().
(Tweaking summary to make this show in TBPL's bug suggestion list :-))
Summary: Intermittent emulator mochitest | Assertion failure: gl(), at ../../../gecko/gfx/layers/opengl/GrallocTextureHost.cpp:273 → Intermittent emulator mochitest Shutdown crash [@ mozilla::layers::GrallocTextureSourceOGL::DeallocateDeviceData()] from Assertion failure: gl(), at ../../../gecko/gfx/layers/opengl/GrallocTextureHost.cpp:273
https://tbpl.mozilla.org/php/getParsedLog.php?id=46337796&tree=B2g-Inbound
Summary: Intermittent emulator mochitest Shutdown crash [@ mozilla::layers::GrallocTextureSourceOGL::DeallocateDeviceData()] from Assertion failure: gl(), at ../../../gecko/gfx/layers/opengl/GrallocTextureHost.cpp:273 → Intermittent emulator mochitest Shutdown, test_bug902651.html crash [@ mozilla::layers::GrallocTextureSourceOGL::DeallocateDeviceData()] from Assertion failure: gl(), at ../../../gecko/gfx/layers/opengl/GrallocTextureHost.cpp:273
See Also: → 1054592
https://tbpl.mozilla.org/php/getParsedLog.php?id=48828418&tree=Mozilla-Inbound
https://tbpl.mozilla.org/php/getParsedLog.php?id=48828892&tree=Mozilla-Inbound
Summary: Intermittent emulator mochitest Shutdown, test_bug902651.html crash [@ mozilla::layers::GrallocTextureSourceOGL::DeallocateDeviceData()] from Assertion failure: gl(), at ../../../gecko/gfx/layers/opengl/GrallocTextureHost.cpp:273 → Intermittent emulator mochitest Shutdown, test_bug902651.html,test_bug634834.html crash [@ mozilla::layers::GrallocTextureSourceOGL::DeallocateDeviceData()] from Assertion failure: gl(), at ../../../gecko/gfx/layers/opengl/GrallocTextureHost.cpp:273
Darn, I was kind of hoping bug 1072491 would help with this one too :(
What is happening here is that the ordering of the shut-down causes some textures to be destroyed after the compositor has been marked as destroyed. This makes GrallocTextureSourceOGL::gl() return nullptr.
What the crashing assertion want to check, is that we don't remove the compositor of the TextureSource without first cleaning up the gpu resources such as the EGLImage, otherwise the texture will have no way to free the gpu resources.
checking for gl() and mCompositor used to be equivalent, but this is not the case anymore, now that we mark the Compositor as destroyed during the shut-down, possibly before all of the textures are destroyed. In this case it is fine to not be able to free the gpu resources, because they have been destroyed along with the underlying gl context.
Assignee: nobody → nical.bugzilla
Attachment #8500387 - Flags: review?(sotaro.ikeda.g)
Flags: needinfo?(nical.bugzilla)
Attachment #8500387 - Flags: review?(sotaro.ikeda.g) → review+
https://hg.mozilla.org/mozilla-central/rev/c890e0fa846d
Status: NEW → RESOLVED
Closed: 5 years ago
Flags: in-testsuite+
Resolution: --- → FIXED
Target Milestone: --- → mozilla35
As always, I'm eternally grateful! Please request Aurora approval on this when you get a chance :)
Flags: needinfo?(nical.bugzilla)
Comment on attachment 8500387 [details] [diff] [review]
assert that mCompositor is not null rather than gl()

Approval Request Comment
[Feature/regressing bug #]:
[User impact if declined]: intermittent debug test failures that bring sadness upon the sheriffs.
[Describe test coverage new/current, TBPL]:
[Risks and why]: no risk, very simple patch that replace a debug assertion by a more appropriate one.
[String/UUID change made/needed]:
Attachment #8500387 - Flags: approval-mozilla-aurora?
Flags: needinfo?(nical.bugzilla)
Comment on attachment 8500387 [details] [diff] [review]
assert that mCompositor is not null rather than gl()

> intermittent debug test failures that bring sadness upon the sheriffs.

And it was said, do not rain down sadness and frowns upon your sheriffs, for they are the keepers of the tree and your true allies. Bestow unto them your love, affection and intermittent test fixes and they will repay your kindness ten fold.

In other words, Aurora+
Attachment #8500387 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
You need to log in before you can comment on or make changes to this bug.