ASSERTION: Unexpected layers id in SetTargetAPZC; dropping message...: 'Error', file ../../../gecko/layout/ipc/RenderFrameParent.cpp, line 558

RESOLVED FIXED in Firefox 38, Firefox OS v2.2

Status

()

RESOLVED FIXED
4 years ago
4 years ago

People

(Reporter: kats, Assigned: kats)

Tracking

unspecified
mozilla38
All
Gonk (Firefox OS)
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox36 wontfix, firefox37 wontfix, firefox38 fixed, b2g-v2.2 fixed, b2g-master fixed)

Details

Attachments

(1 attachment)

Created attachment 8560038 [details] [diff] [review]
Patch

STR:
- Go to the video app in B2G and open a video.
- Tap on the screen so that the top bar (with back/menu/title) and the bottom control areas appear.
- Tap at the very top of the screen in the middle, above the title.

In logcat, I see these warnings spit out:

I/Gecko   (27613): [Parent 27613] ###!!! ASSERTION: Unexpected layers id in SetTargetAPZC; dropping message...: 'Error', file ../../../gecko/layout/ipc/RenderFrameParent.cpp, line 558
I/Gecko   (27613): [Parent 27613] ###!!! ASSERTION: Unexpected layers id in ContentReceivedInputBlock; dropping message...: 'Error', file ../../../gecko/layout/ipc/RenderFrameParent.cpp, line 541

Botond and I discussed this on IRC the other day in theory - it's a result of the APZ's hit-test detecting a parent-process hit, but the event actually falling through and going to the child process. The guid that is sent to the child process along with the touch event contains the parent process layers id, and so when the child process sends back SetTargetAPZC and ContentReceivedInputBlock notifications, they are dropped on the assumption that they are forged or bogus.

However in this case they are *not* forged or bogus, but we need to respect the main thread hit-test and send a corrected layers id to the child. The patch does this in the way that we discussed, by changing the guid we send to the child to reflect the best knowledge we have about the real target (i.e. the correct layers id, and nothing else).

I verified that this patch fixes the appearance of the above-mentioned assertion with the STR provided.
Attachment #8560038 - Flags: review?(botond)
Comment on attachment 8560038 [details] [diff] [review]
Patch

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

::: dom/ipc/TabParent.cpp
@@ +2397,5 @@
>      if (aOutTargetGuid) {
>        *aOutTargetGuid = InputAPZContext::GetTargetLayerGuid();
> +
> +      // There may be cases where the APZ hit-testing code came to a different
> +      // conclusion that the main-thread hit-testing code as to where the event

s/that/than
Attachment #8560038 - Flags: review?(botond) → review+
https://hg.mozilla.org/mozilla-central/rev/7d211cebe7fc
Status: NEW → RESOLVED
Last Resolved: 4 years ago
status-firefox38: --- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla38
Comment on attachment 8560038 [details] [diff] [review]
Patch

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 #): various changes related to parent-process APZ (bug 950934)
User impact if declined: warning in logcat, and in some rare cases touch input will not be handled properly (e.g. user will be able to scroll when not supposed to)
Testing completed: locally
Risk to taking this patch (and alternatives if risky): low risk
String or UUID changes made by this patch: none
Attachment #8560038 - Flags: approval-mozilla-b2g37?

Updated

4 years ago
Attachment #8560038 - Flags: approval-mozilla-b2g37? → approval-mozilla-b2g37+
https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/rev/edb1b92b52c8
Assignee: nobody → bugmail.mozilla
status-b2g-v2.2: --- → fixed
status-b2g-master: --- → fixed
status-firefox36: --- → wontfix
status-firefox37: --- → wontfix
You need to log in before you can comment on or make changes to this bug.