[Window Management][Homescreen] If the user taps home while opening task manager, the homescreen will appear blank

VERIFIED FIXED in Firefox OS v2.2

Status

VERIFIED FIXED
4 years ago
4 years ago

People

(Reporter: dharris, Assigned: mancas)

Tracking

({regression})

unspecified
2.2 S5 (6feb)
ARM
Gonk (Firefox OS)
regression

Firefox Tracking Flags

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

Details

(Whiteboard: [systemsfe][2.2-Daily-Testing], URL)

Attachments

(5 attachments)

Created attachment 8545346 [details]
No Icons Homescreen Logcat

Description:
If the user opens task manager, and while its opening double taps on the home button, the homescreen will appear blank. The user can still interact with any buttons that are active on the phone, but cannot view any of the buttons. This can be recovered by going back into card view, unless the phone is locked first


Repro Steps:
1) Update a Flame to 20150107010216
2) Open any app
3) Long press home button
4) As soon as the task manager starts to open, double tap home button


Actual:
Homescreen appears blank


Expected:
User is taken to the top of the homescreen without issue

Environmental Variables:
Device: Flame 2.2 (319mb)(Kitkat)(Full Flash)
Build ID: 20150107010216
Gaia: 69ac77cfa938fae2763ac426a80ca6e5feb6ad25
Gecko: 33781a3a5201
Gonk: a814b2e2dfdda7140cb3a357617dc4fbb1435e76
Version: 37.0a1 (2.2)
Firmware Version: v18D
User Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0

Notes:This bug appears to be a timing issue.

Repro frequency: 10/10 100%
See attached: Logcat, Video - https://www.youtube.com/watch?v=K1yfxG_384k&edit=vd
This issue does NOT reproduce on Flame 2.1

The user is brought back to the homescreen without issue.

Device: Flame 2.1 (319mb)(Kitkat)(Full Flash)
BuildID: 20150107001244
Gaia: b04a8cb7b2482e0a44e6702b48c42283a00b5b1e
Gecko: 99cea2c818f6
Gonk: a814b2e2dfdda7140cb3a357617dc4fbb1435e76
Version: 34.0 (2.1)
Firmware: V18D
User Agent: Mozilla/5.0 (Mobile; rv:34.0) Gecko/34.0 Firefox/34.0
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(pbylenga)
severe functional issue.

Requesting a window.
blocking-b2g: --- → 2.2?
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(pbylenga)
Keywords: regressionwindow-wanted
QA Contact: pcheng
Whiteboard: [2.2-Daily-Testing] → [systemsfe][2.2-Daily-Testing]
A quick idea to fix this issue is ignore home button event in appWindowManager when taskManager is transitioning. (It seems strange for now but if we move task manager into appWindowManager as sub module later then it makes more sense.)
b2g-inbound regression window:

Last Working Environmental Variables:
Device: Flame
BuildID: 20140910055313
Gaia: 2f71bd60ff9e50c9821ef96d6a67fbd51f721f2a
Gecko: 15ae5d04c3de
Version: 35.0a1 (2.2 Master)
Firmware: V188-1
User Agent: Mozilla/5.0 (Mobile; rv:35.0) Gecko/35.0 Firefox/35.0

First Broken Environmental Variables:
Device: Flame
BuildID: 20140910061313
Gaia: b3698e7e93b5945b5aa5f857dd01932894f57a85
Gecko: b80b5054f126
Version: 35.0a1 (2.2 Master)
Firmware: V188-1
User Agent: Mozilla/5.0 (Mobile; rv:35.0) Gecko/35.0 Firefox/35.0

First Broken Gaia & Last Working Gecko - issue DOES repro
Gaia: b3698e7e93b5945b5aa5f857dd01932894f57a85
Gecko: 15ae5d04c3de

First Broken Gecko & Last Working Gaia - issue does NOT repro
Gaia: 2f71bd60ff9e50c9821ef96d6a67fbd51f721f2a
Gecko: b80b5054f126

Gaia pushlog:
https://github.com/mozilla-b2g/gaia/compare/2f71bd60ff9e50c9821ef96d6a67fbd51f721f2a...b3698e7e93b5945b5aa5f857dd01932894f57a85

Caused by Bug 1061324.
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(ktucker)
Keywords: regressionwindow-wanted
Looks like this was caused by the uplifts for bug 1061324. Etienne or Vivien, can you please take a look at this issue?
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(ktucker)
Flags: needinfo?(etienne)
Flags: needinfo?(21)
Broken feature.
blocking-b2g: 2.2? → 2.2+
The bug title and steps disagree - is this triggered when long-tapping home button while an app opens, or tapping home while the task manager is transitioning to show. I'm not able to reproduce either on my Flame/master
Flags: needinfo?(dharris)

Updated

4 years ago
Flags: needinfo?(nhirata.bugzilla)
Ah I just got it to reproduce. Yeah it looks like overlapping events - we're still getting into the showing task manager state while simultaneously hiding it and opening the homescreen. Alive's suggestion from Comment #3 looks worth a shot. Cancelling need-infos for etienne and vivien, I don't we need anything further from them. I can only reproduce this very sporadically - 1/10 at best, if there are better STR that would be a big help
Flags: needinfo?(etienne)
Flags: needinfo?(21)
It seems that you were able to see this issue per comment 8. Clearing my need info for now. If more information is needed, NI me again.
Flags: needinfo?(dharris)
Created attachment 8547879 [details]
task_manager_test_repo_bug.js

js-marionette test case that can reproduce the issue;  run the test twice in a row )
Flags: needinfo?(nhirata.bugzilla)
Turns out that even the automation has a low rate of repro.  I think if we remove some of the waits, we might get closer to hitting the bug more frequently.... this would mean to modify some of the other supporting files for the automation...
(Assignee)

Updated

4 years ago
Assignee: nobody → b.mcb
(Assignee)

Comment 13

4 years ago
Created attachment 8551147 [details] [review]
Proposed patch

Alive, I'm not sure if the TaskManager has already an event to notice the system that the card view is in a transition state.

Besides, I have a doubt here. This approach, using |transitionend| event, waits until the transition is finished, then, the user can use the home button. However, I notice that this happens when all the transitions ends, which means that the user has to wait until that moment which, in my opinion is not good for the user experience. So, please tell me if we can reach our goal but using another approach.

Thanks!
Attachment #8551147 - Flags: review?(alive)
Comment on attachment 8551147 [details] [review]
Proposed patch

LGTM but Unit test needed. Also I don't think we need to maintain taskManager state in appWindowManager so using taskManager.isTransitioning is not bad, but better if use Service.query('TaskManager.isTransitioning'), see service.js for more info.

I won't worry about user experience because holdhome then quick press home is not a normal user behavior to me. A better way might be "catch" the home event during the task manager is transitioning but implement this might take too much work so let's just ignore now.

Flag sam to take a look as well.
Attachment #8551147 - Flags: review?(sfoster)
Attachment #8551147 - Flags: review?(alive)
Attachment #8551147 - Flags: feedback+
Comment on attachment 8551147 [details] [review]
Proposed patch

Added a note in the PR about the listener removal, cancelling r? for now. Are we sure transitionend is the right moment? It seems to me that in-between cardviewbeforeshow and cardviewshown we are in an indeterminate state and that may be where the issue lies, not so much the animation itself?
Flags: needinfo?(alive)
Attachment #8551147 - Flags: review?(sfoster)
(In reply to Sam Foster [:sfoster] from comment #15)
> Comment on attachment 8551147 [details] [review]
> Proposed patch
> 
> Added a note in the PR about the listener removal, cancelling r? for now.
> Are we sure transitionend is the right moment? It seems to me that
> in-between cardviewbeforeshow and cardviewshown we are in an indeterminate
> state and that may be where the issue lies, not so much the animation itself?

I don't really look into what happens between cardviewbeforeshow and cardviewshown. But if you think transition is not enough, raise your hand.
Flags: needinfo?(alive)
(Assignee)

Comment 17

4 years ago
After a deep research, I've noticed that the issue occurs when the card view is inactive, and the current app is closed. This cause that the screen element has a wrong class, that hides all the content in the homescreen.

This is the explanation:

When the card view is opened, and the user press home button, the designed behaviour is that the last app is brought to the foreground. Pressing again home button, the app is closed and the homescreen appears. In that moment, the |appclosed| event is caught by the taskmanager and then is handled in [1] which set the |cards-view| class, to the screen element, causing the issue. As you can see, this is only reproducible when you perform the steps quickly because the normal behaviour when the card view is opened is that the current app sends the |app closed| event which will be handle in [1] and then the handler is removed.

Please take a look at the new patch and let me know what you think about this new approach

Thanks! =)

[1] https://github.com/mozilla-b2g/gaia/blob/master/apps/system/js/task_manager.js#L162-L165
Flags: needinfo?(alive)
(Assignee)

Updated

4 years ago
Attachment #8551147 - Flags: review?(sfoster)
Nice catch! I think Sam will review this properly.
Again good work!
Flags: needinfo?(alive)
(In reply to Alive Kuo [:alive][NEEDINFO!] from comment #18)
> Nice catch! I think Sam will review this properly.
> Again good work!

Yes, thanks for the deep dive and getting to the bottom of this. I am looking at the patch. Some parts of task_manager.js are relatively new to me and I'm trying to understand the flow. I'll do a detailed review but at first glance it looks like we may still have a race condition from that setTimeout in exitToApp that calls hide()?

More soon.
Comment on attachment 8551147 [details] [review]
Proposed patch

Patch looks good. A couple of notes on the PR. I think the unit test isn't adding much value - its too contrived. I'm also trying to get a failing marionette test that we can demonstrate the fix on but I've got nothing solid yet. I'll attach the WIP. If it does what we expect and passes, that's a win. Would be better if it failed without the patch though! I've also been trying to reproduce again on device with gaia master (without the patch) to verify and am unable(!) I think we should land regardless as the patch fixes a known logic error.
Attachment #8551147 - Flags: review?(sfoster) → review+
Created attachment 8552955 [details]
marionette test: task_manager_bug_1118854.js

Doesn't repro the bug for me currently. The timing between the 'home' events is tricksy but too little and the event is ignored and its times out having opened the app. Or it opens the app then opens the homescreen as expected. 

I guess its useful for catching regressions, but I can't repro manually on device either so at least its consistent :/
:mancas can you address the review comments and land this (or leave checkin-needed on it) If you can make a failing test that repros the issue and passes with your patch that would be great. If the bug no longer repros lets put qawanted on it and figure out what fixed it.
Flags: needinfo?(b.mcb)
(Assignee)

Comment 23

4 years ago
Hey Sam, I've been trying to make the test but I can't reproduce the issue. As you said it's really difficult to reproduce it but we should land the patch in order to solve the logic issue.

Thanks
Flags: needinfo?(b.mcb)
Keywords: checkin-needed
Master: https://github.com/mozilla-b2g/gaia/commit/eaaab511cc231ce39df95a521498e12c14d21041
Status: NEW → RESOLVED
Last Resolved: 4 years ago
status-b2g-master: --- → fixed
Keywords: checkin-needed
Resolution: --- → FIXED
Target Milestone: --- → 2.2 S5 (6feb)
Please request Gaia v2.2 approval on this when you get a chance.
Flags: needinfo?(b.mcb)
Comment on attachment 8551147 [details] [review]
Proposed patch

[Approval Request Comment]
[Bug caused by] (feature/regressing bug #): Task Manager
[User impact] if declined: Its possible to end up on an inactive (empty) homescreen
[Testing completed]: On device, Gaia-Trry
[Risk to taking this patch] (and alternatives if risky): Low risk, the patch closes up an infrequent race condition
[String changes made]: None
Attachment #8551147 - Flags: approval-gaia-v2.2?

Updated

4 years ago
Attachment #8551147 - Flags: approval-gaia-v2.2? → approval-gaia-v2.2+
v2.2: https://github.com/mozilla-b2g/gaia/commit/c287765ae8be3d86271db969034083cecdf95e74
status-b2g-v2.2: affected → fixed
Flags: needinfo?(b.mcb)
This issue still reproduces on Flame 2.2 and Master.

Result: A blank screen appears when fast double-tapping home button during transition to task manager.

Device: Flame 2.2 (319mb, full flash)
Build ID: 20150202002507
Gaia: d6141fa3208f224393269e17c39d1fe53b7e6a05
Gecko: be206fa2fb60
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 37.0a2 (2.2)
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0

Device: Flame Master (319mb, full flash)
Build ID: 20150202010229
Gaia: 740c7c2330d08eb9298597e0455f53d4619bbc1a
Gecko: 940118b1adcd
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 38.0a1 (3.0)
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:38.0) Gecko/38.0 Firefox/38.0
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage?][failed-verification]
Flags: needinfo?(ktucker)
(In reply to Yeojin Chung [:YeojinC] from comment #28)
> This issue still reproduces on Flame 2.2 and Master.

Would it be possible to attach your STR and a video? I'm testing with a Flame @ 319MB and I'm unable to reproduce this. I *do* see the homescreen background briefly before its grid gets populated with icons, but that is expected.
Flags: needinfo?(ychung)
My repro step was same as comment 0. The key point to reproduce this bug is double-tapping before going in to the task manager. 

STR:
1) Open any app.
2) Long-press home button to enter task manager.
3) Before the transition starts, double-tap the home button.

And here's my video: http://youtu.be/WCDXfMGKUdA

Hope this is helpful. :)
Flags: needinfo?(ychung)
QA Whiteboard: [QAnalyst-Triage?][failed-verification] → [QAnalyst-Triage+][failed-verification]
Flags: needinfo?(ktucker)
Yeojin, is it able to be reproduced with current build now?
Flags: needinfo?(ychung)
Yes, I was still able to reproduce this issue on today's nightly Flame Master and 2.2.

Device: Flame Master (KK, 319mb, full flash)
Build ID: 20150226010233
Gaia: 7894b929f1b0394f3c997f72a6482bc7813e758d
Gecko: dd6353d61993
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 39.0a1 (3.0)
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:39.0) Gecko/39.0 Firefox/39.

Device: Flame 2.2 (KK, 319mb, full flash)
Build ID: 20150226002503
Gaia: bf24aa57fa7760260ab05d1f53242c8d8ae59e83
Gecko: 363123044e61
Gonk: e7c90613521145db090dd24147afd5ceb5703190
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?(ychung)
According to comment 32, reopen this bug.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Created attachment 8574080 [details] [review]
[gaia] etiennesegonzac:bug-1118854 > mozilla-b2g:master
Comment on attachment 8574080 [details] [review]
[gaia] etiennesegonzac:bug-1118854 > mozilla-b2g:master

I was able to reproduce the issue, here's a follow up patch.
Attachment #8574080 - Flags: review?(sfoster)
Comment on attachment 8574080 [details] [review]
[gaia] etiennesegonzac:bug-1118854 > mozilla-b2g:master

Patch looks fine, but somewhere recently (today?) we lost the transition to show the task manager, which means it shows instantly and is impossible to reproduce the bug it fixes.
Attachment #8574080 - Flags: review?(sfoster) → review+
> Patch looks fine, but somewhere recently (today?) we lost the transition to
> show the task manager, which means it shows instantly and is impossible to
> reproduce the bug it fixes.

..from the homescreen. Works fine from another app.
Keywords: checkin-needed

Updated

