Joining empty room: wild flickering of screen showing own camera

RESOLVED FIXED in Firefox 39, Firefox OS v2.2

Status

()

Core
Graphics: Layers
RESOLVED FIXED
4 years ago
3 years ago

People

(Reporter: aryx, Assigned: sotaro)

Tracking

({regression})

unspecified
mozilla39
ARM
Gonk (Firefox OS)
regression
Points:
---

Firefox Tracking Flags

(blocking-b2g:2.2+, firefox39 fixed, b2g-v2.0 unaffected, b2g-v2.1 unaffected, b2g-v2.2 verified, b2g-master verified)

Details

Attachments

(4 attachments, 1 obsolete attachment)

B2G 3.0pre 20150121160202 on Flame (v188 base image)

Firefox Hello master branch latest commit is https://github.com/mozilla-b2g/firefoxos-loop-client/commit/f4b8613047dd8cfa60824e07302f3912c1e5372f

Joining empty room shows a wild flickering of the screen which depicts one's own camera.

Steps to reproduce:
1. Tried to call contact with Hello into room, contact unavailable.
2. Joined room from room list.
3. Confirmed the settings (front camera).
4. After some hundred milliseconds, the screen flickers, showing the cyan background in the breaks.
Same issue in 2.2
In 2.0 is working as expected.
Created attachment 8553677 [details] [diff] [review]
ma.patch

Maybe some kind of nice effect could prevent of ugly flickers, what do you think?
Attachment #8553677 - Flags: feedback?(oteo)
Attachment #8553677 - Flags: feedback?(frsela)
Comment on attachment 8553677 [details] [diff] [review]
ma.patch

sorry wrong bug
Attachment #8553677 - Attachment is obsolete: true
Attachment #8553677 - Flags: feedback?(oteo)
Attachment #8553677 - Flags: feedback?(frsela)
QA wanted for a branch check.
Keywords: qawanted
I can repro this bug on Flame v2.2&3.0,but can't repro on Flame v2.0&2.1.

See attachments: verify_v2.2.MP4 and logcat_1640.txt
Reproduce rate: 5/5.

Repro STR:
1. Install Hello app and sign in using a firefox account.
2. Join a room from room list.
3. Confirm the settings (Front or Back camera).
**"You are the only one in the room" message will display.
4. After some hundred milliseconds, the screen flickers, showing the cyan background in the breaks.  --KO

Flame 3.0 build:
Build ID               20150205010209
Gaia Revision          2b83a6d5d1185a438b5bbd287497ac2743b501db
Gaia Date              2015-02-04 21:30:59
Gecko Revision         https://hg.mozilla.org/mozilla-central/rev/34a66aaaca81
Gecko Version          38.0a1
Device Name            flame
Firmware(Release)      4.4.2
Firmware(Incremental)  eng.cltbld.20150205.044014
Firmware Date          Thu Feb  5 04:40:24 EST 2015
Bootloader             L1TC000118D0

Flame 2.2 build:
Build ID               20150205002503
Gaia Revision          c2047a46e29696238e9b4c9caaba47736421449a
Gaia Date              2015-02-04 20:34:04
Gecko Revision         https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/rev/adfba0a07e9b
Gecko Version          37.0a2
Device Name            flame
Firmware(Release)      4.4.2
Firmware(Incremental)  eng.cltbld.20150205.045043
Firmware Date          Thu Feb  5 04:50:54 EST 2015
Bootloader             L1TC000118D0

Flame 2.1 build:
Build ID               20150205001711
Gaia Revision          17bf14f12e43043654498330d610d469b8b55e64
Gaia Date              2015-02-03 05:19:41
Gecko Revision         https://hg.mozilla.org/releases/mozilla-b2g34_v2_1/rev/bdebcc47ec7a
Gecko Version          34.0
Device Name            flame
Firmware(Release)      4.4.2
Firmware(Incremental)  eng.cltbld.20150205.035050
Firmware Date          Thu Feb  5 03:51:01 EST 2015
Bootloader             L1TC000118D0

