Closed Bug 1754766 Opened 3 years ago Closed 3 years ago

Crash in [@ mozilla::layers::AndroidHardwareBuffer::FromFileDescriptor]

Categories

(Core :: Graphics, defect)

Unspecified
Android
defect

Tracking

()

RESOLVED FIXED
99 Branch
Tracking Status
firefox-esr91 --- unaffected
firefox97 --- wontfix
firefox98 --- fixed
firefox99 --- fixed

People

(Reporter: jnicol, Assigned: jnicol)

References

Details

(Keywords: crash)

Crash Data

Attachments

(1 file)

Crash report: https://crash-stats.mozilla.org/report/index/de965ffb-531a-4891-9f49-8844d0220208

Reason: SIGSEGV / SEGV_MAPERR

Top 10 frames of crashing thread:

0 libxul.so mozilla::layers::AndroidHardwareBuffer::FromFileDescriptor gfx/layers/AndroidHardwareBuffer.cpp:195
1 libxul.so mozilla::layers::CreateTextureHostOGL gfx/layers/opengl/TextureHostOGL.cpp:78
2 libxul.so mozilla::layers::TextureHost::Create gfx/layers/composite/TextureHost.cpp:186
3 libxul.so mozilla::layers::TextureHost::CreateIPDLActor gfx/layers/composite/TextureHost.cpp:119
4 libxul.so mozilla::layers::CompositorBridgeParent::AllocPTextureParent gfx/layers/ipc/ContentCompositorBridgeParent.cpp:403
5 libxul.so mozilla::layers::PCompositorBridgeParent::OnMessageReceived ipc/ipdl/PCompositorBridgeParent.cpp:1065
6 libxul.so mozilla::layers::PCompositorManagerParent::OnMessageReceived ipc/ipdl/PCompositorManagerParent.cpp:188
7 libxul.so mozilla::ipc::MessageChannel::MessageTask::Run ipc/glue/MessageChannel.cpp:1480
8 libxul.so nsThread::ProcessNextEvent xpcom/threads/nsThread.cpp:1189
9 libxul.so mozilla::ipc::MessagePumpForNonMainThreads::Run ipc/glue/MessagePump.cpp:300

This is currently the top GPU process crash since enabling the GPU process in bug 1331109 (and for some adventurous users who manually enabled it earlier). It only occurs for users who have also enabled the off-by-default webgl.enable-ahardwarebuffer pref.

The problem is that we haven't initialized the AndroidHardwareBufferApi instance in the GPU process. In content/parent processes this is done in gfxAndroidPlatform, but that isn't initialized in the GPU process. The corresponding place in the GPU process is GPUParent::RecvInit

Assignee: nobody → jnicol

When the (off-by-default) pref webgl.enable-ahardwarebuffer is
enabled, we use AHardwareBuffers rather than SurfaceTextures for webgl
on Android. Some users have enabled this pref and their browser is now
crashing since the GPU process was enabled.

The crash occurs because we have not initialized the
AndroidHardwareBufferApi instance to load the NDK function
pointers. This is performed in gfxPlatform in the parent process, but
because the GPU process does not have a gfxPlatform we must do this in
GPUParent as well. We must also initialize the
AndroidHardwareBufferManager, as is done by gfxPlatform.

See Also: → 1754820
Pushed by jnicol@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/dd2a5e78827a Ensure AndroidHardwareBuffer is initialized in GPU process. r=gfx-reviewers,aosmond
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 99 Branch

Comment on attachment 9263338 [details]
Bug 1754766 - Ensure AndroidHardwareBuffer is initialized in GPU process. r?#gfx-reviewers

Beta/Release Uplift Approval Request

  • User impact if declined: Crashes for beta users who have manually enabled the GPU process and hardware-buffer backed webgl
  • Is this code covered by automated tests?: No
  • Has the fix been verified in Nightly?: Yes
  • Needs manual test from QE?: No
  • If yes, steps to reproduce:
  • List of other uplifts needed: None
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): Off by default configuration, but this prevents guaranteed crash for those users who have flipped the prefs
  • String changes made/needed:
Attachment #9263338 - Flags: approval-mozilla-beta?

The GPU process isn't enabled by default on current beta, nor is hardware buffer webgl. But it seems a number of users have manually enabled both, so it may be worthwhile uplifting the fix anyway.

Comment on attachment 9263338 [details]
Bug 1754766 - Ensure AndroidHardwareBuffer is initialized in GPU process. r?#gfx-reviewers

Approved for 98 beta 5, thanks.

Attachment #9263338 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: