Make WebVR work with multiprocess enabled on Android

RESOLVED FIXED in Firefox 63

Status

()

RESOLVED FIXED
7 months ago
7 months ago

People

(Reporter: imanol, Assigned: imanol)

Tracking

unspecified
mozilla63
All
Android
Points:
---

Firefox Tracking Flags

(firefox-esr52 wontfix, firefox-esr60 wontfix, firefox61 wontfix, firefox62 wontfix, firefox63 fixed)

Details

(Whiteboard: [geckoview:fxr:p1])

Attachments

(1 attachment)

(Assignee)

Description

7 months ago
When multiprocess is enabled on Android (Firefox Reality) there are some SurfaceTexture errors. This happens because the WebGL textures used in WebVR are not detached correctly from Gecko thread, and can't be used in the VR render thread.

Also there is a race condition where WebGLContext::GetVRFrame can be called multiple times before a VR frame is fully processed. SurfaceTextures need to be released from the Firefox Reality render thread in order to allow be used again in the WebGLContext producer. Not doing this causes some freezes, crashes or other undefined behaviour.
(Assignee)

Updated

7 months ago
Assignee: nobody → imanol
(Assignee)

Updated

7 months ago
Whiteboard: [geckoview:fxr:p1]
(Assignee)

Comment 1

7 months ago
MozReview-Commit-ID: G9aHbp0G7DK
Comment on attachment 8999391 [details]
Bug 1482613 - Make WebVR work with multiprocess enabled on Android

Randall Barker [:rbarker] has approved the revision.
Attachment #8999391 - Flags: review+
Comment on attachment 8999391 [details]
Bug 1482613 - Make WebVR work with multiprocess enabled on Android

:kip (Kearwood Gilbert) has approved the revision.
Attachment #8999391 - Flags: review+
status-firefox62=wontfix. We don't need to uplift this fix to GeckoView 62 Beta because FxR will ship with GeckoView 63.
status-firefox61: --- → wontfix
status-firefox62: --- → wontfix
status-firefox63: --- → affected
status-firefox-esr52: --- → wontfix
status-firefox-esr60: --- → wontfix
Comment on attachment 8999391 [details]
Bug 1482613 - Make WebVR work with multiprocess enabled on Android

Dzmitry Malyshau [:kvark] has approved the revision.
Attachment #8999391 - Flags: review+

Comment 6

7 months ago
Pushed by rbarker@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/1eb34707779f
Make WebVR work with multiprocess enabled on Android r=kip,rbarker,kvark

Comment 7

7 months ago
Backout by csabou@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/df3b57bf9887
Backed out changeset 1eb34707779f for causing android crashes in test_vrDisplay_canvas2d.
Backed out changeset for causing android crashes in test_vrDisplay_canvas2d

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&filter-searchStr=Android%204.3%20API16%2B%20debug%20Mochitests%20test-android-em-4.3-arm7-api-16%2Fdebug-mochitest-38%20M(38)&tochange=df3b57bf9887c12c740cb7cab669cc4879f49040&fromchange=1eb34707779fdb6acecf803904abddb64593f57b&selectedJob=195604484

Failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=195604484&repo=autoland&lineNumber=1532

Backout link: https://hg.mozilla.org/integration/autoland/rev/df3b57bf9887c12c740cb7cab669cc4879f49040

[task 2018-08-23T20:10:14.805Z] 20:10:14  WARNING -  PROCESS-CRASH | dom/vr/test/mochitest/test_vrDisplay_canvas2d.html | application crashed [@ mozilla::TimeStamp::operator-(mozilla::TimeStamp const&) const]
[task 2018-08-23T20:10:14.806Z] 20:10:14     INFO -  Crash dump filename: /tmp/tmpgBvAHS/6b358bba-5b91-7eb6-5122-5f66fc949843.dmp
[task 2018-08-23T20:10:14.806Z] 20:10:14     INFO -  Operating system: Android
[task 2018-08-23T20:10:14.807Z] 20:10:14     INFO -                    0.0.0 Linux 2.6.29-gea477bb #1 Wed Sep 26 11:04:45 PDT 2012 armv7l
[task 2018-08-23T20:10:14.807Z] 20:10:14     INFO -  CPU: arm
[task 2018-08-23T20:10:14.810Z] 20:10:14     INFO -       ARMv7 ARM Cortex-A8 features: swp,half,thumb,fastmult,vfpv2,edsp,neon,vfpv3
[task 2018-08-23T20:10:14.810Z] 20:10:14     INFO -       1 CPU
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -  GPU: UNKNOWN
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -  Crash reason:  SIGSEGV
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -  Crash address: 0x0
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -  Process uptime: not available
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -  Thread 31 (crashed)
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -   0  libxul.so!mozilla::TimeStamp::operator-(mozilla::TimeStamp const&) const [TimeStamp.h:1eb34707779fdb6acecf803904abddb64593f57b : 0 + 0x6]
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -       r0 = 0x00000000    r1 = 0x0a6015d3    r2 = 0x569c0e4e    r3 = 0x000001f2
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -       r4 = 0x000001f2    r5 = 0x00000000    r6 = 0x5d9c0ba0    r7 = 0x5d9c0ab8
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -       r8 = 0x00000000    r9 = 0x00000000   r10 = 0x5d9c0ba8   r12 = 0x00000003
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -       fp = 0x000000aa    sp = 0x5d9c0aa0    lr = 0x534c5b91    pc = 0x534ca33e
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -      Found by: given as instruction pointer in context
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -   1  libxul.so!mozilla::gfx::VRDisplayHost::StartFrame() [VRDisplayHost.cpp:1eb34707779fdb6acecf803904abddb64593f57b : 213 + 0x5]
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -       r4 = 0x5faeb000    r5 = 0x00000000    r6 = 0x5d9c0ba0    r7 = 0x5d9c0bd8
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -       r8 = 0x5fafb9d0    r9 = 0x00000001   r10 = 0x5d9c0d18    fp = 0x000000aa
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -       sp = 0x5d9c0ac0    lr = 0x53d9a181    pc = 0x53d9a181
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -   2  libxul.so!mozilla::gfx::VRManager::NotifyVRVsync(unsigned int const&) [VRManager.cpp:1eb34707779fdb6acecf803904abddb64593f57b : 310 + 0x3]
[task 2018-08-23T20:10:14.811Z] 20:10:14     INFO -       r4 = 0x00000001    r5 = 0x5bb20cd8    r6 = 0x5d9c0be8    r7 = 0x5d9c0c08
[task 2018-08-23T20:10:14.812Z] 20:10:14     INFO -       r8 = 0x5faeb008    r9 = 0x5beb59d0   r10 = 0x5d9c0d18    fp = 0x000000aa
[task 2018-08-23T20:10:14.812Z] 20:10:14     INFO -       sp = 0x5d9c0be0    lr = 0x53d9e45d    pc = 0x53d9e45d
[task 2018-08-23T20:10:14.813Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.813Z] 20:10:14     INFO -   3  libxul.so!mozilla::gfx::VRDisplayHost::NotifyVSync() [VRDisplayHost.cpp:1eb34707779fdb6acecf803904abddb64593f57b : 283 + 0x3]
[task 2018-08-23T20:10:14.814Z] 20:10:14     INFO -       r4 = 0x5faeb000    r5 = 0x5d9c0c3c    r6 = 0x00000001    r7 = 0x5d9c0c30
[task 2018-08-23T20:10:14.814Z] 20:10:14     INFO -       r8 = 0x52a018e0    r9 = 0x5d9c0e1c   r10 = 0x5d9c0d18    fp = 0x000000aa
[task 2018-08-23T20:10:14.814Z] 20:10:14     INFO -       sp = 0x5d9c0c10    lr = 0x53d9a2a3    pc = 0x53d9a2a3
[task 2018-08-23T20:10:14.815Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.815Z] 20:10:14     INFO -   4  libxul.so!mozilla::gfx::VRSystemManager::NotifyVSync() [gfxVR.cpp:1eb34707779fdb6acecf803904abddb64593f57b : 51 + 0x3]
[task 2018-08-23T20:10:14.816Z] 20:10:14     INFO -       r4 = 0x5fac1000    r5 = 0x5d9c0c3c    r6 = 0x00000001    r7 = 0x5d9c0c58
[task 2018-08-23T20:10:14.816Z] 20:10:14     INFO -       r8 = 0x52a018e0    r9 = 0x5d9c0e1c   r10 = 0x5d9c0d18    fp = 0x000000aa
[task 2018-08-23T20:10:14.816Z] 20:10:14     INFO -       sp = 0x5d9c0c38    lr = 0x53d9f357    pc = 0x53d9f357
[task 2018-08-23T20:10:14.817Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.817Z] 20:10:14     INFO -   5  libxul.so!mozilla::gfx::VRSystemManagerPuppet::NotifyVSync() [gfxVRPuppet.cpp:1eb34707779fdb6acecf803904abddb64593f57b : 717 + 0x3]
[task 2018-08-23T20:10:14.817Z] 20:10:14     INFO -       r4 = 0x5fac1000    r5 = 0x5d9c0c80    r6 = 0x00000001    r7 = 0x5d9c0c78
[task 2018-08-23T20:10:14.818Z] 20:10:14     INFO -       r8 = 0x52a018e0    r9 = 0x5d9c0e1c   r10 = 0x5d9c0d18    fp = 0x000000aa
[task 2018-08-23T20:10:14.818Z] 20:10:14     INFO -       sp = 0x5d9c0c60    lr = 0x53d9c103    pc = 0x53d9c103
[task 2018-08-23T20:10:14.819Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.819Z] 20:10:14     INFO -   6  libxul.so!mozilla::gfx::VRManager::NotifyVsync(mozilla::TimeStamp const&) [VRManager.cpp:1eb34707779fdb6acecf803904abddb64593f57b : 257 + 0x5]
[task 2018-08-23T20:10:14.819Z] 20:10:14     INFO -       r4 = 0x5beb59d0    r5 = 0x5d9c0c80    r6 = 0x00000001    r7 = 0x5d9c0c98
[task 2018-08-23T20:10:14.820Z] 20:10:14     INFO -       r8 = 0x52a018e0    r9 = 0x5d9c0e1c   r10 = 0x5d9c0d18    fp = 0x000000aa
[task 2018-08-23T20:10:14.820Z] 20:10:14     INFO -       sp = 0x5d9c0c80    lr = 0x53d9e097    pc = 0x53d9e097
[task 2018-08-23T20:10:14.820Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.821Z] 20:10:14     INFO -   7  libxul.so!mozilla::layers::CompositorVsyncScheduler::DispatchVREvents(mozilla::TimeStamp) [CompositorVsyncScheduler.cpp:1eb34707779fdb6acecf803904abddb64593f57b : 334 + 0x3]
[task 2018-08-23T20:10:14.821Z] 20:10:14     INFO -       r4 = 0x5bec0b60    r5 = 0x5bec0b00    r6 = 0x5d9c0cc4    r7 = 0x5d9c0cb0
[task 2018-08-23T20:10:14.822Z] 20:10:14     INFO -       r8 = 0x52a018e0    r9 = 0x5d9c0e1c   r10 = 0x5d9c0d18    fp = 0x000000aa
[task 2018-08-23T20:10:14.822Z] 20:10:14     INFO -       sp = 0x5d9c0ca0    lr = 0x53d3242b    pc = 0x53d3242b
[task 2018-08-23T20:10:14.823Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.823Z] 20:10:14     INFO -   8  libxul.so!mozilla::detail::RunnableMethodImpl<RefPtr<mozilla::AudioTrackEncoder>, void (mozilla::AudioTrackEncoder::*)(long long), true, (mozilla::RunnableKind)0, long long>::Run() [nsThreadUtils.h:1eb34707779fdb6acecf803904abddb64593f57b : 1174 + 0x3]
[task 2018-08-23T20:10:14.823Z] 20:10:14     INFO -       r2 = 0x5e68238b    r3 = 0x00000087    r4 = 0x5d9c0e10    r5 = 0x5d9c0cf4
[task 2018-08-23T20:10:14.824Z] 20:10:14     INFO -       r6 = 0x5d9c0cc4    r7 = 0x5d9c0cb8    r8 = 0x52a018e0    r9 = 0x5d9c0e1c
[task 2018-08-23T20:10:14.824Z] 20:10:14     INFO -      r10 = 0x5d9c0d18    fp = 0x000000aa    sp = 0x5d9c0cb8    lr = 0x53ade815
[task 2018-08-23T20:10:14.825Z] 20:10:14     INFO -       pc = 0x53ade815
[task 2018-08-23T20:10:14.825Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.825Z] 20:10:14     INFO -   9  libxul.so!MessageLoop::RunTask(already_AddRefed<nsIRunnable>) [message_loop.cc:1eb34707779fdb6acecf803904abddb64593f57b : 451 + 0x5]
[task 2018-08-23T20:10:14.826Z] 20:10:14     INFO -       r4 = 0x5d9c0e10    r5 = 0x5d9c0cf4    r6 = 0x5d9c0cc4    r7 = 0x5d9c0ce8
[task 2018-08-23T20:10:14.826Z] 20:10:14     INFO -       r8 = 0x52a018e0    r9 = 0x5d9c0e1c   r10 = 0x5d9c0d18    fp = 0x000000aa
[task 2018-08-23T20:10:14.827Z] 20:10:14     INFO -       sp = 0x5d9c0cc0    lr = 0x53842d81    pc = 0x53842d81
[task 2018-08-23T20:10:14.827Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.827Z] 20:10:14     INFO -  10  libxul.so!MessageLoop::DeferOrRunPendingTask(MessageLoop::PendingTask&&) [message_loop.cc:1eb34707779fdb6acecf803904abddb64593f57b : 459 + 0x7]
[task 2018-08-23T20:10:14.828Z] 20:10:14     INFO -       r4 = 0x5d9c0e10    r5 = 0x5d9c0cf4    r6 = 0x5d9c0d10    r7 = 0x5d9c0d00
[task 2018-08-23T20:10:14.828Z] 20:10:14     INFO -       r8 = 0x52a018e0    r9 = 0x5d9c0e1c   r10 = 0x5d9c0d18    fp = 0x000000aa
[task 2018-08-23T20:10:14.829Z] 20:10:14     INFO -       sp = 0x5d9c0cf0    lr = 0x53843079    pc = 0x53843079
[task 2018-08-23T20:10:14.829Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.829Z] 20:10:14     INFO -  11  libxul.so!MessageLoop::DoWork() [message_loop.cc:1eb34707779fdb6acecf803904abddb64593f57b : 534 + 0x7]
[task 2018-08-23T20:10:14.830Z] 20:10:14     INFO -       r2 = 0x0000001a    r3 = 0x00000000    r4 = 0x5d9c0e10    r5 = 0x0000002e
[task 2018-08-23T20:10:14.830Z] 20:10:14     INFO -       r6 = 0x5d9c0d10    r7 = 0x5d9c0d48    r8 = 0x52a018e0    r9 = 0x5d9c0e1c
[task 2018-08-23T20:10:14.831Z] 20:10:14     INFO -      r10 = 0x5d9c0d18    fp = 0x000000aa    sp = 0x5d9c0d08    lr = 0x53843185
[task 2018-08-23T20:10:14.831Z] 20:10:14     INFO -       pc = 0x53843185
[task 2018-08-23T20:10:14.831Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.832Z] 20:10:14     INFO -  12  libxul.so!base::MessagePumpDefault::Run(base::MessagePump::Delegate*) [message_pump_default.cc:1eb34707779fdb6acecf803904abddb64593f57b : 38 + 0x7]
[task 2018-08-23T20:10:14.832Z] 20:10:14     INFO -       r4 = 0x5c9ab1a0    r5 = 0x5d9c0e10    r6 = 0x5c9ab1b0    r7 = 0x5d9c0db8
[task 2018-08-23T20:10:14.833Z] 20:10:14     INFO -       r8 = 0x5d9c0d68    r9 = 0x5d9c0d80   r10 = 0x5d9c0d64    fp = 0x5d9c0d78
[task 2018-08-23T20:10:14.833Z] 20:10:14     INFO -       sp = 0x5d9c0d50    lr = 0x538438e5    pc = 0x538438e5
[task 2018-08-23T20:10:14.833Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.834Z] 20:10:14     INFO -  13  libxul.so!MessageLoop::RunInternal() [message_loop.cc:1eb34707779fdb6acecf803904abddb64593f57b : 325 + 0x7]
[task 2018-08-23T20:10:14.834Z] 20:10:14     INFO -       r4 = 0x5d9c0e10    r5 = 0x5c9ab0f4    r6 = 0x00000000    r7 = 0x5d9c0dd8
[task 2018-08-23T20:10:14.834Z] 20:10:14     INFO -       r8 = 0x5d9c0e10    r9 = 0x5d981000   r10 = 0x5d9c0f00    fp = 0x2a292df8
[task 2018-08-23T20:10:14.835Z] 20:10:14     INFO -       sp = 0x5d9c0dc0    lr = 0x53842c79    pc = 0x53842c79
[task 2018-08-23T20:10:14.835Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.836Z] 20:10:14     INFO -  14  libxul.so!MessageLoop::Run() [message_loop.cc:1eb34707779fdb6acecf803904abddb64593f57b : 318 + 0x5]
[task 2018-08-23T20:10:14.836Z] 20:10:14     INFO -       r0 = 0x5d9c0e10    r1 = 0x00000000    r2 = 0x00000001    r3 = 0x00000000
[task 2018-08-23T20:10:14.836Z] 20:10:14     INFO -       r4 = 0x5d9c0e10    r5 = 0x5c9ab0f4    r6 = 0x00000000    r7 = 0x5d9c0df8
[task 2018-08-23T20:10:14.837Z] 20:10:14     INFO -       r8 = 0x5d9c0e10    r9 = 0x5d981000   r10 = 0x5d9c0f00    fp = 0x2a292df8
[task 2018-08-23T20:10:14.837Z] 20:10:14     INFO -       sp = 0x5d9c0de0    lr = 0x53842c25    pc = 0x53842c25
[task 2018-08-23T20:10:14.838Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.838Z] 20:10:14     INFO -  15  libxul.so!base::Thread::ThreadMain() [thread.cc:1eb34707779fdb6acecf803904abddb64593f57b : 181 + 0x5]
[task 2018-08-23T20:10:14.838Z] 20:10:14     INFO -       r0 = 0x00000001    r1 = 0x00000000    r2 = 0x5d9c0e10    r3 = 0x00000000
[task 2018-08-23T20:10:14.839Z] 20:10:14     INFO -       r4 = 0x5c9ab0e0    r5 = 0x5c9ab0f4    r6 = 0x00000000    r7 = 0x5d9c0ed0
[task 2018-08-23T20:10:14.840Z] 20:10:14     INFO -       r8 = 0x5d9c0e10    r9 = 0x5d981000   r10 = 0x5d9c0f00    fp = 0x2a292df8
[task 2018-08-23T20:10:14.840Z] 20:10:14     INFO -       sp = 0x5d9c0e00    lr = 0x5384d7af    pc = 0x5384d7af
[task 2018-08-23T20:10:14.840Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.841Z] 20:10:14     INFO -  16  libxul.so!ThreadFunc(void*) [platform_thread_posix.cc:1eb34707779fdb6acecf803904abddb64593f57b : 44 + 0x7]
[task 2018-08-23T20:10:14.841Z] 20:10:14     INFO -       r4 = 0x5c9ab0e0    r5 = 0x2a292df8    r6 = 0x538466a5    r7 = 0x5d9c0ee0
[task 2018-08-23T20:10:14.841Z] 20:10:14     INFO -       r8 = 0x5c9ab0e8    r9 = 0x5d981000   r10 = 0x5d9c0f00    fp = 0x2a292df8
[task 2018-08-23T20:10:14.841Z] 20:10:14     INFO -       sp = 0x5d9c0ed8    lr = 0x538466b7    pc = 0x538466b7
[task 2018-08-23T20:10:14.841Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.842Z] 20:10:14     INFO -  17  libc.so + 0xca5a
[task 2018-08-23T20:10:14.842Z] 20:10:14     INFO -       r4 = 0x5d9c0f00    r5 = 0x2a292df8    r6 = 0x538466a5    r7 = 0x5c9ab0e0
[task 2018-08-23T20:10:14.842Z] 20:10:14     INFO -       r8 = 0x5c9ab0e8    r9 = 0x5d981000   r10 = 0x5d9c0f00    fp = 0x2a292df8
[task 2018-08-23T20:10:14.843Z] 20:10:14     INFO -       sp = 0x5d9c0ee8    lr = 0x40033a5c    pc = 0x40033a5c
[task 2018-08-23T20:10:14.843Z] 20:10:14     INFO -      Found by: call frame info
[task 2018-08-23T20:10:14.843Z] 20:10:14     INFO -  18  libc.so + 0xcbd6
[task 2018-08-23T20:10:14.844Z] 20:10:14     INFO -       sp = 0x5d9c0f00    pc = 0x40033bd8
[task 2018-08-23T20:10:14.844Z] 20:10:14     INFO -      Found by: stack scanning
Flags: needinfo?(imanol)

Comment 9

7 months ago
Pushed by rbarker@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/a17e0db21cae
Make WebVR work with multiprocess enabled on Android r=kip,rbarker,kvark

Comment 10

7 months ago
bugherder
https://hg.mozilla.org/mozilla-central/rev/a17e0db21cae
Status: NEW → RESOLVED
Last Resolved: 7 months ago
status-firefox63: affected → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla63
(Assignee)

Updated

7 months ago
Flags: needinfo?(imanol)
You need to log in before you can comment on or make changes to this bug.