Flame 2.0 build:
Build ID               20150205000205
Gaia Revision          2989f2b2bd12fcc0e9c017d2db766e76a55873b8
Gaia Date              2015-01-22 21:13:40
Gecko Revision         https://hg.mozilla.org/releases/mozilla-b2g32_v2_0/rev/69057b33ef5b
Gecko Version          32.0
Device Name            flame
Firmware(Release)      4.4.2
Firmware(Incremental)  eng.cltbld.20150205.034605
Firmware Date          Thu Feb  5 03:46:16 EST 2015
Bootloader             L1TC000118D0
status-b2g-v2.0: --- → unaffected
status-b2g-v2.1: --- → unaffected
status-b2g-v2.2: --- → affected
status-b2g-master: --- → affected
Keywords: qawanted
This is a regression. IMHO it should be fixed.
blocking-b2g: --- → 2.2?
QA Whiteboard: [MGSEI-Triage+]

Comment 9

3 years ago
Based on comment #1 and comment #5, triage is noting as a regression in the Keyword field and blocking because this is a regression.
blocking-b2g: 2.2? → 2.2+
Keywords: regression
Hi Maria,
Do you know who is working on Loop? 
Please fw the ni.
Flags: needinfo?(oteo)
From the description of the bug, it seems to me, this is not a loop issue but a platform bug, but not totally sure.
I forward the ni to Jesup.
Flags: needinfo?(oteo) → needinfo?(rjesup)
Questions: does this happen in a call, or just while "waiting"?  Does this happen at http://mozilla.github.io/webrtc-landing/gum_test.html? (video or video+audio option)
Flags: needinfo?(rjesup)
Flags: needinfo?(lixia)
Flags: needinfo?(archaeopteryx)
(In reply to Randell Jesup [:jesup] from comment #12)
> Questions: does this happen in a call, or just while "waiting"?
Just while "waiting".

> Does this happen at http://mozilla.github.io/webrtc-landing/gum_test.html?
Tried video+audio with B2G 2.2 20150302002504 on Flame (v188 base image), issue didn't happen.
Flags: needinfo?(archaeopteryx)
(In reply to Archaeopteryx [:aryx] from comment #13)
> (In reply to Randell Jesup [:jesup] from comment #12)
> > Questions: does this happen in a call, or just while "waiting"?
> Just while "waiting".
> 
> > Does this happen at http://mozilla.github.io/webrtc-landing/gum_test.html?
> Tried video+audio with B2G 2.2 20150302002504 on Flame (v188 base image),
> issue didn't happen.

These imply that getUserMedia and mediastreams (and video elements) are working correctly, and the flickering is something at the DOM level/application.

Maria, it isn't re-assinging the <video> srcObject input repeatedly, or fiddling the visibility, etc?
Flags: needinfo?(oteo)
Per Comment 13,clear NI.
Flags: needinfo?(lixia)
(In reply to Randell Jesup [:jesup] from comment #14)
> 
> Maria, it isn't re-assinging the <video> srcObject input repeatedly, or
> fiddling the visibility, etc?

Hi Randell, sorry for answering so late, I was on PTO last week.

In theory we are not re-assigning the video object and/or playing with the visibility of the video element. 

The only difference with respect to the "established" room session, is that while a participant is the only one in the room, Loop is showing a "fake" video with the source being the media element returned by GUM: https://github.com/mozilla-b2g/firefoxos-loop-client/blob/master/app/js/screens/room/room_ui.js#L183"
Flags: needinfo?(oteo) → needinfo?(rjesup)

Comment 17

3 years ago
Hi Randell, do you mind putting assignee as you and keep working on this bug? thanks.
Flags: needinfo?(rjesup)

Comment 18

3 years ago
Sheila, can you find an assignee for this bug? Thanks.
Flags: needinfo?(smooney)
At my request, Randell looked at this to see if this problem was in the WebRTC Platform code.  This does not appear to be a WebRTC Platform issue, but rather a more general issue outside of the WebRTC code and possibly something specific to FxOS and/or an interaction between the Loop client and other changes in v2.2.  

A good owner for this bug would be Sotaro or someone with his skill set (deep, general video knowledge and very familiar with FxOS device debugging) to do a deeper dive on what exactly the root cause problem is.

Sotaro -- Do you have any time to look at this?  Or could you recommend someone to do a deeper investigation?
Flags: needinfo?(sotaro.ikeda.g)
Flags: needinfo?(smooney)
Flags: needinfo?(rjesup)
(Assignee)

Comment 20

3 years ago
(In reply to Maire Reavy [:mreavy] (Plz needinfo me) from comment #19)
> 
> Sotaro -- Do you have any time to look at this?  Or could you recommend
> someone to do a deeper investigation?

At first, I am going to take a look.
Assignee: nobody → sotaro.ikeda.g
Flags: needinfo?(sotaro.ikeda.g)
(Assignee)

Updated

3 years ago
Keywords: regressionwindow-wanted
(Assignee)

Comment 21

3 years ago
On latest master flame-kk, the problem seems to be addressed.
(Assignee)

Comment 22

3 years ago
(In reply to Sotaro Ikeda [:sotaro] from comment #21)
> On latest master flame-kk, the problem seems to be addressed.

On latest v2.2 flame-kk still has the problem.
(Assignee)

Comment 23

3 years ago
njpark, what is a correct way to request regression window? Are "b2g-2.2+" and "regressionwindow-wanted" enough for it?
Flags: needinfo?(npark)

Updated

3 years ago
Flags: needinfo?(npark)
Keywords: qawanted
(In reply to Sotaro Ikeda [:sotaro] from comment #23)
> njpark, what is a correct way to request regression window? Are "b2g-2.2+"
> and "regressionwindow-wanted" enough for it?

Yes, I added 'qawanted' too so they can also do the branch checking and independently reproduce the problem.

Updated

3 years ago
Keywords: qawanted
Ah, sorry for not reading the entire comment, as the branch check was already done.
So it seems that there is an issue with pushing the app to the device using grunt build. In that case, you can manually push the app by using WebIDE of the firefox browser. (Open App -> Open Packaged App -> choose the app folder insider the loop folder, then choose Install and Run under File menu)  Then simply follow the STR to recreate the issue.  The bug seems to be in master as well, but it is much easier to repro in 2.2 branch.
QA Contact: ychung
I was unable to reproduce this issue on the latest Flame Master and 2.2. I'm not sure if I'm on the same version as others. On Hello, it says "Unknown" under version in the Settings page. On the Firefox browser (for installing the app), it says "1.1.1d for the version.

No-Jun, were you able to reproduce this issue at all on the latest version of Hello?

Environmental Variables:
Device: Flame 3.0
Build ID: 20150319060239
Gaia: c39e15f631de80c69467fda0d4ea0bcda9e194ca
Gecko: cbd0efcd976c
Version: 39.0a1 (3.0)
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:39.0) Gecko/39.0 Firefox/39.0

Environmental Variables:
Device: Flame 2.2
BuildID: 20150319100137
Gaia: 4e0633463571377ad4badc680b666771684e862d
Gecko: 535ec28fb36f
Version: 37.0 (2.2) 
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0
Flags: needinfo?(npark)
I am still seeing the issue in 2.2 in master FxOS branches, and using Loop mobile master branch.

flame device with latest 2.2 FxOS version
BuildID:20150320062304
Platform version:37.0
Firmware Version: v18D-1
Gecko-c768752
Gaia-c8136ef

Flame device with latest master FxOS version
BuildID:20150320081235
Platform version:39a.01
Firmware Version: v18D-1
Gecko-a525293
Gaia-3e39898

Note: It seems that there has been a change in the FxOS master branch that makes the grunt fails (it works for 2.2 and previous versions). As soon as this PR https://github.com/mozilla-b2g/firefoxos-loop-client/pull/568 lands (I hope it will be today) you can use grunt in master as usual.
Otherwise WebIDE can be used in the meantime, and it works for all the FxOS versions.
(In reply to Yeojin Chung [:YeojinC] from comment #27)
> I was unable to reproduce this issue on the latest Flame Master and 2.2. I'm
> not sure if I'm on the same version as others. On Hello, it says "Unknown"
> under version in the Settings page. On the Firefox browser (for installing
> the app), it says "1.1.1d for the version.
> 
> No-Jun, were you able to reproduce this issue at all on the latest version
> of Hello?
> 
> Environmental Variables:
> Device: Flame 3.0
> Build ID: 20150319060239
> Gaia: c39e15f631de80c69467fda0d4ea0bcda9e194ca
> Gecko: cbd0efcd976c
> Version: 39.0a1 (3.0)
> Firmware Version: v18D-1
> User Agent: Mozilla/5.0 (Mobile; rv:39.0) Gecko/39.0 Firefox/39.0
> 
> Environmental Variables:
> Device: Flame 2.2
> BuildID: 20150319100137
> Gaia: 4e0633463571377ad4badc680b666771684e862d
> Gecko: 535ec28fb36f
> Version: 37.0 (2.2) 
> Firmware Version: v18D-1
> User Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0

Yes I can reproduce the issue, and I think in the original str, it left out a step.  In my case, if you tap the video screen right below the message "You are the only one in the room" it starts to flicker right away.  It only works if you select the front camera too.
Flags: needinfo?(npark)
It is quite difficult to repro the issue in master, so I think we only need to use the 2.2 branch, according to sotaro.
(In reply to No-Jun Park [:njpark] from comment #30)
> It is quite difficult to repro the issue in master, so I think we only need
> to use the 2.2 branch, according to sotaro.

Thanks, No-Jun! I was able to reproduce the issue.

=============================================================
Mozilla-inbound Regression Window:

Last Working Environmental Variables:
Device: Flame 2.2
BuildID: 20141216070347
Gaia: af3d2f89f391c92667e04676fc0ac971e6021bb7
Gecko: 47fdf6370008
Version: 37.0a1 (2.2) 
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0

First Broken Environmental Variables:
Device: Flame 2.2
BuildID: 20141216071247
Gaia: af3d2f89f391c92667e04676fc0ac971e6021bb7
Gecko: 473ecad73b44
Version: 37.0a1 (2.2) 
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0

Last Working Gaia First Broken Gecko: Issue DOES reproduce 
Gaia: af3d2f89f391c92667e04676fc0ac971e6021bb7
Gecko: 473ecad73b44

First Broken Gaia Last Working Gecko: Issue does NOT reproduce
Gaia: af3d2f89f391c92667e04676fc0ac971e6021bb7
Gecko: 47fdf6370008

http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=47fdf6370008&tochange=473ecad73b44

caused by bug 1043558
QA Whiteboard: [MGSEI-Triage+] → [QAnalyst-Triage?][MGSEI-Triage+]
Flags: needinfo?(ktucker)
Keywords: regressionwindow-wanted
QA Contact: ychung
Sotaro, can you take a look at this please? This looks to have been caused by the work done on bug 1043558
Blocks: 1043558
QA Whiteboard: [QAnalyst-Triage?][MGSEI-Triage+] → [QAnalyst-Triage+][MGSEI-Triage+]
Flags: needinfo?(ktucker) → needinfo?(sotaro.ikeda.g)
(Assignee)

Comment 33

3 years ago
This bug is triggered by bug 1043558. But actual regression bug seems Bug 1077301.
Flags: needinfo?(sotaro.ikeda.g)
See Also: → bug 1077301
(Assignee)

Comment 34

3 years ago
When the problem happens, there are 2 ImageHost/ImageClient pairs. One ImageHost is connected to ImageLayerComposite, the other ImageHost is not connected to ImageLayerComposite. ImageHost::UseTextureHost() call to unbounded ImageHost make the bound GrallocTextureHostOGL to unbound state.

FYI: related diagram
https://github.com/sotaroikeda/firefox-diagrams/blob/master/gfx/gfx_ImageBridge_FirefoxOS_2_1.pdf?raw=true
(Assignee)

Comment 35

3 years ago
Before bug 1043558, it does not cause the problem because shmem is not directly bounded to OpenGL texture.
(Assignee)

Comment 36

3 years ago
Created attachment 8581750 [details] [diff] [review]
patch - Call SetCompositor() only when it is valid

The patch fix the problem on v2.2 flame.
(Assignee)

Updated

3 years ago
Component: Gaia::Loop → Graphics: Layers
Product: Firefox OS → Core
(Assignee)

Updated

3 years ago
Attachment #8581750 - Flags: review?(nical.bugzilla)
Comment on attachment 8581750 [details] [diff] [review]
patch - Call SetCompositor() only when it is valid

Review of attachment 8581750 [details] [diff] [review]:
-----------------------------------------------------------------

Looks, good. I am curious, though, as to why we have a ImageHost that is not attached to a layer?
Attachment #8581750 - Flags: review?(nical.bugzilla) → review+
(Assignee)

Comment 39

3 years ago
(In reply to Nicolas Silva [:nical] from comment #38)
> 
> Looks, good. I am curious, though, as to why we have a ImageHost that is not
> attached to a layer?

I am not sure. I am going to check it.
(Assignee)

Comment 41

3 years ago
(In reply to Sotaro Ikeda [:sotaro] from comment #39)
> (In reply to Nicolas Silva [:nical] from comment #38)
> > 
> > Looks, good. I am curious, though, as to why we have a ImageHost that is not
> > attached to a layer?
> 
> I am not sure. I am going to check it.

It seems like the following.

ImageContainer creates ImageClient if ImageBridge exist. It does not depend on ImageLayer. Therefore, if camera preview is rendered to 2 video elements and one element is hidden. The hidden video element does not create ImageLayer, but create ImageClient/ImageHost.
It makes sense, thank you.
https://hg.mozilla.org/mozilla-central/rev/331ed8230be2
Status: NEW → RESOLVED
Last Resolved: 3 years ago
status-firefox39: --- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla39
I am not reproducing the issue anymore in latest FxOS master version, thanks a lot!

Environmental Variables:
Device: Flame Master
Build ID: 20150325071251
Gaia: 3970bcf
Gecko: a2b428e
Platform Version: 39.0a1 (Master)
Firmware Version: v18D
status-b2g-master: affected → fixed
Tested this on 2.2, and it seems to work well there with no side effects seen.  Can we put an uplift request to 2.2?
(Assignee)

Comment 46

3 years ago
Comment on attachment 8581750 [details] [diff] [review]
patch - Call SetCompositor() only when it is valid

NOTE: Please see https://wiki.mozilla.org/Release_Management/B2G_Landing to better understand the B2G approval process and landings.

[Approval Request Comment]
Bug caused by (feature/regressing bug #): bug 1043558 triggers the bug.
                                     actual regression is by Bug 1077301.
User impact if declined: user could see camera preview flickering.
Testing completed: locally tested and qa tested.
Risk to taking this patch (and alternatives if risky): low risk.
String or UUID changes made by this patch: none
Attachment #8581750 - Flags: approval-mozilla-b2g37?

Updated

3 years ago
Attachment #8581750 - Flags: approval-mozilla-b2g37? → approval-mozilla-b2g37+
This bug has been successfully verified on latest Nightly Flame v2.2&3.0 by these steps in Comment After prompt "You are the only one in the room" displays,the screen will not flicker.
See attachment: verified_v2.2&3.0.mp4
Reproduce rate: 0/5

Device: Flame 2.2 build(Pass)
Build ID               20150326002504
Gaia Revision          e59ac067a1d22b7a72cbebc892ec652723f2a557
Gaia Date              2015-03-26 00:02:53
Gecko Revision         https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/rev/04b4b9d1faae
Gecko Version          37.0
Device Name            flame
Firmware(Release)      4.4.2
Firmware(Incremental)  eng.cltbld.20150326.042521
Firmware Date          Thu Mar 26 04:25:30 EDT 2015
Bootloader             L1TC000118D0

Device: Flame 3.0 build(Pass)
Build ID               20150326160206
Gaia Revision          525c341254e08f07f90da57a4d1cd5971a3cc668
Gaia Date              2015-03-26 16:34:16
Gecko Revision         https://hg.mozilla.org/mozilla-central/rev/59554288b4eb
Gecko Version          39.0a1
Device Name            flame
Firmware(Release)      4.4.2
Firmware(Incremental)  eng.cltbld.20150326.193247
Firmware Date          Thu Mar 26 19:32:58 EDT 2015
Bootloader             L1TC000118D0
status-b2g-v2.2: fixed → verified
status-b2g-master: fixed → verified
Created attachment 8584287 [details]
verified_v2.2&3.0.mp4
You need to log in before you can comment on or make changes to this bug.