4 years ago
Keywords: checkin-needed
Autolander could not locate a review from a user within the suggested reviewer list. Either the patch author or the reviewer should be in the suggested reviewer list.
http://docs.taskcluster.net/tools/task-graph-inspector/#UKhNgU-6TwWbSwoNr2HGBQ

The pull request failed to pass integration tests. It could not be landed, please try again.
Looks like I'm confusing autolander. Anyway:
- green try https://treeherder.mozilla.org/#/jobs?repo=gaia-try&revision=808e0a307560
- landed on master: https://github.com/mozilla-b2g/gaia/commit/fbb57e3a25d561983c58a8b26ccaaaf94c869829
Status: REOPENED → RESOLVED
Last Resolved: 4 years ago4 years ago
Resolution: --- → FIXED
Please also uplift to v2.2, thanks.
Comment on attachment 8574080 [details] [review]
[gaia] etiennesegonzac:bug-1118854 > mozilla-b2g:master

[Approval Request Comment]
[Bug caused by] (feature/regressing bug #): Task Manager (follow up to this bug - bug 1118854)
[User impact] if declined: Its possible to end up on an inactive (empty) homescreen 
[Testing completed]: On device, Gaia-Try
[Risk to taking this patch] (and alternatives if risky): Low risk, the patch closes up an infrequent race condition
[String changes made]: None
Attachment #8574080 - Flags: approval-gaia-v2.2?

Updated

4 years ago
Attachment #8574080 - Flags: approval-gaia-v2.2? → approval-gaia-v2.2+
Keywords: verifyme
This issue is verified fixed in the latest Nightly Flame 3.0 build.  

Actual Results: The homescreen correctly has icons.

Environmental Variables:
Device: Flame 3.0 KK (319 MB) (Full Flash)
BuildID: 20150310010227
Gaia: 2fb09da0cb9cefad9c6e40f57533fafda6d12557
Gecko: 6686aacf006f
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 39.0a1 (3.0) 
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:39.0) Gecko/39.0 Firefox/39.0

On 2.2 this issue still occurs, but I believe that the fixed flag was from the original fix and not this new updated fix.

Environmental Variables:
Device: Flame 2.2 KK (319 MB) (Full Flash)
BuildID: 20150310002536
Gaia: 166491b92278dc9e648f8d49ab02d9ca00d74421
Gecko: 1cda026f8996
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 37.0 (2.2) 
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0
Status: RESOLVED → VERIFIED
QA Whiteboard: [QAnalyst-Triage+][failed-verification] → [QAnalyst-Triage?][failed-verification]
status-b2g-master: fixed → verified
Flags: needinfo?(ktucker)
QA Whiteboard: [QAnalyst-Triage?][failed-verification] → [QAnalyst-Triage+][failed-verification]
Flags: needinfo?(ktucker) → needinfo?(jmercado)
v2.2: https://github.com/mozilla-b2g/gaia/commit/a0ebe8118aa5200384f3ffca76825a01d2b6c1fb

For future reference, approvals are going to go unnoticed if the status is already set to fixed. I only stumbled upon this one by accident while investigating a conflict on another uplift.
Sorry, my fault. I did not notice that flag.
Jayme, could you please re-verify 2.2? Thanks!
This issue is verified fixed on the latest Nightly Flame KK 2.2 build.

Actual Results: The homescreen will correctly show when following the steps.

Environmental Variables:
Device: Flame 2.2 KK (319MB) (Full Flash)
BuildID: 20150401002624
Gaia: 8b3086ad3963f1707e2bee9094baccafffe161c4
Gecko: 20b67213a047
Gonk: ebad7da532429a6f5efadc00bf6ad8a41288a429
Version: 37.0 (2.2) 
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0
QA Whiteboard: [QAnalyst-Triage+][failed-verification] → [QAnalyst-Triage?]
status-b2g-v2.2: fixed → verified
Flags: needinfo?(jmercado) → needinfo?(ktucker)
Keywords: verifyme
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(ktucker)
You need to log in before you can comment on or make changes to this bug.